From c2e592334828a90b4b24ac117dd4b84553a9d132 Mon Sep 17 00:00:00 2001 From: Srix Date: Sun, 20 Sep 2026 14:40:37 +0530 Subject: [PATCH 1/4] =?UTF-8?q?Fix=20=E0=AE=9A=E0=AF=80=E0=AE=B0=E0=AF=8D.?= =?UTF-8?q?g4:=20positional=20=E0=AE=90,=20=E0=AE=94=20typo,=20=E0=AE=95?= =?UTF-8?q?=E0=AE=BE=E0=AE=AF=E0=AF=8D-before-=E0=AE=95=E0=AE=A9=E0=AE=BF?= =?UTF-8?q?=20ordering,=20EOF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Grammar (pytamil/தமிழ்/resources/சீர்.g4, rewritten with a header that states the ambiguity policy): - ஐ with a consonant (கை மை லை ...) moves out of நெடில் into a new ஐகாரக்குறுக்கம் rule. A foot-initial நிரை (முதல்நிரை) must start with a true குறில்; a later நிரை may start with a shortened ஐ. So தண்/மையும் = நேர் நிரை = கூவிளம் while கை/யினை stays கூவிளம் and கை/யும் தேமா. Word-initial bare ஐ remains நெடில். Decision: positional rule (specs/2026-09-20-revival-and-roadmap.md, Phase 1a). - 'ஒள' (two code points) -> 'ஔ' (U+0B94). ஔவை could not be lexed; ஒளியும் scanned as தேமா, now புளிமா. - மூவசை/நாலசை alternatives reordered so every காய் precedes any கனி: வழிபடுக was புளிமாங்கனி, now கருவிளங்காய். - Start rule ends with EOF; I and NL are real lexer rules shared with the importing grammars. வெண்பா.g4: drop the local copies of தேமா..கூவிளங்காய் that shadowed the import (the fix would not have applied to venba otherwise); மலர்/பிறப்பு use முதல்நிரை; NL instead of '\n'; EOF on the start rule; delete ~50 lines of commented-out duplicate token tables. ஆசிரியப்பா.g4: NL and EOF. Regenerated சீர், வெண்பா, ஆசிரியப்பா (codegen.sh, ANTLR 4.13.2). Tests: the two xfails (தண்மையும், இணைக்குறள் ஆசிரியப்பா) are removed and pass; new சீர் cases for தேமா, புளிமா, கூவிளம், கருவிளங்காய் covering each fix. pytest: 116 passed, 9 xfailed (all சொல்.g4 gaps). Co-Authored-By: Claude Fable 5.1 --- ...52\340\257\215\340\256\252\340\256\276.py" | 8 +- ...32\340\257\200\340\256\260\340\257\215.py" | 35 +- ...44\340\257\215\340\256\244\340\256\277.py" | 2 +- ...40\257\215\340\256\252\340\256\276.interp" | 52 +- ...40\257\215\340\256\252\340\256\276.tokens" | 496 ++- ...7\215\340\256\252\340\256\276Lexer.interp" | 50 +- ...0\257\215\340\256\252\340\256\276Lexer.py" | 905 ++--- ...7\215\340\256\252\340\256\276Lexer.tokens" | 496 ++- ...57\215\340\256\252\340\256\276Listener.py" | 36 +- ...\257\215\340\256\252\340\256\276Parser.py" | 1326 +++---- ...40\257\200\340\256\260\340\257\215.interp" | 50 +- ...40\257\200\340\256\260\340\257\215.tokens" | 460 +-- ...7\200\340\256\260\340\257\215Lexer.interp" | 47 +- ...0\257\200\340\256\260\340\257\215Lexer.py" | 842 ++--- ...7\200\340\256\260\340\257\215Lexer.tokens" | 460 +-- ...57\200\340\256\260\340\257\215Listener.py" | 36 +- ...\257\200\340\256\260\340\257\215Parser.py" | 1149 +++--- ...40\257\215\340\256\252\340\256\276.interp" | 68 +- ...40\257\215\340\256\252\340\256\276.tokens" | 496 ++- ...7\215\340\256\252\340\256\276Lexer.interp" | 50 +- ...0\257\215\340\256\252\340\256\276Lexer.py" | 905 ++--- ...7\215\340\256\252\340\256\276Lexer.tokens" | 496 ++- ...57\215\340\256\252\340\256\276Listener.py" | 180 +- ...\257\215\340\256\252\340\256\276Parser.py" | 3123 +++++++++-------- ...52\340\257\215\340\256\252\340\256\276.g4" | 10 +- ...32\340\257\200\340\256\260\340\257\215.g4" | 177 +- ...43\340\257\215\340\256\252\340\256\276.g4" | 68 +- specs/2026-09-20-revival-and-roadmap.md | 5 + 28 files changed, 6221 insertions(+), 5807 deletions(-) diff --git "a/pytamil/tests/test_\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.py" "b/pytamil/tests/test_\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.py" index 7c88781..255ba91 100644 --- "a/pytamil/tests/test_\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.py" +++ "b/pytamil/tests/test_\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.py" @@ -58,9 +58,7 @@ def test_நேரிசை_ஆசிரியப்பா(பத்தி): @pytest.mark.parametrize("பத்தி", \ [ - # Known failure: தண்மையும் / வெம்மையும் scan as தேமாங்காய் because சீர்.g4 treats - # word-medial ஐ as நெடில் (should be ஐகாரக்குறுக்கம் = குறில்). See specs/2026-09-20-revival-and-roadmap.md, Phase 1a. - pytest.param('''நீரின் தண்மையும் தீயின் வெம்மையும் + ('''நீரின் தண்மையும் தீயின் வெம்மையும் = தேமா கூவிளம் தேமா கூவிளம் சாரச் சார்ந்து = தேமா தேமா @@ -71,9 +69,7 @@ def test_நேரிசை_ஆசிரியப்பா(பத்தி): சாரச் சாரச் சார்ந்து = தேமா தேமா தேமா தீரத் தீரத் தீர்பொல் லாதே - = தேமா தேமா தேமா தேமா''', - marks=pytest.mark.xfail( - reason="ஐகாரக்குறுக்கம் scanned as நெடில் in சீர்.g4 (specs/2026-09-20-revival-and-roadmap.md, Phase 1a)", strict=True)), + = தேமா தேமா தேமா தேமா'''), ]) def test_இணைக்குறள்_ஆசிரியப்பா(பத்தி): diff --git "a/pytamil/tests/test_\340\256\232\340\257\200\340\256\260\340\257\215.py" "b/pytamil/tests/test_\340\256\232\340\257\200\340\256\260\340\257\215.py" index 61dc427..4c79f16 100644 --- "a/pytamil/tests/test_\340\256\232\340\257\200\340\256\260\340\257\215.py" +++ "b/pytamil/tests/test_\340\256\232\340\257\200\340\256\260\340\257\215.py" @@ -8,11 +8,9 @@ [ ("வானினும்"), ("நீரினும்"), - # Known failure: சீர்.g4 lists every ஐ syllable only as நெடில், so தண்/மையும் parses as - # நேர் நேர் நேர் = தேமாங்காய். Word-medial ஐ is ஐகாரக்குறுக்கம் and should scan குறில், - # giving நேர் நிரை = கூவிளம். Fix planned in specs/2026-09-20-revival-and-roadmap.md, Phase 1a. - pytest.param("தண்மையும்", marks=pytest.mark.xfail( - reason="ஐகாரக்குறுக்கம் scanned as நெடில் in சீர்.g4 (specs/2026-09-20-revival-and-roadmap.md, Phase 1a)", strict=True)), + ("தண்மையும்"), + ("வெம்மையும்"), + ("கையினை"), # foot-initial ஐ is நெடில்: கை/யினை, must not flip to புளிமா ]) def test_கூவிளம்(பதம்): புது_சீர்_வாய்பாடு = சீர்.சீர்_வாய்பாடு_கொடு(பதம்) @@ -29,3 +27,30 @@ def test_புளிமாங்காய்(பதம்): புது_சீர்_வாய்பாடு = சீர்.சீர்_வாய்பாடு_கொடு(பதம்) assert "புளிமாங்காய்" == புது_சீர்_வாய்பாடு + + +@pytest.mark.parametrize("பதம்", [ + ("கேண்மை"), + ("கையும்"), # foot-initial ஐ stays நெடில் + ("மையும்"), + ("ஔவை"), # ஔ (U+0B94) used to be unlexable ('ஒள' typo) +]) +def test_தேமா(பதம்): + assert "தேமா" == சீர்.சீர்_வாய்பாடு_கொடு(பதம்) + + +@pytest.mark.parametrize("பதம்", [ + ("தலைவன்"), + ("ஒளியும்"), # ஒளி/யும்; guards the ஔ typo regression + ("அகர"), +]) +def test_புளிமா(பதம்): + assert "புளிமா" == சீர்.சீர்_வாய்பாடு_கொடு(பதம்) + + +@pytest.mark.parametrize("பதம்", [ + ("வழிபடுக"), # காய் before கனி: வழி/படு/க, not புளிமாங்கனி + ("னடியவற்காச்"), +]) +def test_கருவிளங்காய்(பதம்): + assert "கருவிளங்காய்" == சீர்.சீர்_வாய்பாடு_கொடு(பதம்) diff --git "a/pytamil/tests/test_\340\256\252\340\256\276\340\256\225\340\257\201\340\256\252\340\256\237\340\257\201\340\256\244\340\257\215\340\256\244\340\256\277.py" "b/pytamil/tests/test_\340\256\252\340\256\276\340\256\225\340\257\201\340\256\252\340\256\237\340\257\201\340\256\244\340\257\215\340\256\244\340\256\277.py" index a869fff..88d5419 100644 --- "a/pytamil/tests/test_\340\256\252\340\256\276\340\256\225\340\257\201\340\256\252\340\256\237\340\257\201\340\256\244\340\257\215\340\256\244\340\256\277.py" +++ "b/pytamil/tests/test_\340\256\252\340\256\276\340\256\225\340\257\201\340\256\252\340\256\237\340\257\201\340\256\244\340\257\215\340\256\244\340\256\277.py" @@ -9,7 +9,7 @@ def test_சரியான_உள்ளீடு_பிழையில்லை பா = பாகுபடுத்தி.மரம்_கொடு(சீர்Lexer, சீர்Parser, 'சீர்', 'வானினும்') assert பா.பிழைகள் == [] assert பா.parser.ruleNames[பா.மரம்.getRuleIndex()] == 'சீர்' - assert பா.மரம்.getText() == 'வானினும்' + assert பா.மரம்.getText() == 'வானினும்' # start rule ends with EOF def test_தவறான_உள்ளீடு_பிழைகள்_சேகரிக்கப்படும்(capsys): diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.interp" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.interp" index 0cd78f0..cae6cf3 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.interp" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.interp" @@ -1,6 +1,5 @@ token literal names: null -'\n' 'க்' 'ச்' 'ட்' @@ -19,6 +18,25 @@ null 'வ்' 'ழ்' 'ள்' +'ஃ' +'கை' +'ஙை' +'சை' +'ஞை' +'டை' +'ணை' +'தை' +'நை' +'பை' +'மை' +'யை' +'ரை' +'லை' +'வை' +'ழை' +'ளை' +'றை' +'னை' 'அ' 'இ' 'உ' @@ -120,135 +138,117 @@ null 'ஏ' 'ஐ' 'ஓ' -'ஒள' +'ஔ' 'கா' 'கீ' 'கூ' 'கே' -'கை' 'கோ' 'கௌ' 'ஙா' 'ஙீ' 'ஙூ' 'ஙே' -'ஙை' 'ஙோ' 'ஙௌ' 'சா' 'சீ' 'சூ' 'சே' -'சை' 'சோ' 'சௌ' 'ஞா' 'ஞீ' 'ஞூ' 'ஞே' -'ஞை' 'ஞோ' 'ஞௌ' 'டா' 'டீ' 'டூ' 'டே' -'டை' 'டோ' 'டௌ' 'ணா' 'ணீ' 'ணூ' 'ணே' -'ணை' 'ணோ' 'ணௌ' 'தா' 'தீ' 'தூ' 'தே' -'தை' 'தோ' 'தௌ' 'நா' 'நீ' 'நூ' 'நே' -'நை' 'நோ' 'நௌ' 'பா' 'பீ' 'பூ' 'பே' -'பை' 'போ' 'பௌ' 'மா' 'மீ' 'மூ' 'மே' -'மை' 'மோ' 'மௌ' 'யா' 'யீ' 'யூ' 'யே' -'யை' 'யோ' 'யௌ' 'ரா' 'ரீ' 'ரூ' 'ரே' -'ரை' 'ரோ' 'ரௌ' 'லா' 'லீ' 'லூ' 'லே' -'லை' 'லோ' 'லௌ' 'வா' 'வீ' 'வூ' 'வே' -'வை' 'வோ' 'வௌ' 'ழா' 'ழீ' 'ழூ' 'ழே' -'ழை' 'ழோ' 'ழௌ' 'ளா' 'ளீ' 'ளூ' 'ளே' -'ளை' 'ளோ' 'ளௌ' 'றா' 'றீ' 'றூ' 'றே' -'றை' 'றோ' 'றௌ' 'னா' 'னீ' 'னூ' 'னே' -'னை' 'னோ' 'னௌ' -'ஃ' -' ' +null +null token symbolic names: null @@ -499,8 +499,8 @@ null null null null -null I +NL rule names: ஆசிரியப்பா @@ -550,12 +550,14 @@ rule names: கருவிளம் கூவிளம் நேர் +முதல்நிரை நிரை ஒற்று +ஆய்தம் +ஐகாரக்குறுக்கம் குறில் நெடில் -ஆய்தம் atn: -[4, 1, 249, 375, 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, 1, 0, 1, 0, 1, 0, 3, 0, 108, 8, 0, 1, 1, 4, 1, 111, 8, 1, 11, 1, 12, 1, 112, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 121, 8, 2, 11, 2, 12, 2, 122, 1, 2, 1, 2, 1, 3, 1, 3, 4, 3, 129, 8, 3, 11, 3, 12, 3, 130, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 155, 8, 6, 1, 7, 1, 7, 3, 7, 159, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 165, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 171, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 177, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 183, 8, 11, 1, 12, 1, 12, 3, 12, 187, 8, 12, 1, 13, 1, 13, 3, 13, 191, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 197, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 215, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 225, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 231, 8, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 322, 8, 46, 11, 46, 12, 46, 323, 3, 46, 326, 8, 46, 1, 46, 1, 46, 1, 46, 4, 46, 331, 8, 46, 11, 46, 12, 46, 332, 3, 46, 335, 8, 46, 3, 46, 337, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 349, 8, 47, 11, 47, 12, 47, 350, 3, 47, 353, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 359, 8, 47, 11, 47, 12, 47, 360, 3, 47, 363, 8, 47, 3, 47, 365, 8, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 0, 0, 52, 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, 0, 3, 1, 0, 2, 19, 1, 0, 20, 114, 1, 0, 115, 247, 386, 0, 107, 1, 0, 0, 0, 2, 110, 1, 0, 0, 0, 4, 117, 1, 0, 0, 0, 6, 126, 1, 0, 0, 0, 8, 134, 1, 0, 0, 0, 10, 139, 1, 0, 0, 0, 12, 146, 1, 0, 0, 0, 14, 158, 1, 0, 0, 0, 16, 164, 1, 0, 0, 0, 18, 170, 1, 0, 0, 0, 20, 176, 1, 0, 0, 0, 22, 182, 1, 0, 0, 0, 24, 186, 1, 0, 0, 0, 26, 190, 1, 0, 0, 0, 28, 196, 1, 0, 0, 0, 30, 214, 1, 0, 0, 0, 32, 224, 1, 0, 0, 0, 34, 230, 1, 0, 0, 0, 36, 232, 1, 0, 0, 0, 38, 235, 1, 0, 0, 0, 40, 238, 1, 0, 0, 0, 42, 241, 1, 0, 0, 0, 44, 244, 1, 0, 0, 0, 46, 247, 1, 0, 0, 0, 48, 250, 1, 0, 0, 0, 50, 253, 1, 0, 0, 0, 52, 256, 1, 0, 0, 0, 54, 259, 1, 0, 0, 0, 56, 262, 1, 0, 0, 0, 58, 265, 1, 0, 0, 0, 60, 268, 1, 0, 0, 0, 62, 271, 1, 0, 0, 0, 64, 274, 1, 0, 0, 0, 66, 277, 1, 0, 0, 0, 68, 280, 1, 0, 0, 0, 70, 283, 1, 0, 0, 0, 72, 286, 1, 0, 0, 0, 74, 289, 1, 0, 0, 0, 76, 292, 1, 0, 0, 0, 78, 295, 1, 0, 0, 0, 80, 298, 1, 0, 0, 0, 82, 301, 1, 0, 0, 0, 84, 304, 1, 0, 0, 0, 86, 307, 1, 0, 0, 0, 88, 310, 1, 0, 0, 0, 90, 313, 1, 0, 0, 0, 92, 336, 1, 0, 0, 0, 94, 364, 1, 0, 0, 0, 96, 366, 1, 0, 0, 0, 98, 368, 1, 0, 0, 0, 100, 370, 1, 0, 0, 0, 102, 372, 1, 0, 0, 0, 104, 108, 3, 2, 1, 0, 105, 108, 3, 4, 2, 0, 106, 108, 3, 6, 3, 0, 107, 104, 1, 0, 0, 0, 107, 105, 1, 0, 0, 0, 107, 106, 1, 0, 0, 0, 108, 1, 1, 0, 0, 0, 109, 111, 3, 12, 6, 0, 110, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 110, 1, 0, 0, 0, 112, 113, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 115, 3, 10, 5, 0, 115, 116, 3, 12, 6, 0, 116, 3, 1, 0, 0, 0, 117, 120, 3, 12, 6, 0, 118, 121, 3, 8, 4, 0, 119, 121, 3, 10, 5, 0, 120, 118, 1, 0, 0, 0, 120, 119, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 120, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 1, 0, 0, 0, 124, 125, 3, 12, 6, 0, 125, 5, 1, 0, 0, 0, 126, 128, 3, 12, 6, 0, 127, 129, 3, 12, 6, 0, 128, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 128, 1, 0, 0, 0, 130, 131, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 133, 3, 12, 6, 0, 133, 7, 1, 0, 0, 0, 134, 135, 3, 14, 7, 0, 135, 136, 5, 249, 0, 0, 136, 137, 3, 14, 7, 0, 137, 138, 5, 1, 0, 0, 138, 9, 1, 0, 0, 0, 139, 140, 3, 14, 7, 0, 140, 141, 5, 249, 0, 0, 141, 142, 3, 14, 7, 0, 142, 143, 5, 249, 0, 0, 143, 144, 3, 14, 7, 0, 144, 145, 5, 1, 0, 0, 145, 11, 1, 0, 0, 0, 146, 147, 3, 14, 7, 0, 147, 148, 5, 249, 0, 0, 148, 149, 3, 14, 7, 0, 149, 150, 5, 249, 0, 0, 150, 151, 3, 14, 7, 0, 151, 152, 5, 249, 0, 0, 152, 154, 3, 14, 7, 0, 153, 155, 5, 1, 0, 0, 154, 153, 1, 0, 0, 0, 154, 155, 1, 0, 0, 0, 155, 13, 1, 0, 0, 0, 156, 159, 3, 16, 8, 0, 157, 159, 3, 18, 9, 0, 158, 156, 1, 0, 0, 0, 158, 157, 1, 0, 0, 0, 159, 15, 1, 0, 0, 0, 160, 165, 3, 84, 42, 0, 161, 165, 3, 86, 43, 0, 162, 165, 3, 88, 44, 0, 163, 165, 3, 90, 45, 0, 164, 160, 1, 0, 0, 0, 164, 161, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 164, 163, 1, 0, 0, 0, 165, 17, 1, 0, 0, 0, 166, 171, 3, 68, 34, 0, 167, 171, 3, 72, 36, 0, 168, 171, 3, 76, 38, 0, 169, 171, 3, 80, 40, 0, 170, 166, 1, 0, 0, 0, 170, 167, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 169, 1, 0, 0, 0, 171, 19, 1, 0, 0, 0, 172, 177, 3, 70, 35, 0, 173, 177, 3, 74, 37, 0, 174, 177, 3, 78, 39, 0, 175, 177, 3, 82, 41, 0, 176, 172, 1, 0, 0, 0, 176, 173, 1, 0, 0, 0, 176, 174, 1, 0, 0, 0, 176, 175, 1, 0, 0, 0, 177, 21, 1, 0, 0, 0, 178, 183, 3, 84, 42, 0, 179, 183, 3, 86, 43, 0, 180, 183, 3, 88, 44, 0, 181, 183, 3, 90, 45, 0, 182, 178, 1, 0, 0, 0, 182, 179, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 182, 181, 1, 0, 0, 0, 183, 23, 1, 0, 0, 0, 184, 187, 3, 84, 42, 0, 185, 187, 3, 86, 43, 0, 186, 184, 1, 0, 0, 0, 186, 185, 1, 0, 0, 0, 187, 25, 1, 0, 0, 0, 188, 191, 3, 88, 44, 0, 189, 191, 3, 90, 45, 0, 190, 188, 1, 0, 0, 0, 190, 189, 1, 0, 0, 0, 191, 27, 1, 0, 0, 0, 192, 197, 3, 68, 34, 0, 193, 197, 3, 72, 36, 0, 194, 197, 3, 76, 38, 0, 195, 197, 3, 80, 40, 0, 196, 192, 1, 0, 0, 0, 196, 193, 1, 0, 0, 0, 196, 194, 1, 0, 0, 0, 196, 195, 1, 0, 0, 0, 197, 29, 1, 0, 0, 0, 198, 215, 3, 36, 18, 0, 199, 215, 3, 38, 19, 0, 200, 215, 3, 40, 20, 0, 201, 215, 3, 42, 21, 0, 202, 215, 3, 44, 22, 0, 203, 215, 3, 46, 23, 0, 204, 215, 3, 48, 24, 0, 205, 215, 3, 50, 25, 0, 206, 215, 3, 52, 26, 0, 207, 215, 3, 54, 27, 0, 208, 215, 3, 56, 28, 0, 209, 215, 3, 58, 29, 0, 210, 215, 3, 60, 30, 0, 211, 215, 3, 62, 31, 0, 212, 215, 3, 64, 32, 0, 213, 215, 3, 66, 33, 0, 214, 198, 1, 0, 0, 0, 214, 199, 1, 0, 0, 0, 214, 200, 1, 0, 0, 0, 214, 201, 1, 0, 0, 0, 214, 202, 1, 0, 0, 0, 214, 203, 1, 0, 0, 0, 214, 204, 1, 0, 0, 0, 214, 205, 1, 0, 0, 0, 214, 206, 1, 0, 0, 0, 214, 207, 1, 0, 0, 0, 214, 208, 1, 0, 0, 0, 214, 209, 1, 0, 0, 0, 214, 210, 1, 0, 0, 0, 214, 211, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 213, 1, 0, 0, 0, 215, 31, 1, 0, 0, 0, 216, 225, 3, 68, 34, 0, 217, 225, 3, 70, 35, 0, 218, 225, 3, 72, 36, 0, 219, 225, 3, 74, 37, 0, 220, 225, 3, 76, 38, 0, 221, 225, 3, 78, 39, 0, 222, 225, 3, 80, 40, 0, 223, 225, 3, 82, 41, 0, 224, 216, 1, 0, 0, 0, 224, 217, 1, 0, 0, 0, 224, 218, 1, 0, 0, 0, 224, 219, 1, 0, 0, 0, 224, 220, 1, 0, 0, 0, 224, 221, 1, 0, 0, 0, 224, 222, 1, 0, 0, 0, 224, 223, 1, 0, 0, 0, 225, 33, 1, 0, 0, 0, 226, 231, 3, 84, 42, 0, 227, 231, 3, 86, 43, 0, 228, 231, 3, 88, 44, 0, 229, 231, 3, 90, 45, 0, 230, 226, 1, 0, 0, 0, 230, 227, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 230, 229, 1, 0, 0, 0, 231, 35, 1, 0, 0, 0, 232, 233, 3, 68, 34, 0, 233, 234, 3, 92, 46, 0, 234, 37, 1, 0, 0, 0, 235, 236, 3, 68, 34, 0, 236, 237, 3, 94, 47, 0, 237, 39, 1, 0, 0, 0, 238, 239, 3, 70, 35, 0, 239, 240, 3, 92, 46, 0, 240, 41, 1, 0, 0, 0, 241, 242, 3, 70, 35, 0, 242, 243, 3, 94, 47, 0, 243, 43, 1, 0, 0, 0, 244, 245, 3, 72, 36, 0, 245, 246, 3, 92, 46, 0, 246, 45, 1, 0, 0, 0, 247, 248, 3, 72, 36, 0, 248, 249, 3, 94, 47, 0, 249, 47, 1, 0, 0, 0, 250, 251, 3, 74, 37, 0, 251, 252, 3, 92, 46, 0, 252, 49, 1, 0, 0, 0, 253, 254, 3, 74, 37, 0, 254, 255, 3, 94, 47, 0, 255, 51, 1, 0, 0, 0, 256, 257, 3, 76, 38, 0, 257, 258, 3, 92, 46, 0, 258, 53, 1, 0, 0, 0, 259, 260, 3, 76, 38, 0, 260, 261, 3, 94, 47, 0, 261, 55, 1, 0, 0, 0, 262, 263, 3, 78, 39, 0, 263, 264, 3, 92, 46, 0, 264, 57, 1, 0, 0, 0, 265, 266, 3, 78, 39, 0, 266, 267, 3, 94, 47, 0, 267, 59, 1, 0, 0, 0, 268, 269, 3, 80, 40, 0, 269, 270, 3, 92, 46, 0, 270, 61, 1, 0, 0, 0, 271, 272, 3, 80, 40, 0, 272, 273, 3, 94, 47, 0, 273, 63, 1, 0, 0, 0, 274, 275, 3, 82, 41, 0, 275, 276, 3, 92, 46, 0, 276, 65, 1, 0, 0, 0, 277, 278, 3, 82, 41, 0, 278, 279, 3, 94, 47, 0, 279, 67, 1, 0, 0, 0, 280, 281, 3, 84, 42, 0, 281, 282, 3, 92, 46, 0, 282, 69, 1, 0, 0, 0, 283, 284, 3, 84, 42, 0, 284, 285, 3, 94, 47, 0, 285, 71, 1, 0, 0, 0, 286, 287, 3, 86, 43, 0, 287, 288, 3, 92, 46, 0, 288, 73, 1, 0, 0, 0, 289, 290, 3, 86, 43, 0, 290, 291, 3, 94, 47, 0, 291, 75, 1, 0, 0, 0, 292, 293, 3, 88, 44, 0, 293, 294, 3, 92, 46, 0, 294, 77, 1, 0, 0, 0, 295, 296, 3, 88, 44, 0, 296, 297, 3, 94, 47, 0, 297, 79, 1, 0, 0, 0, 298, 299, 3, 90, 45, 0, 299, 300, 3, 92, 46, 0, 300, 81, 1, 0, 0, 0, 301, 302, 3, 90, 45, 0, 302, 303, 3, 94, 47, 0, 303, 83, 1, 0, 0, 0, 304, 305, 3, 92, 46, 0, 305, 306, 3, 92, 46, 0, 306, 85, 1, 0, 0, 0, 307, 308, 3, 94, 47, 0, 308, 309, 3, 92, 46, 0, 309, 87, 1, 0, 0, 0, 310, 311, 3, 94, 47, 0, 311, 312, 3, 94, 47, 0, 312, 89, 1, 0, 0, 0, 313, 314, 3, 92, 46, 0, 314, 315, 3, 94, 47, 0, 315, 91, 1, 0, 0, 0, 316, 337, 3, 98, 49, 0, 317, 337, 3, 100, 50, 0, 318, 325, 3, 98, 49, 0, 319, 326, 3, 102, 51, 0, 320, 322, 3, 96, 48, 0, 321, 320, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, 325, 319, 1, 0, 0, 0, 325, 321, 1, 0, 0, 0, 326, 337, 1, 0, 0, 0, 327, 334, 3, 100, 50, 0, 328, 335, 3, 102, 51, 0, 329, 331, 3, 96, 48, 0, 330, 329, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 335, 1, 0, 0, 0, 334, 328, 1, 0, 0, 0, 334, 330, 1, 0, 0, 0, 335, 337, 1, 0, 0, 0, 336, 316, 1, 0, 0, 0, 336, 317, 1, 0, 0, 0, 336, 318, 1, 0, 0, 0, 336, 327, 1, 0, 0, 0, 337, 93, 1, 0, 0, 0, 338, 339, 3, 98, 49, 0, 339, 340, 3, 98, 49, 0, 340, 365, 1, 0, 0, 0, 341, 342, 3, 98, 49, 0, 342, 343, 3, 100, 50, 0, 343, 365, 1, 0, 0, 0, 344, 345, 3, 98, 49, 0, 345, 352, 3, 98, 49, 0, 346, 353, 3, 102, 51, 0, 347, 349, 3, 96, 48, 0, 348, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 353, 1, 0, 0, 0, 352, 346, 1, 0, 0, 0, 352, 348, 1, 0, 0, 0, 353, 365, 1, 0, 0, 0, 354, 355, 3, 98, 49, 0, 355, 362, 3, 100, 50, 0, 356, 363, 3, 102, 51, 0, 357, 359, 3, 96, 48, 0, 358, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 363, 1, 0, 0, 0, 362, 356, 1, 0, 0, 0, 362, 358, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 338, 1, 0, 0, 0, 364, 341, 1, 0, 0, 0, 364, 344, 1, 0, 0, 0, 364, 354, 1, 0, 0, 0, 365, 95, 1, 0, 0, 0, 366, 367, 7, 0, 0, 0, 367, 97, 1, 0, 0, 0, 368, 369, 7, 1, 0, 0, 369, 99, 1, 0, 0, 0, 370, 371, 7, 2, 0, 0, 371, 101, 1, 0, 0, 0, 372, 373, 5, 248, 0, 0, 373, 103, 1, 0, 0, 0, 27, 107, 112, 120, 122, 130, 154, 158, 164, 170, 176, 182, 186, 190, 196, 214, 224, 230, 323, 325, 332, 334, 336, 350, 352, 360, 362, 364] \ No newline at end of file +[4, 1, 249, 377, 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, 1, 0, 1, 0, 1, 0, 3, 0, 112, 8, 0, 1, 0, 1, 0, 1, 1, 4, 1, 117, 8, 1, 11, 1, 12, 1, 118, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 127, 8, 2, 11, 2, 12, 2, 128, 1, 2, 1, 2, 1, 3, 1, 3, 4, 3, 135, 8, 3, 11, 3, 12, 3, 136, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 161, 8, 6, 1, 7, 1, 7, 3, 7, 165, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 171, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 177, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 183, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 189, 8, 11, 1, 12, 1, 12, 3, 12, 193, 8, 12, 1, 13, 1, 13, 3, 13, 197, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 203, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 221, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 231, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 237, 8, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 326, 8, 46, 1, 46, 1, 46, 4, 46, 330, 8, 46, 11, 46, 12, 46, 331, 3, 46, 334, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 340, 8, 47, 1, 47, 1, 47, 4, 47, 344, 8, 47, 11, 47, 12, 47, 345, 3, 47, 348, 8, 47, 1, 48, 1, 48, 3, 48, 352, 8, 48, 1, 48, 1, 48, 1, 48, 3, 48, 357, 8, 48, 1, 48, 1, 48, 4, 48, 361, 8, 48, 11, 48, 12, 48, 362, 3, 48, 365, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 0, 0, 54, 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, 0, 4, 1, 0, 1, 18, 1, 0, 20, 37, 1, 0, 38, 132, 1, 0, 133, 247, 388, 0, 111, 1, 0, 0, 0, 2, 116, 1, 0, 0, 0, 4, 123, 1, 0, 0, 0, 6, 132, 1, 0, 0, 0, 8, 140, 1, 0, 0, 0, 10, 145, 1, 0, 0, 0, 12, 152, 1, 0, 0, 0, 14, 164, 1, 0, 0, 0, 16, 170, 1, 0, 0, 0, 18, 176, 1, 0, 0, 0, 20, 182, 1, 0, 0, 0, 22, 188, 1, 0, 0, 0, 24, 192, 1, 0, 0, 0, 26, 196, 1, 0, 0, 0, 28, 202, 1, 0, 0, 0, 30, 220, 1, 0, 0, 0, 32, 230, 1, 0, 0, 0, 34, 236, 1, 0, 0, 0, 36, 238, 1, 0, 0, 0, 38, 241, 1, 0, 0, 0, 40, 244, 1, 0, 0, 0, 42, 247, 1, 0, 0, 0, 44, 250, 1, 0, 0, 0, 46, 253, 1, 0, 0, 0, 48, 256, 1, 0, 0, 0, 50, 259, 1, 0, 0, 0, 52, 262, 1, 0, 0, 0, 54, 265, 1, 0, 0, 0, 56, 268, 1, 0, 0, 0, 58, 271, 1, 0, 0, 0, 60, 274, 1, 0, 0, 0, 62, 277, 1, 0, 0, 0, 64, 280, 1, 0, 0, 0, 66, 283, 1, 0, 0, 0, 68, 286, 1, 0, 0, 0, 70, 289, 1, 0, 0, 0, 72, 292, 1, 0, 0, 0, 74, 295, 1, 0, 0, 0, 76, 298, 1, 0, 0, 0, 78, 301, 1, 0, 0, 0, 80, 304, 1, 0, 0, 0, 82, 307, 1, 0, 0, 0, 84, 310, 1, 0, 0, 0, 86, 313, 1, 0, 0, 0, 88, 316, 1, 0, 0, 0, 90, 319, 1, 0, 0, 0, 92, 325, 1, 0, 0, 0, 94, 335, 1, 0, 0, 0, 96, 351, 1, 0, 0, 0, 98, 366, 1, 0, 0, 0, 100, 368, 1, 0, 0, 0, 102, 370, 1, 0, 0, 0, 104, 372, 1, 0, 0, 0, 106, 374, 1, 0, 0, 0, 108, 112, 3, 2, 1, 0, 109, 112, 3, 4, 2, 0, 110, 112, 3, 6, 3, 0, 111, 108, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 110, 1, 0, 0, 0, 112, 113, 1, 0, 0, 0, 113, 114, 5, 0, 0, 1, 114, 1, 1, 0, 0, 0, 115, 117, 3, 12, 6, 0, 116, 115, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 116, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 121, 3, 10, 5, 0, 121, 122, 3, 12, 6, 0, 122, 3, 1, 0, 0, 0, 123, 126, 3, 12, 6, 0, 124, 127, 3, 8, 4, 0, 125, 127, 3, 10, 5, 0, 126, 124, 1, 0, 0, 0, 126, 125, 1, 0, 0, 0, 127, 128, 1, 0, 0, 0, 128, 126, 1, 0, 0, 0, 128, 129, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 131, 3, 12, 6, 0, 131, 5, 1, 0, 0, 0, 132, 134, 3, 12, 6, 0, 133, 135, 3, 12, 6, 0, 134, 133, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0, 136, 137, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 139, 3, 12, 6, 0, 139, 7, 1, 0, 0, 0, 140, 141, 3, 14, 7, 0, 141, 142, 5, 248, 0, 0, 142, 143, 3, 14, 7, 0, 143, 144, 5, 249, 0, 0, 144, 9, 1, 0, 0, 0, 145, 146, 3, 14, 7, 0, 146, 147, 5, 248, 0, 0, 147, 148, 3, 14, 7, 0, 148, 149, 5, 248, 0, 0, 149, 150, 3, 14, 7, 0, 150, 151, 5, 249, 0, 0, 151, 11, 1, 0, 0, 0, 152, 153, 3, 14, 7, 0, 153, 154, 5, 248, 0, 0, 154, 155, 3, 14, 7, 0, 155, 156, 5, 248, 0, 0, 156, 157, 3, 14, 7, 0, 157, 158, 5, 248, 0, 0, 158, 160, 3, 14, 7, 0, 159, 161, 5, 249, 0, 0, 160, 159, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 13, 1, 0, 0, 0, 162, 165, 3, 16, 8, 0, 163, 165, 3, 18, 9, 0, 164, 162, 1, 0, 0, 0, 164, 163, 1, 0, 0, 0, 165, 15, 1, 0, 0, 0, 166, 171, 3, 84, 42, 0, 167, 171, 3, 86, 43, 0, 168, 171, 3, 88, 44, 0, 169, 171, 3, 90, 45, 0, 170, 166, 1, 0, 0, 0, 170, 167, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 169, 1, 0, 0, 0, 171, 17, 1, 0, 0, 0, 172, 177, 3, 68, 34, 0, 173, 177, 3, 72, 36, 0, 174, 177, 3, 76, 38, 0, 175, 177, 3, 80, 40, 0, 176, 172, 1, 0, 0, 0, 176, 173, 1, 0, 0, 0, 176, 174, 1, 0, 0, 0, 176, 175, 1, 0, 0, 0, 177, 19, 1, 0, 0, 0, 178, 183, 3, 70, 35, 0, 179, 183, 3, 74, 37, 0, 180, 183, 3, 78, 39, 0, 181, 183, 3, 82, 41, 0, 182, 178, 1, 0, 0, 0, 182, 179, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 182, 181, 1, 0, 0, 0, 183, 21, 1, 0, 0, 0, 184, 189, 3, 84, 42, 0, 185, 189, 3, 86, 43, 0, 186, 189, 3, 88, 44, 0, 187, 189, 3, 90, 45, 0, 188, 184, 1, 0, 0, 0, 188, 185, 1, 0, 0, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, 189, 23, 1, 0, 0, 0, 190, 193, 3, 84, 42, 0, 191, 193, 3, 86, 43, 0, 192, 190, 1, 0, 0, 0, 192, 191, 1, 0, 0, 0, 193, 25, 1, 0, 0, 0, 194, 197, 3, 88, 44, 0, 195, 197, 3, 90, 45, 0, 196, 194, 1, 0, 0, 0, 196, 195, 1, 0, 0, 0, 197, 27, 1, 0, 0, 0, 198, 203, 3, 68, 34, 0, 199, 203, 3, 72, 36, 0, 200, 203, 3, 76, 38, 0, 201, 203, 3, 80, 40, 0, 202, 198, 1, 0, 0, 0, 202, 199, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1, 0, 0, 0, 203, 29, 1, 0, 0, 0, 204, 221, 3, 36, 18, 0, 205, 221, 3, 44, 22, 0, 206, 221, 3, 52, 26, 0, 207, 221, 3, 60, 30, 0, 208, 221, 3, 40, 20, 0, 209, 221, 3, 48, 24, 0, 210, 221, 3, 56, 28, 0, 211, 221, 3, 64, 32, 0, 212, 221, 3, 38, 19, 0, 213, 221, 3, 46, 23, 0, 214, 221, 3, 54, 27, 0, 215, 221, 3, 62, 31, 0, 216, 221, 3, 42, 21, 0, 217, 221, 3, 50, 25, 0, 218, 221, 3, 58, 29, 0, 219, 221, 3, 66, 33, 0, 220, 204, 1, 0, 0, 0, 220, 205, 1, 0, 0, 0, 220, 206, 1, 0, 0, 0, 220, 207, 1, 0, 0, 0, 220, 208, 1, 0, 0, 0, 220, 209, 1, 0, 0, 0, 220, 210, 1, 0, 0, 0, 220, 211, 1, 0, 0, 0, 220, 212, 1, 0, 0, 0, 220, 213, 1, 0, 0, 0, 220, 214, 1, 0, 0, 0, 220, 215, 1, 0, 0, 0, 220, 216, 1, 0, 0, 0, 220, 217, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 220, 219, 1, 0, 0, 0, 221, 31, 1, 0, 0, 0, 222, 231, 3, 68, 34, 0, 223, 231, 3, 72, 36, 0, 224, 231, 3, 76, 38, 0, 225, 231, 3, 80, 40, 0, 226, 231, 3, 70, 35, 0, 227, 231, 3, 74, 37, 0, 228, 231, 3, 78, 39, 0, 229, 231, 3, 82, 41, 0, 230, 222, 1, 0, 0, 0, 230, 223, 1, 0, 0, 0, 230, 224, 1, 0, 0, 0, 230, 225, 1, 0, 0, 0, 230, 226, 1, 0, 0, 0, 230, 227, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 230, 229, 1, 0, 0, 0, 231, 33, 1, 0, 0, 0, 232, 237, 3, 84, 42, 0, 233, 237, 3, 86, 43, 0, 234, 237, 3, 88, 44, 0, 235, 237, 3, 90, 45, 0, 236, 232, 1, 0, 0, 0, 236, 233, 1, 0, 0, 0, 236, 234, 1, 0, 0, 0, 236, 235, 1, 0, 0, 0, 237, 35, 1, 0, 0, 0, 238, 239, 3, 68, 34, 0, 239, 240, 3, 92, 46, 0, 240, 37, 1, 0, 0, 0, 241, 242, 3, 68, 34, 0, 242, 243, 3, 96, 48, 0, 243, 39, 1, 0, 0, 0, 244, 245, 3, 70, 35, 0, 245, 246, 3, 92, 46, 0, 246, 41, 1, 0, 0, 0, 247, 248, 3, 70, 35, 0, 248, 249, 3, 96, 48, 0, 249, 43, 1, 0, 0, 0, 250, 251, 3, 72, 36, 0, 251, 252, 3, 92, 46, 0, 252, 45, 1, 0, 0, 0, 253, 254, 3, 72, 36, 0, 254, 255, 3, 96, 48, 0, 255, 47, 1, 0, 0, 0, 256, 257, 3, 74, 37, 0, 257, 258, 3, 92, 46, 0, 258, 49, 1, 0, 0, 0, 259, 260, 3, 74, 37, 0, 260, 261, 3, 96, 48, 0, 261, 51, 1, 0, 0, 0, 262, 263, 3, 76, 38, 0, 263, 264, 3, 92, 46, 0, 264, 53, 1, 0, 0, 0, 265, 266, 3, 76, 38, 0, 266, 267, 3, 96, 48, 0, 267, 55, 1, 0, 0, 0, 268, 269, 3, 78, 39, 0, 269, 270, 3, 92, 46, 0, 270, 57, 1, 0, 0, 0, 271, 272, 3, 78, 39, 0, 272, 273, 3, 96, 48, 0, 273, 59, 1, 0, 0, 0, 274, 275, 3, 80, 40, 0, 275, 276, 3, 92, 46, 0, 276, 61, 1, 0, 0, 0, 277, 278, 3, 80, 40, 0, 278, 279, 3, 96, 48, 0, 279, 63, 1, 0, 0, 0, 280, 281, 3, 82, 41, 0, 281, 282, 3, 92, 46, 0, 282, 65, 1, 0, 0, 0, 283, 284, 3, 82, 41, 0, 284, 285, 3, 96, 48, 0, 285, 67, 1, 0, 0, 0, 286, 287, 3, 84, 42, 0, 287, 288, 3, 92, 46, 0, 288, 69, 1, 0, 0, 0, 289, 290, 3, 84, 42, 0, 290, 291, 3, 96, 48, 0, 291, 71, 1, 0, 0, 0, 292, 293, 3, 86, 43, 0, 293, 294, 3, 92, 46, 0, 294, 73, 1, 0, 0, 0, 295, 296, 3, 86, 43, 0, 296, 297, 3, 96, 48, 0, 297, 75, 1, 0, 0, 0, 298, 299, 3, 88, 44, 0, 299, 300, 3, 92, 46, 0, 300, 77, 1, 0, 0, 0, 301, 302, 3, 88, 44, 0, 302, 303, 3, 96, 48, 0, 303, 79, 1, 0, 0, 0, 304, 305, 3, 90, 45, 0, 305, 306, 3, 92, 46, 0, 306, 81, 1, 0, 0, 0, 307, 308, 3, 90, 45, 0, 308, 309, 3, 96, 48, 0, 309, 83, 1, 0, 0, 0, 310, 311, 3, 92, 46, 0, 311, 312, 3, 92, 46, 0, 312, 85, 1, 0, 0, 0, 313, 314, 3, 94, 47, 0, 314, 315, 3, 92, 46, 0, 315, 87, 1, 0, 0, 0, 316, 317, 3, 94, 47, 0, 317, 318, 3, 96, 48, 0, 318, 89, 1, 0, 0, 0, 319, 320, 3, 92, 46, 0, 320, 321, 3, 96, 48, 0, 321, 91, 1, 0, 0, 0, 322, 326, 3, 104, 52, 0, 323, 326, 3, 106, 53, 0, 324, 326, 3, 102, 51, 0, 325, 322, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 324, 1, 0, 0, 0, 326, 333, 1, 0, 0, 0, 327, 334, 3, 100, 50, 0, 328, 330, 3, 98, 49, 0, 329, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 327, 1, 0, 0, 0, 333, 329, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 93, 1, 0, 0, 0, 335, 339, 3, 104, 52, 0, 336, 340, 3, 104, 52, 0, 337, 340, 3, 106, 53, 0, 338, 340, 3, 102, 51, 0, 339, 336, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 339, 338, 1, 0, 0, 0, 340, 347, 1, 0, 0, 0, 341, 348, 3, 100, 50, 0, 342, 344, 3, 98, 49, 0, 343, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 341, 1, 0, 0, 0, 347, 343, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 95, 1, 0, 0, 0, 349, 352, 3, 104, 52, 0, 350, 352, 3, 102, 51, 0, 351, 349, 1, 0, 0, 0, 351, 350, 1, 0, 0, 0, 352, 356, 1, 0, 0, 0, 353, 357, 3, 104, 52, 0, 354, 357, 3, 106, 53, 0, 355, 357, 3, 102, 51, 0, 356, 353, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 355, 1, 0, 0, 0, 357, 364, 1, 0, 0, 0, 358, 365, 3, 100, 50, 0, 359, 361, 3, 98, 49, 0, 360, 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 358, 1, 0, 0, 0, 364, 360, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 97, 1, 0, 0, 0, 366, 367, 7, 0, 0, 0, 367, 99, 1, 0, 0, 0, 368, 369, 5, 19, 0, 0, 369, 101, 1, 0, 0, 0, 370, 371, 7, 1, 0, 0, 371, 103, 1, 0, 0, 0, 372, 373, 7, 2, 0, 0, 373, 105, 1, 0, 0, 0, 374, 375, 7, 3, 0, 0, 375, 107, 1, 0, 0, 0, 27, 111, 118, 126, 128, 136, 160, 164, 170, 176, 182, 188, 192, 196, 202, 220, 230, 236, 325, 331, 333, 339, 345, 347, 351, 356, 362, 364] \ No newline at end of file diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.tokens" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.tokens" index e6be6e7..c562079 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.tokens" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.tokens" @@ -245,254 +245,252 @@ T__243=244 T__244=245 T__245=246 T__246=247 -T__247=248 -I=249 -'\n'=1 -'க்'=2 -'ச்'=3 -'ட்'=4 -'த்'=5 -'ப்'=6 -'ற்'=7 -'ஞ்'=8 -'ங்'=9 -'ண்'=10 -'ந்'=11 -'ம்'=12 -'ன்'=13 -'ய்'=14 -'ர்'=15 -'ல்'=16 -'வ்'=17 -'ழ்'=18 -'ள்'=19 -'அ'=20 -'இ'=21 -'உ'=22 -'எ'=23 -'ஒ'=24 -'க'=25 -'கி'=26 -'கு'=27 -'கெ'=28 -'கொ'=29 -'ங'=30 -'ஙி'=31 -'ஙு'=32 -'ஙெ'=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 -'ஏ'=118 -'ஐ'=119 -'ஓ'=120 -'ஒள'=121 -'கா'=122 -'கீ'=123 -'கூ'=124 -'கே'=125 -'கை'=126 -'கோ'=127 -'கௌ'=128 -'ஙா'=129 -'ஙீ'=130 -'ஙூ'=131 -'ஙே'=132 -'ஙை'=133 -'ஙோ'=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 -'ணோ'=162 -'ணௌ'=163 -'தா'=164 -'தீ'=165 -'தூ'=166 -'தே'=167 -'தை'=168 -'தோ'=169 -'தௌ'=170 -'நா'=171 -'நீ'=172 -'நூ'=173 -'நே'=174 -'நை'=175 -'நோ'=176 -'நௌ'=177 -'பா'=178 -'பீ'=179 -'பூ'=180 -'பே'=181 -'பை'=182 -'போ'=183 -'பௌ'=184 -'மா'=185 -'மீ'=186 -'மூ'=187 -'மே'=188 -'மை'=189 -'மோ'=190 -'மௌ'=191 -'யா'=192 -'யீ'=193 -'யூ'=194 -'யே'=195 -'யை'=196 -'யோ'=197 -'யௌ'=198 -'ரா'=199 -'ரீ'=200 -'ரூ'=201 -'ரே'=202 -'ரை'=203 -'ரோ'=204 -'ரௌ'=205 -'லா'=206 -'லீ'=207 -'லூ'=208 -'லே'=209 -'லை'=210 -'லோ'=211 -'லௌ'=212 -'வா'=213 -'வீ'=214 -'வூ'=215 -'வே'=216 -'வை'=217 -'வோ'=218 -'வௌ'=219 -'ழா'=220 -'ழீ'=221 -'ழூ'=222 -'ழே'=223 -'ழை'=224 -'ழோ'=225 -'ழௌ'=226 -'ளா'=227 -'ளீ'=228 -'ளூ'=229 -'ளே'=230 -'ளை'=231 -'ளோ'=232 -'ளௌ'=233 -'றா'=234 -'றீ'=235 -'றூ'=236 -'றே'=237 -'றை'=238 -'றோ'=239 -'றௌ'=240 -'னா'=241 -'னீ'=242 -'னூ'=243 -'னே'=244 -'னை'=245 +I=248 +NL=249 +'க்'=1 +'ச்'=2 +'ட்'=3 +'த்'=4 +'ப்'=5 +'ற்'=6 +'ஞ்'=7 +'ங்'=8 +'ண்'=9 +'ந்'=10 +'ம்'=11 +'ன்'=12 +'ய்'=13 +'ர்'=14 +'ல்'=15 +'வ்'=16 +'ழ்'=17 +'ள்'=18 +'ஃ'=19 +'கை'=20 +'ஙை'=21 +'சை'=22 +'ஞை'=23 +'டை'=24 +'ணை'=25 +'தை'=26 +'நை'=27 +'பை'=28 +'மை'=29 +'யை'=30 +'ரை'=31 +'லை'=32 +'வை'=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 +'ள'=118 +'ளி'=119 +'ளு'=120 +'ளெ'=121 +'ளொ'=122 +'ற'=123 +'றி'=124 +'று'=125 +'றெ'=126 +'றொ'=127 +'ன'=128 +'னி'=129 +'னு'=130 +'னெ'=131 +'னொ'=132 +'ஆ'=133 +'ஈ'=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 +'ஞோ'=162 +'ஞௌ'=163 +'டா'=164 +'டீ'=165 +'டூ'=166 +'டே'=167 +'டோ'=168 +'டௌ'=169 +'ணா'=170 +'ணீ'=171 +'ணூ'=172 +'ணே'=173 +'ணோ'=174 +'ணௌ'=175 +'தா'=176 +'தீ'=177 +'தூ'=178 +'தே'=179 +'தோ'=180 +'தௌ'=181 +'நா'=182 +'நீ'=183 +'நூ'=184 +'நே'=185 +'நோ'=186 +'நௌ'=187 +'பா'=188 +'பீ'=189 +'பூ'=190 +'பே'=191 +'போ'=192 +'பௌ'=193 +'மா'=194 +'மீ'=195 +'மூ'=196 +'மே'=197 +'மோ'=198 +'மௌ'=199 +'யா'=200 +'யீ'=201 +'யூ'=202 +'யே'=203 +'யோ'=204 +'யௌ'=205 +'ரா'=206 +'ரீ'=207 +'ரூ'=208 +'ரே'=209 +'ரோ'=210 +'ரௌ'=211 +'லா'=212 +'லீ'=213 +'லூ'=214 +'லே'=215 +'லோ'=216 +'லௌ'=217 +'வா'=218 +'வீ'=219 +'வூ'=220 +'வே'=221 +'வோ'=222 +'வௌ'=223 +'ழா'=224 +'ழீ'=225 +'ழூ'=226 +'ழே'=227 +'ழோ'=228 +'ழௌ'=229 +'ளா'=230 +'ளீ'=231 +'ளூ'=232 +'ளே'=233 +'ளோ'=234 +'ளௌ'=235 +'றா'=236 +'றீ'=237 +'றூ'=238 +'றே'=239 +'றோ'=240 +'றௌ'=241 +'னா'=242 +'னீ'=243 +'னூ'=244 +'னே'=245 'னோ'=246 'னௌ'=247 -'ஃ'=248 -' '=249 diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.interp" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.interp" index 946aaca..31428a7 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.interp" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.interp" @@ -1,6 +1,5 @@ token literal names: null -'\n' 'க்' 'ச்' 'ட்' @@ -19,6 +18,25 @@ null 'வ்' 'ழ்' 'ள்' +'ஃ' +'கை' +'ஙை' +'சை' +'ஞை' +'டை' +'ணை' +'தை' +'நை' +'பை' +'மை' +'யை' +'ரை' +'லை' +'வை' +'ழை' +'ளை' +'றை' +'னை' 'அ' 'இ' 'உ' @@ -120,135 +138,117 @@ null 'ஏ' 'ஐ' 'ஓ' -'ஒள' +'ஔ' 'கா' 'கீ' 'கூ' 'கே' -'கை' 'கோ' 'கௌ' 'ஙா' 'ஙீ' 'ஙூ' 'ஙே' -'ஙை' 'ஙோ' 'ஙௌ' 'சா' 'சீ' 'சூ' 'சே' -'சை' 'சோ' 'சௌ' 'ஞா' 'ஞீ' 'ஞூ' 'ஞே' -'ஞை' 'ஞோ' 'ஞௌ' 'டா' 'டீ' 'டூ' 'டே' -'டை' 'டோ' 'டௌ' 'ணா' 'ணீ' 'ணூ' 'ணே' -'ணை' 'ணோ' 'ணௌ' 'தா' 'தீ' 'தூ' 'தே' -'தை' 'தோ' 'தௌ' 'நா' 'நீ' 'நூ' 'நே' -'நை' 'நோ' 'நௌ' 'பா' 'பீ' 'பூ' 'பே' -'பை' 'போ' 'பௌ' 'மா' 'மீ' 'மூ' 'மே' -'மை' 'மோ' 'மௌ' 'யா' 'யீ' 'யூ' 'யே' -'யை' 'யோ' 'யௌ' 'ரா' 'ரீ' 'ரூ' 'ரே' -'ரை' 'ரோ' 'ரௌ' 'லா' 'லீ' 'லூ' 'லே' -'லை' 'லோ' 'லௌ' 'வா' 'வீ' 'வூ' 'வே' -'வை' 'வோ' 'வௌ' 'ழா' 'ழீ' 'ழூ' 'ழே' -'ழை' 'ழோ' 'ழௌ' 'ளா' 'ளீ' 'ளூ' 'ளே' -'ளை' 'ளோ' 'ளௌ' 'றா' 'றீ' 'றூ' 'றே' -'றை' 'றோ' 'றௌ' 'னா' 'னீ' 'னூ' 'னே' -'னை' 'னோ' 'னௌ' -'ஃ' -' ' +null +null token symbolic names: null @@ -499,8 +499,8 @@ null null null null -null I +NL rule names: T__0 @@ -750,8 +750,8 @@ T__243 T__244 T__245 T__246 -T__247 I +NL channel names: DEFAULT_TOKEN_CHANNEL @@ -761,4 +761,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 249, 1214, 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, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 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, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 248, 1, 248, 0, 0, 249, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 1, 0, 0, 1213, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 1, 499, 1, 0, 0, 0, 3, 501, 1, 0, 0, 0, 5, 504, 1, 0, 0, 0, 7, 507, 1, 0, 0, 0, 9, 510, 1, 0, 0, 0, 11, 513, 1, 0, 0, 0, 13, 516, 1, 0, 0, 0, 15, 519, 1, 0, 0, 0, 17, 522, 1, 0, 0, 0, 19, 525, 1, 0, 0, 0, 21, 528, 1, 0, 0, 0, 23, 531, 1, 0, 0, 0, 25, 534, 1, 0, 0, 0, 27, 537, 1, 0, 0, 0, 29, 540, 1, 0, 0, 0, 31, 543, 1, 0, 0, 0, 33, 546, 1, 0, 0, 0, 35, 549, 1, 0, 0, 0, 37, 552, 1, 0, 0, 0, 39, 555, 1, 0, 0, 0, 41, 557, 1, 0, 0, 0, 43, 559, 1, 0, 0, 0, 45, 561, 1, 0, 0, 0, 47, 563, 1, 0, 0, 0, 49, 565, 1, 0, 0, 0, 51, 567, 1, 0, 0, 0, 53, 570, 1, 0, 0, 0, 55, 573, 1, 0, 0, 0, 57, 576, 1, 0, 0, 0, 59, 579, 1, 0, 0, 0, 61, 581, 1, 0, 0, 0, 63, 584, 1, 0, 0, 0, 65, 587, 1, 0, 0, 0, 67, 590, 1, 0, 0, 0, 69, 593, 1, 0, 0, 0, 71, 595, 1, 0, 0, 0, 73, 598, 1, 0, 0, 0, 75, 601, 1, 0, 0, 0, 77, 604, 1, 0, 0, 0, 79, 607, 1, 0, 0, 0, 81, 609, 1, 0, 0, 0, 83, 612, 1, 0, 0, 0, 85, 615, 1, 0, 0, 0, 87, 618, 1, 0, 0, 0, 89, 621, 1, 0, 0, 0, 91, 623, 1, 0, 0, 0, 93, 626, 1, 0, 0, 0, 95, 629, 1, 0, 0, 0, 97, 632, 1, 0, 0, 0, 99, 635, 1, 0, 0, 0, 101, 637, 1, 0, 0, 0, 103, 640, 1, 0, 0, 0, 105, 643, 1, 0, 0, 0, 107, 646, 1, 0, 0, 0, 109, 649, 1, 0, 0, 0, 111, 651, 1, 0, 0, 0, 113, 654, 1, 0, 0, 0, 115, 657, 1, 0, 0, 0, 117, 660, 1, 0, 0, 0, 119, 663, 1, 0, 0, 0, 121, 665, 1, 0, 0, 0, 123, 668, 1, 0, 0, 0, 125, 671, 1, 0, 0, 0, 127, 674, 1, 0, 0, 0, 129, 677, 1, 0, 0, 0, 131, 679, 1, 0, 0, 0, 133, 682, 1, 0, 0, 0, 135, 685, 1, 0, 0, 0, 137, 688, 1, 0, 0, 0, 139, 691, 1, 0, 0, 0, 141, 693, 1, 0, 0, 0, 143, 696, 1, 0, 0, 0, 145, 699, 1, 0, 0, 0, 147, 702, 1, 0, 0, 0, 149, 705, 1, 0, 0, 0, 151, 707, 1, 0, 0, 0, 153, 710, 1, 0, 0, 0, 155, 713, 1, 0, 0, 0, 157, 716, 1, 0, 0, 0, 159, 719, 1, 0, 0, 0, 161, 721, 1, 0, 0, 0, 163, 724, 1, 0, 0, 0, 165, 727, 1, 0, 0, 0, 167, 730, 1, 0, 0, 0, 169, 733, 1, 0, 0, 0, 171, 735, 1, 0, 0, 0, 173, 738, 1, 0, 0, 0, 175, 741, 1, 0, 0, 0, 177, 744, 1, 0, 0, 0, 179, 747, 1, 0, 0, 0, 181, 749, 1, 0, 0, 0, 183, 752, 1, 0, 0, 0, 185, 755, 1, 0, 0, 0, 187, 758, 1, 0, 0, 0, 189, 761, 1, 0, 0, 0, 191, 763, 1, 0, 0, 0, 193, 766, 1, 0, 0, 0, 195, 769, 1, 0, 0, 0, 197, 772, 1, 0, 0, 0, 199, 775, 1, 0, 0, 0, 201, 777, 1, 0, 0, 0, 203, 780, 1, 0, 0, 0, 205, 783, 1, 0, 0, 0, 207, 786, 1, 0, 0, 0, 209, 789, 1, 0, 0, 0, 211, 791, 1, 0, 0, 0, 213, 794, 1, 0, 0, 0, 215, 797, 1, 0, 0, 0, 217, 800, 1, 0, 0, 0, 219, 803, 1, 0, 0, 0, 221, 805, 1, 0, 0, 0, 223, 808, 1, 0, 0, 0, 225, 811, 1, 0, 0, 0, 227, 814, 1, 0, 0, 0, 229, 817, 1, 0, 0, 0, 231, 819, 1, 0, 0, 0, 233, 821, 1, 0, 0, 0, 235, 823, 1, 0, 0, 0, 237, 825, 1, 0, 0, 0, 239, 827, 1, 0, 0, 0, 241, 829, 1, 0, 0, 0, 243, 832, 1, 0, 0, 0, 245, 835, 1, 0, 0, 0, 247, 838, 1, 0, 0, 0, 249, 841, 1, 0, 0, 0, 251, 844, 1, 0, 0, 0, 253, 847, 1, 0, 0, 0, 255, 850, 1, 0, 0, 0, 257, 853, 1, 0, 0, 0, 259, 856, 1, 0, 0, 0, 261, 859, 1, 0, 0, 0, 263, 862, 1, 0, 0, 0, 265, 865, 1, 0, 0, 0, 267, 868, 1, 0, 0, 0, 269, 871, 1, 0, 0, 0, 271, 874, 1, 0, 0, 0, 273, 877, 1, 0, 0, 0, 275, 880, 1, 0, 0, 0, 277, 883, 1, 0, 0, 0, 279, 886, 1, 0, 0, 0, 281, 889, 1, 0, 0, 0, 283, 892, 1, 0, 0, 0, 285, 895, 1, 0, 0, 0, 287, 898, 1, 0, 0, 0, 289, 901, 1, 0, 0, 0, 291, 904, 1, 0, 0, 0, 293, 907, 1, 0, 0, 0, 295, 910, 1, 0, 0, 0, 297, 913, 1, 0, 0, 0, 299, 916, 1, 0, 0, 0, 301, 919, 1, 0, 0, 0, 303, 922, 1, 0, 0, 0, 305, 925, 1, 0, 0, 0, 307, 928, 1, 0, 0, 0, 309, 931, 1, 0, 0, 0, 311, 934, 1, 0, 0, 0, 313, 937, 1, 0, 0, 0, 315, 940, 1, 0, 0, 0, 317, 943, 1, 0, 0, 0, 319, 946, 1, 0, 0, 0, 321, 949, 1, 0, 0, 0, 323, 952, 1, 0, 0, 0, 325, 955, 1, 0, 0, 0, 327, 958, 1, 0, 0, 0, 329, 961, 1, 0, 0, 0, 331, 964, 1, 0, 0, 0, 333, 967, 1, 0, 0, 0, 335, 970, 1, 0, 0, 0, 337, 973, 1, 0, 0, 0, 339, 976, 1, 0, 0, 0, 341, 979, 1, 0, 0, 0, 343, 982, 1, 0, 0, 0, 345, 985, 1, 0, 0, 0, 347, 988, 1, 0, 0, 0, 349, 991, 1, 0, 0, 0, 351, 994, 1, 0, 0, 0, 353, 997, 1, 0, 0, 0, 355, 1000, 1, 0, 0, 0, 357, 1003, 1, 0, 0, 0, 359, 1006, 1, 0, 0, 0, 361, 1009, 1, 0, 0, 0, 363, 1012, 1, 0, 0, 0, 365, 1015, 1, 0, 0, 0, 367, 1018, 1, 0, 0, 0, 369, 1021, 1, 0, 0, 0, 371, 1024, 1, 0, 0, 0, 373, 1027, 1, 0, 0, 0, 375, 1030, 1, 0, 0, 0, 377, 1033, 1, 0, 0, 0, 379, 1036, 1, 0, 0, 0, 381, 1039, 1, 0, 0, 0, 383, 1042, 1, 0, 0, 0, 385, 1045, 1, 0, 0, 0, 387, 1048, 1, 0, 0, 0, 389, 1051, 1, 0, 0, 0, 391, 1054, 1, 0, 0, 0, 393, 1057, 1, 0, 0, 0, 395, 1060, 1, 0, 0, 0, 397, 1063, 1, 0, 0, 0, 399, 1066, 1, 0, 0, 0, 401, 1069, 1, 0, 0, 0, 403, 1072, 1, 0, 0, 0, 405, 1075, 1, 0, 0, 0, 407, 1078, 1, 0, 0, 0, 409, 1081, 1, 0, 0, 0, 411, 1084, 1, 0, 0, 0, 413, 1087, 1, 0, 0, 0, 415, 1090, 1, 0, 0, 0, 417, 1093, 1, 0, 0, 0, 419, 1096, 1, 0, 0, 0, 421, 1099, 1, 0, 0, 0, 423, 1102, 1, 0, 0, 0, 425, 1105, 1, 0, 0, 0, 427, 1108, 1, 0, 0, 0, 429, 1111, 1, 0, 0, 0, 431, 1114, 1, 0, 0, 0, 433, 1117, 1, 0, 0, 0, 435, 1120, 1, 0, 0, 0, 437, 1123, 1, 0, 0, 0, 439, 1126, 1, 0, 0, 0, 441, 1129, 1, 0, 0, 0, 443, 1132, 1, 0, 0, 0, 445, 1135, 1, 0, 0, 0, 447, 1138, 1, 0, 0, 0, 449, 1141, 1, 0, 0, 0, 451, 1144, 1, 0, 0, 0, 453, 1147, 1, 0, 0, 0, 455, 1150, 1, 0, 0, 0, 457, 1153, 1, 0, 0, 0, 459, 1156, 1, 0, 0, 0, 461, 1159, 1, 0, 0, 0, 463, 1162, 1, 0, 0, 0, 465, 1165, 1, 0, 0, 0, 467, 1168, 1, 0, 0, 0, 469, 1171, 1, 0, 0, 0, 471, 1174, 1, 0, 0, 0, 473, 1177, 1, 0, 0, 0, 475, 1180, 1, 0, 0, 0, 477, 1183, 1, 0, 0, 0, 479, 1186, 1, 0, 0, 0, 481, 1189, 1, 0, 0, 0, 483, 1192, 1, 0, 0, 0, 485, 1195, 1, 0, 0, 0, 487, 1198, 1, 0, 0, 0, 489, 1201, 1, 0, 0, 0, 491, 1204, 1, 0, 0, 0, 493, 1207, 1, 0, 0, 0, 495, 1210, 1, 0, 0, 0, 497, 1212, 1, 0, 0, 0, 499, 500, 5, 10, 0, 0, 500, 2, 1, 0, 0, 0, 501, 502, 5, 2965, 0, 0, 502, 503, 5, 3021, 0, 0, 503, 4, 1, 0, 0, 0, 504, 505, 5, 2970, 0, 0, 505, 506, 5, 3021, 0, 0, 506, 6, 1, 0, 0, 0, 507, 508, 5, 2975, 0, 0, 508, 509, 5, 3021, 0, 0, 509, 8, 1, 0, 0, 0, 510, 511, 5, 2980, 0, 0, 511, 512, 5, 3021, 0, 0, 512, 10, 1, 0, 0, 0, 513, 514, 5, 2986, 0, 0, 514, 515, 5, 3021, 0, 0, 515, 12, 1, 0, 0, 0, 516, 517, 5, 2993, 0, 0, 517, 518, 5, 3021, 0, 0, 518, 14, 1, 0, 0, 0, 519, 520, 5, 2974, 0, 0, 520, 521, 5, 3021, 0, 0, 521, 16, 1, 0, 0, 0, 522, 523, 5, 2969, 0, 0, 523, 524, 5, 3021, 0, 0, 524, 18, 1, 0, 0, 0, 525, 526, 5, 2979, 0, 0, 526, 527, 5, 3021, 0, 0, 527, 20, 1, 0, 0, 0, 528, 529, 5, 2984, 0, 0, 529, 530, 5, 3021, 0, 0, 530, 22, 1, 0, 0, 0, 531, 532, 5, 2990, 0, 0, 532, 533, 5, 3021, 0, 0, 533, 24, 1, 0, 0, 0, 534, 535, 5, 2985, 0, 0, 535, 536, 5, 3021, 0, 0, 536, 26, 1, 0, 0, 0, 537, 538, 5, 2991, 0, 0, 538, 539, 5, 3021, 0, 0, 539, 28, 1, 0, 0, 0, 540, 541, 5, 2992, 0, 0, 541, 542, 5, 3021, 0, 0, 542, 30, 1, 0, 0, 0, 543, 544, 5, 2994, 0, 0, 544, 545, 5, 3021, 0, 0, 545, 32, 1, 0, 0, 0, 546, 547, 5, 2997, 0, 0, 547, 548, 5, 3021, 0, 0, 548, 34, 1, 0, 0, 0, 549, 550, 5, 2996, 0, 0, 550, 551, 5, 3021, 0, 0, 551, 36, 1, 0, 0, 0, 552, 553, 5, 2995, 0, 0, 553, 554, 5, 3021, 0, 0, 554, 38, 1, 0, 0, 0, 555, 556, 5, 2949, 0, 0, 556, 40, 1, 0, 0, 0, 557, 558, 5, 2951, 0, 0, 558, 42, 1, 0, 0, 0, 559, 560, 5, 2953, 0, 0, 560, 44, 1, 0, 0, 0, 561, 562, 5, 2958, 0, 0, 562, 46, 1, 0, 0, 0, 563, 564, 5, 2962, 0, 0, 564, 48, 1, 0, 0, 0, 565, 566, 5, 2965, 0, 0, 566, 50, 1, 0, 0, 0, 567, 568, 5, 2965, 0, 0, 568, 569, 5, 3007, 0, 0, 569, 52, 1, 0, 0, 0, 570, 571, 5, 2965, 0, 0, 571, 572, 5, 3009, 0, 0, 572, 54, 1, 0, 0, 0, 573, 574, 5, 2965, 0, 0, 574, 575, 5, 3014, 0, 0, 575, 56, 1, 0, 0, 0, 576, 577, 5, 2965, 0, 0, 577, 578, 5, 3018, 0, 0, 578, 58, 1, 0, 0, 0, 579, 580, 5, 2969, 0, 0, 580, 60, 1, 0, 0, 0, 581, 582, 5, 2969, 0, 0, 582, 583, 5, 3007, 0, 0, 583, 62, 1, 0, 0, 0, 584, 585, 5, 2969, 0, 0, 585, 586, 5, 3009, 0, 0, 586, 64, 1, 0, 0, 0, 587, 588, 5, 2969, 0, 0, 588, 589, 5, 3014, 0, 0, 589, 66, 1, 0, 0, 0, 590, 591, 5, 2969, 0, 0, 591, 592, 5, 3018, 0, 0, 592, 68, 1, 0, 0, 0, 593, 594, 5, 2970, 0, 0, 594, 70, 1, 0, 0, 0, 595, 596, 5, 2970, 0, 0, 596, 597, 5, 3007, 0, 0, 597, 72, 1, 0, 0, 0, 598, 599, 5, 2970, 0, 0, 599, 600, 5, 3009, 0, 0, 600, 74, 1, 0, 0, 0, 601, 602, 5, 2970, 0, 0, 602, 603, 5, 3014, 0, 0, 603, 76, 1, 0, 0, 0, 604, 605, 5, 2970, 0, 0, 605, 606, 5, 3018, 0, 0, 606, 78, 1, 0, 0, 0, 607, 608, 5, 2974, 0, 0, 608, 80, 1, 0, 0, 0, 609, 610, 5, 2974, 0, 0, 610, 611, 5, 3007, 0, 0, 611, 82, 1, 0, 0, 0, 612, 613, 5, 2974, 0, 0, 613, 614, 5, 3009, 0, 0, 614, 84, 1, 0, 0, 0, 615, 616, 5, 2974, 0, 0, 616, 617, 5, 3014, 0, 0, 617, 86, 1, 0, 0, 0, 618, 619, 5, 2974, 0, 0, 619, 620, 5, 3018, 0, 0, 620, 88, 1, 0, 0, 0, 621, 622, 5, 2975, 0, 0, 622, 90, 1, 0, 0, 0, 623, 624, 5, 2975, 0, 0, 624, 625, 5, 3007, 0, 0, 625, 92, 1, 0, 0, 0, 626, 627, 5, 2975, 0, 0, 627, 628, 5, 3009, 0, 0, 628, 94, 1, 0, 0, 0, 629, 630, 5, 2975, 0, 0, 630, 631, 5, 3014, 0, 0, 631, 96, 1, 0, 0, 0, 632, 633, 5, 2975, 0, 0, 633, 634, 5, 3018, 0, 0, 634, 98, 1, 0, 0, 0, 635, 636, 5, 2979, 0, 0, 636, 100, 1, 0, 0, 0, 637, 638, 5, 2979, 0, 0, 638, 639, 5, 3007, 0, 0, 639, 102, 1, 0, 0, 0, 640, 641, 5, 2979, 0, 0, 641, 642, 5, 3009, 0, 0, 642, 104, 1, 0, 0, 0, 643, 644, 5, 2979, 0, 0, 644, 645, 5, 3014, 0, 0, 645, 106, 1, 0, 0, 0, 646, 647, 5, 2979, 0, 0, 647, 648, 5, 3018, 0, 0, 648, 108, 1, 0, 0, 0, 649, 650, 5, 2980, 0, 0, 650, 110, 1, 0, 0, 0, 651, 652, 5, 2980, 0, 0, 652, 653, 5, 3007, 0, 0, 653, 112, 1, 0, 0, 0, 654, 655, 5, 2980, 0, 0, 655, 656, 5, 3009, 0, 0, 656, 114, 1, 0, 0, 0, 657, 658, 5, 2980, 0, 0, 658, 659, 5, 3014, 0, 0, 659, 116, 1, 0, 0, 0, 660, 661, 5, 2980, 0, 0, 661, 662, 5, 3018, 0, 0, 662, 118, 1, 0, 0, 0, 663, 664, 5, 2984, 0, 0, 664, 120, 1, 0, 0, 0, 665, 666, 5, 2984, 0, 0, 666, 667, 5, 3007, 0, 0, 667, 122, 1, 0, 0, 0, 668, 669, 5, 2984, 0, 0, 669, 670, 5, 3009, 0, 0, 670, 124, 1, 0, 0, 0, 671, 672, 5, 2984, 0, 0, 672, 673, 5, 3014, 0, 0, 673, 126, 1, 0, 0, 0, 674, 675, 5, 2984, 0, 0, 675, 676, 5, 3018, 0, 0, 676, 128, 1, 0, 0, 0, 677, 678, 5, 2986, 0, 0, 678, 130, 1, 0, 0, 0, 679, 680, 5, 2986, 0, 0, 680, 681, 5, 3007, 0, 0, 681, 132, 1, 0, 0, 0, 682, 683, 5, 2986, 0, 0, 683, 684, 5, 3009, 0, 0, 684, 134, 1, 0, 0, 0, 685, 686, 5, 2986, 0, 0, 686, 687, 5, 3014, 0, 0, 687, 136, 1, 0, 0, 0, 688, 689, 5, 2986, 0, 0, 689, 690, 5, 3018, 0, 0, 690, 138, 1, 0, 0, 0, 691, 692, 5, 2990, 0, 0, 692, 140, 1, 0, 0, 0, 693, 694, 5, 2990, 0, 0, 694, 695, 5, 3007, 0, 0, 695, 142, 1, 0, 0, 0, 696, 697, 5, 2990, 0, 0, 697, 698, 5, 3009, 0, 0, 698, 144, 1, 0, 0, 0, 699, 700, 5, 2990, 0, 0, 700, 701, 5, 3014, 0, 0, 701, 146, 1, 0, 0, 0, 702, 703, 5, 2990, 0, 0, 703, 704, 5, 3018, 0, 0, 704, 148, 1, 0, 0, 0, 705, 706, 5, 2991, 0, 0, 706, 150, 1, 0, 0, 0, 707, 708, 5, 2991, 0, 0, 708, 709, 5, 3007, 0, 0, 709, 152, 1, 0, 0, 0, 710, 711, 5, 2991, 0, 0, 711, 712, 5, 3009, 0, 0, 712, 154, 1, 0, 0, 0, 713, 714, 5, 2991, 0, 0, 714, 715, 5, 3014, 0, 0, 715, 156, 1, 0, 0, 0, 716, 717, 5, 2991, 0, 0, 717, 718, 5, 3018, 0, 0, 718, 158, 1, 0, 0, 0, 719, 720, 5, 2992, 0, 0, 720, 160, 1, 0, 0, 0, 721, 722, 5, 2992, 0, 0, 722, 723, 5, 3007, 0, 0, 723, 162, 1, 0, 0, 0, 724, 725, 5, 2992, 0, 0, 725, 726, 5, 3009, 0, 0, 726, 164, 1, 0, 0, 0, 727, 728, 5, 2992, 0, 0, 728, 729, 5, 3014, 0, 0, 729, 166, 1, 0, 0, 0, 730, 731, 5, 2992, 0, 0, 731, 732, 5, 3018, 0, 0, 732, 168, 1, 0, 0, 0, 733, 734, 5, 2994, 0, 0, 734, 170, 1, 0, 0, 0, 735, 736, 5, 2994, 0, 0, 736, 737, 5, 3007, 0, 0, 737, 172, 1, 0, 0, 0, 738, 739, 5, 2994, 0, 0, 739, 740, 5, 3009, 0, 0, 740, 174, 1, 0, 0, 0, 741, 742, 5, 2994, 0, 0, 742, 743, 5, 3014, 0, 0, 743, 176, 1, 0, 0, 0, 744, 745, 5, 2994, 0, 0, 745, 746, 5, 3018, 0, 0, 746, 178, 1, 0, 0, 0, 747, 748, 5, 2997, 0, 0, 748, 180, 1, 0, 0, 0, 749, 750, 5, 2997, 0, 0, 750, 751, 5, 3007, 0, 0, 751, 182, 1, 0, 0, 0, 752, 753, 5, 2997, 0, 0, 753, 754, 5, 3009, 0, 0, 754, 184, 1, 0, 0, 0, 755, 756, 5, 2997, 0, 0, 756, 757, 5, 3014, 0, 0, 757, 186, 1, 0, 0, 0, 758, 759, 5, 2997, 0, 0, 759, 760, 5, 3018, 0, 0, 760, 188, 1, 0, 0, 0, 761, 762, 5, 2996, 0, 0, 762, 190, 1, 0, 0, 0, 763, 764, 5, 2996, 0, 0, 764, 765, 5, 3007, 0, 0, 765, 192, 1, 0, 0, 0, 766, 767, 5, 2996, 0, 0, 767, 768, 5, 3009, 0, 0, 768, 194, 1, 0, 0, 0, 769, 770, 5, 2996, 0, 0, 770, 771, 5, 3014, 0, 0, 771, 196, 1, 0, 0, 0, 772, 773, 5, 2996, 0, 0, 773, 774, 5, 3018, 0, 0, 774, 198, 1, 0, 0, 0, 775, 776, 5, 2995, 0, 0, 776, 200, 1, 0, 0, 0, 777, 778, 5, 2995, 0, 0, 778, 779, 5, 3007, 0, 0, 779, 202, 1, 0, 0, 0, 780, 781, 5, 2995, 0, 0, 781, 782, 5, 3009, 0, 0, 782, 204, 1, 0, 0, 0, 783, 784, 5, 2995, 0, 0, 784, 785, 5, 3014, 0, 0, 785, 206, 1, 0, 0, 0, 786, 787, 5, 2995, 0, 0, 787, 788, 5, 3018, 0, 0, 788, 208, 1, 0, 0, 0, 789, 790, 5, 2993, 0, 0, 790, 210, 1, 0, 0, 0, 791, 792, 5, 2993, 0, 0, 792, 793, 5, 3007, 0, 0, 793, 212, 1, 0, 0, 0, 794, 795, 5, 2993, 0, 0, 795, 796, 5, 3009, 0, 0, 796, 214, 1, 0, 0, 0, 797, 798, 5, 2993, 0, 0, 798, 799, 5, 3014, 0, 0, 799, 216, 1, 0, 0, 0, 800, 801, 5, 2993, 0, 0, 801, 802, 5, 3018, 0, 0, 802, 218, 1, 0, 0, 0, 803, 804, 5, 2985, 0, 0, 804, 220, 1, 0, 0, 0, 805, 806, 5, 2985, 0, 0, 806, 807, 5, 3007, 0, 0, 807, 222, 1, 0, 0, 0, 808, 809, 5, 2985, 0, 0, 809, 810, 5, 3009, 0, 0, 810, 224, 1, 0, 0, 0, 811, 812, 5, 2985, 0, 0, 812, 813, 5, 3014, 0, 0, 813, 226, 1, 0, 0, 0, 814, 815, 5, 2985, 0, 0, 815, 816, 5, 3018, 0, 0, 816, 228, 1, 0, 0, 0, 817, 818, 5, 2950, 0, 0, 818, 230, 1, 0, 0, 0, 819, 820, 5, 2952, 0, 0, 820, 232, 1, 0, 0, 0, 821, 822, 5, 2954, 0, 0, 822, 234, 1, 0, 0, 0, 823, 824, 5, 2959, 0, 0, 824, 236, 1, 0, 0, 0, 825, 826, 5, 2960, 0, 0, 826, 238, 1, 0, 0, 0, 827, 828, 5, 2963, 0, 0, 828, 240, 1, 0, 0, 0, 829, 830, 5, 2962, 0, 0, 830, 831, 5, 2995, 0, 0, 831, 242, 1, 0, 0, 0, 832, 833, 5, 2965, 0, 0, 833, 834, 5, 3006, 0, 0, 834, 244, 1, 0, 0, 0, 835, 836, 5, 2965, 0, 0, 836, 837, 5, 3008, 0, 0, 837, 246, 1, 0, 0, 0, 838, 839, 5, 2965, 0, 0, 839, 840, 5, 3010, 0, 0, 840, 248, 1, 0, 0, 0, 841, 842, 5, 2965, 0, 0, 842, 843, 5, 3015, 0, 0, 843, 250, 1, 0, 0, 0, 844, 845, 5, 2965, 0, 0, 845, 846, 5, 3016, 0, 0, 846, 252, 1, 0, 0, 0, 847, 848, 5, 2965, 0, 0, 848, 849, 5, 3019, 0, 0, 849, 254, 1, 0, 0, 0, 850, 851, 5, 2965, 0, 0, 851, 852, 5, 3020, 0, 0, 852, 256, 1, 0, 0, 0, 853, 854, 5, 2969, 0, 0, 854, 855, 5, 3006, 0, 0, 855, 258, 1, 0, 0, 0, 856, 857, 5, 2969, 0, 0, 857, 858, 5, 3008, 0, 0, 858, 260, 1, 0, 0, 0, 859, 860, 5, 2969, 0, 0, 860, 861, 5, 3010, 0, 0, 861, 262, 1, 0, 0, 0, 862, 863, 5, 2969, 0, 0, 863, 864, 5, 3015, 0, 0, 864, 264, 1, 0, 0, 0, 865, 866, 5, 2969, 0, 0, 866, 867, 5, 3016, 0, 0, 867, 266, 1, 0, 0, 0, 868, 869, 5, 2969, 0, 0, 869, 870, 5, 3019, 0, 0, 870, 268, 1, 0, 0, 0, 871, 872, 5, 2969, 0, 0, 872, 873, 5, 3020, 0, 0, 873, 270, 1, 0, 0, 0, 874, 875, 5, 2970, 0, 0, 875, 876, 5, 3006, 0, 0, 876, 272, 1, 0, 0, 0, 877, 878, 5, 2970, 0, 0, 878, 879, 5, 3008, 0, 0, 879, 274, 1, 0, 0, 0, 880, 881, 5, 2970, 0, 0, 881, 882, 5, 3010, 0, 0, 882, 276, 1, 0, 0, 0, 883, 884, 5, 2970, 0, 0, 884, 885, 5, 3015, 0, 0, 885, 278, 1, 0, 0, 0, 886, 887, 5, 2970, 0, 0, 887, 888, 5, 3016, 0, 0, 888, 280, 1, 0, 0, 0, 889, 890, 5, 2970, 0, 0, 890, 891, 5, 3019, 0, 0, 891, 282, 1, 0, 0, 0, 892, 893, 5, 2970, 0, 0, 893, 894, 5, 3020, 0, 0, 894, 284, 1, 0, 0, 0, 895, 896, 5, 2974, 0, 0, 896, 897, 5, 3006, 0, 0, 897, 286, 1, 0, 0, 0, 898, 899, 5, 2974, 0, 0, 899, 900, 5, 3008, 0, 0, 900, 288, 1, 0, 0, 0, 901, 902, 5, 2974, 0, 0, 902, 903, 5, 3010, 0, 0, 903, 290, 1, 0, 0, 0, 904, 905, 5, 2974, 0, 0, 905, 906, 5, 3015, 0, 0, 906, 292, 1, 0, 0, 0, 907, 908, 5, 2974, 0, 0, 908, 909, 5, 3016, 0, 0, 909, 294, 1, 0, 0, 0, 910, 911, 5, 2974, 0, 0, 911, 912, 5, 3019, 0, 0, 912, 296, 1, 0, 0, 0, 913, 914, 5, 2974, 0, 0, 914, 915, 5, 3020, 0, 0, 915, 298, 1, 0, 0, 0, 916, 917, 5, 2975, 0, 0, 917, 918, 5, 3006, 0, 0, 918, 300, 1, 0, 0, 0, 919, 920, 5, 2975, 0, 0, 920, 921, 5, 3008, 0, 0, 921, 302, 1, 0, 0, 0, 922, 923, 5, 2975, 0, 0, 923, 924, 5, 3010, 0, 0, 924, 304, 1, 0, 0, 0, 925, 926, 5, 2975, 0, 0, 926, 927, 5, 3015, 0, 0, 927, 306, 1, 0, 0, 0, 928, 929, 5, 2975, 0, 0, 929, 930, 5, 3016, 0, 0, 930, 308, 1, 0, 0, 0, 931, 932, 5, 2975, 0, 0, 932, 933, 5, 3019, 0, 0, 933, 310, 1, 0, 0, 0, 934, 935, 5, 2975, 0, 0, 935, 936, 5, 3020, 0, 0, 936, 312, 1, 0, 0, 0, 937, 938, 5, 2979, 0, 0, 938, 939, 5, 3006, 0, 0, 939, 314, 1, 0, 0, 0, 940, 941, 5, 2979, 0, 0, 941, 942, 5, 3008, 0, 0, 942, 316, 1, 0, 0, 0, 943, 944, 5, 2979, 0, 0, 944, 945, 5, 3010, 0, 0, 945, 318, 1, 0, 0, 0, 946, 947, 5, 2979, 0, 0, 947, 948, 5, 3015, 0, 0, 948, 320, 1, 0, 0, 0, 949, 950, 5, 2979, 0, 0, 950, 951, 5, 3016, 0, 0, 951, 322, 1, 0, 0, 0, 952, 953, 5, 2979, 0, 0, 953, 954, 5, 3019, 0, 0, 954, 324, 1, 0, 0, 0, 955, 956, 5, 2979, 0, 0, 956, 957, 5, 3020, 0, 0, 957, 326, 1, 0, 0, 0, 958, 959, 5, 2980, 0, 0, 959, 960, 5, 3006, 0, 0, 960, 328, 1, 0, 0, 0, 961, 962, 5, 2980, 0, 0, 962, 963, 5, 3008, 0, 0, 963, 330, 1, 0, 0, 0, 964, 965, 5, 2980, 0, 0, 965, 966, 5, 3010, 0, 0, 966, 332, 1, 0, 0, 0, 967, 968, 5, 2980, 0, 0, 968, 969, 5, 3015, 0, 0, 969, 334, 1, 0, 0, 0, 970, 971, 5, 2980, 0, 0, 971, 972, 5, 3016, 0, 0, 972, 336, 1, 0, 0, 0, 973, 974, 5, 2980, 0, 0, 974, 975, 5, 3019, 0, 0, 975, 338, 1, 0, 0, 0, 976, 977, 5, 2980, 0, 0, 977, 978, 5, 3020, 0, 0, 978, 340, 1, 0, 0, 0, 979, 980, 5, 2984, 0, 0, 980, 981, 5, 3006, 0, 0, 981, 342, 1, 0, 0, 0, 982, 983, 5, 2984, 0, 0, 983, 984, 5, 3008, 0, 0, 984, 344, 1, 0, 0, 0, 985, 986, 5, 2984, 0, 0, 986, 987, 5, 3010, 0, 0, 987, 346, 1, 0, 0, 0, 988, 989, 5, 2984, 0, 0, 989, 990, 5, 3015, 0, 0, 990, 348, 1, 0, 0, 0, 991, 992, 5, 2984, 0, 0, 992, 993, 5, 3016, 0, 0, 993, 350, 1, 0, 0, 0, 994, 995, 5, 2984, 0, 0, 995, 996, 5, 3019, 0, 0, 996, 352, 1, 0, 0, 0, 997, 998, 5, 2984, 0, 0, 998, 999, 5, 3020, 0, 0, 999, 354, 1, 0, 0, 0, 1000, 1001, 5, 2986, 0, 0, 1001, 1002, 5, 3006, 0, 0, 1002, 356, 1, 0, 0, 0, 1003, 1004, 5, 2986, 0, 0, 1004, 1005, 5, 3008, 0, 0, 1005, 358, 1, 0, 0, 0, 1006, 1007, 5, 2986, 0, 0, 1007, 1008, 5, 3010, 0, 0, 1008, 360, 1, 0, 0, 0, 1009, 1010, 5, 2986, 0, 0, 1010, 1011, 5, 3015, 0, 0, 1011, 362, 1, 0, 0, 0, 1012, 1013, 5, 2986, 0, 0, 1013, 1014, 5, 3016, 0, 0, 1014, 364, 1, 0, 0, 0, 1015, 1016, 5, 2986, 0, 0, 1016, 1017, 5, 3019, 0, 0, 1017, 366, 1, 0, 0, 0, 1018, 1019, 5, 2986, 0, 0, 1019, 1020, 5, 3020, 0, 0, 1020, 368, 1, 0, 0, 0, 1021, 1022, 5, 2990, 0, 0, 1022, 1023, 5, 3006, 0, 0, 1023, 370, 1, 0, 0, 0, 1024, 1025, 5, 2990, 0, 0, 1025, 1026, 5, 3008, 0, 0, 1026, 372, 1, 0, 0, 0, 1027, 1028, 5, 2990, 0, 0, 1028, 1029, 5, 3010, 0, 0, 1029, 374, 1, 0, 0, 0, 1030, 1031, 5, 2990, 0, 0, 1031, 1032, 5, 3015, 0, 0, 1032, 376, 1, 0, 0, 0, 1033, 1034, 5, 2990, 0, 0, 1034, 1035, 5, 3016, 0, 0, 1035, 378, 1, 0, 0, 0, 1036, 1037, 5, 2990, 0, 0, 1037, 1038, 5, 3019, 0, 0, 1038, 380, 1, 0, 0, 0, 1039, 1040, 5, 2990, 0, 0, 1040, 1041, 5, 3020, 0, 0, 1041, 382, 1, 0, 0, 0, 1042, 1043, 5, 2991, 0, 0, 1043, 1044, 5, 3006, 0, 0, 1044, 384, 1, 0, 0, 0, 1045, 1046, 5, 2991, 0, 0, 1046, 1047, 5, 3008, 0, 0, 1047, 386, 1, 0, 0, 0, 1048, 1049, 5, 2991, 0, 0, 1049, 1050, 5, 3010, 0, 0, 1050, 388, 1, 0, 0, 0, 1051, 1052, 5, 2991, 0, 0, 1052, 1053, 5, 3015, 0, 0, 1053, 390, 1, 0, 0, 0, 1054, 1055, 5, 2991, 0, 0, 1055, 1056, 5, 3016, 0, 0, 1056, 392, 1, 0, 0, 0, 1057, 1058, 5, 2991, 0, 0, 1058, 1059, 5, 3019, 0, 0, 1059, 394, 1, 0, 0, 0, 1060, 1061, 5, 2991, 0, 0, 1061, 1062, 5, 3020, 0, 0, 1062, 396, 1, 0, 0, 0, 1063, 1064, 5, 2992, 0, 0, 1064, 1065, 5, 3006, 0, 0, 1065, 398, 1, 0, 0, 0, 1066, 1067, 5, 2992, 0, 0, 1067, 1068, 5, 3008, 0, 0, 1068, 400, 1, 0, 0, 0, 1069, 1070, 5, 2992, 0, 0, 1070, 1071, 5, 3010, 0, 0, 1071, 402, 1, 0, 0, 0, 1072, 1073, 5, 2992, 0, 0, 1073, 1074, 5, 3015, 0, 0, 1074, 404, 1, 0, 0, 0, 1075, 1076, 5, 2992, 0, 0, 1076, 1077, 5, 3016, 0, 0, 1077, 406, 1, 0, 0, 0, 1078, 1079, 5, 2992, 0, 0, 1079, 1080, 5, 3019, 0, 0, 1080, 408, 1, 0, 0, 0, 1081, 1082, 5, 2992, 0, 0, 1082, 1083, 5, 3020, 0, 0, 1083, 410, 1, 0, 0, 0, 1084, 1085, 5, 2994, 0, 0, 1085, 1086, 5, 3006, 0, 0, 1086, 412, 1, 0, 0, 0, 1087, 1088, 5, 2994, 0, 0, 1088, 1089, 5, 3008, 0, 0, 1089, 414, 1, 0, 0, 0, 1090, 1091, 5, 2994, 0, 0, 1091, 1092, 5, 3010, 0, 0, 1092, 416, 1, 0, 0, 0, 1093, 1094, 5, 2994, 0, 0, 1094, 1095, 5, 3015, 0, 0, 1095, 418, 1, 0, 0, 0, 1096, 1097, 5, 2994, 0, 0, 1097, 1098, 5, 3016, 0, 0, 1098, 420, 1, 0, 0, 0, 1099, 1100, 5, 2994, 0, 0, 1100, 1101, 5, 3019, 0, 0, 1101, 422, 1, 0, 0, 0, 1102, 1103, 5, 2994, 0, 0, 1103, 1104, 5, 3020, 0, 0, 1104, 424, 1, 0, 0, 0, 1105, 1106, 5, 2997, 0, 0, 1106, 1107, 5, 3006, 0, 0, 1107, 426, 1, 0, 0, 0, 1108, 1109, 5, 2997, 0, 0, 1109, 1110, 5, 3008, 0, 0, 1110, 428, 1, 0, 0, 0, 1111, 1112, 5, 2997, 0, 0, 1112, 1113, 5, 3010, 0, 0, 1113, 430, 1, 0, 0, 0, 1114, 1115, 5, 2997, 0, 0, 1115, 1116, 5, 3015, 0, 0, 1116, 432, 1, 0, 0, 0, 1117, 1118, 5, 2997, 0, 0, 1118, 1119, 5, 3016, 0, 0, 1119, 434, 1, 0, 0, 0, 1120, 1121, 5, 2997, 0, 0, 1121, 1122, 5, 3019, 0, 0, 1122, 436, 1, 0, 0, 0, 1123, 1124, 5, 2997, 0, 0, 1124, 1125, 5, 3020, 0, 0, 1125, 438, 1, 0, 0, 0, 1126, 1127, 5, 2996, 0, 0, 1127, 1128, 5, 3006, 0, 0, 1128, 440, 1, 0, 0, 0, 1129, 1130, 5, 2996, 0, 0, 1130, 1131, 5, 3008, 0, 0, 1131, 442, 1, 0, 0, 0, 1132, 1133, 5, 2996, 0, 0, 1133, 1134, 5, 3010, 0, 0, 1134, 444, 1, 0, 0, 0, 1135, 1136, 5, 2996, 0, 0, 1136, 1137, 5, 3015, 0, 0, 1137, 446, 1, 0, 0, 0, 1138, 1139, 5, 2996, 0, 0, 1139, 1140, 5, 3016, 0, 0, 1140, 448, 1, 0, 0, 0, 1141, 1142, 5, 2996, 0, 0, 1142, 1143, 5, 3019, 0, 0, 1143, 450, 1, 0, 0, 0, 1144, 1145, 5, 2996, 0, 0, 1145, 1146, 5, 3020, 0, 0, 1146, 452, 1, 0, 0, 0, 1147, 1148, 5, 2995, 0, 0, 1148, 1149, 5, 3006, 0, 0, 1149, 454, 1, 0, 0, 0, 1150, 1151, 5, 2995, 0, 0, 1151, 1152, 5, 3008, 0, 0, 1152, 456, 1, 0, 0, 0, 1153, 1154, 5, 2995, 0, 0, 1154, 1155, 5, 3010, 0, 0, 1155, 458, 1, 0, 0, 0, 1156, 1157, 5, 2995, 0, 0, 1157, 1158, 5, 3015, 0, 0, 1158, 460, 1, 0, 0, 0, 1159, 1160, 5, 2995, 0, 0, 1160, 1161, 5, 3016, 0, 0, 1161, 462, 1, 0, 0, 0, 1162, 1163, 5, 2995, 0, 0, 1163, 1164, 5, 3019, 0, 0, 1164, 464, 1, 0, 0, 0, 1165, 1166, 5, 2995, 0, 0, 1166, 1167, 5, 3020, 0, 0, 1167, 466, 1, 0, 0, 0, 1168, 1169, 5, 2993, 0, 0, 1169, 1170, 5, 3006, 0, 0, 1170, 468, 1, 0, 0, 0, 1171, 1172, 5, 2993, 0, 0, 1172, 1173, 5, 3008, 0, 0, 1173, 470, 1, 0, 0, 0, 1174, 1175, 5, 2993, 0, 0, 1175, 1176, 5, 3010, 0, 0, 1176, 472, 1, 0, 0, 0, 1177, 1178, 5, 2993, 0, 0, 1178, 1179, 5, 3015, 0, 0, 1179, 474, 1, 0, 0, 0, 1180, 1181, 5, 2993, 0, 0, 1181, 1182, 5, 3016, 0, 0, 1182, 476, 1, 0, 0, 0, 1183, 1184, 5, 2993, 0, 0, 1184, 1185, 5, 3019, 0, 0, 1185, 478, 1, 0, 0, 0, 1186, 1187, 5, 2993, 0, 0, 1187, 1188, 5, 3020, 0, 0, 1188, 480, 1, 0, 0, 0, 1189, 1190, 5, 2985, 0, 0, 1190, 1191, 5, 3006, 0, 0, 1191, 482, 1, 0, 0, 0, 1192, 1193, 5, 2985, 0, 0, 1193, 1194, 5, 3008, 0, 0, 1194, 484, 1, 0, 0, 0, 1195, 1196, 5, 2985, 0, 0, 1196, 1197, 5, 3010, 0, 0, 1197, 486, 1, 0, 0, 0, 1198, 1199, 5, 2985, 0, 0, 1199, 1200, 5, 3015, 0, 0, 1200, 488, 1, 0, 0, 0, 1201, 1202, 5, 2985, 0, 0, 1202, 1203, 5, 3016, 0, 0, 1203, 490, 1, 0, 0, 0, 1204, 1205, 5, 2985, 0, 0, 1205, 1206, 5, 3019, 0, 0, 1206, 492, 1, 0, 0, 0, 1207, 1208, 5, 2985, 0, 0, 1208, 1209, 5, 3020, 0, 0, 1209, 494, 1, 0, 0, 0, 1210, 1211, 5, 2947, 0, 0, 1211, 496, 1, 0, 0, 0, 1212, 1213, 5, 32, 0, 0, 1213, 498, 1, 0, 0, 0, 1, 0, 0] \ No newline at end of file +[4, 0, 249, 1219, 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, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 247, 4, 247, 1211, 8, 247, 11, 247, 12, 247, 1212, 1, 248, 3, 248, 1216, 8, 248, 1, 248, 1, 248, 0, 0, 249, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 1, 0, 1, 2, 0, 9, 9, 32, 32, 1220, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 1, 499, 1, 0, 0, 0, 3, 502, 1, 0, 0, 0, 5, 505, 1, 0, 0, 0, 7, 508, 1, 0, 0, 0, 9, 511, 1, 0, 0, 0, 11, 514, 1, 0, 0, 0, 13, 517, 1, 0, 0, 0, 15, 520, 1, 0, 0, 0, 17, 523, 1, 0, 0, 0, 19, 526, 1, 0, 0, 0, 21, 529, 1, 0, 0, 0, 23, 532, 1, 0, 0, 0, 25, 535, 1, 0, 0, 0, 27, 538, 1, 0, 0, 0, 29, 541, 1, 0, 0, 0, 31, 544, 1, 0, 0, 0, 33, 547, 1, 0, 0, 0, 35, 550, 1, 0, 0, 0, 37, 553, 1, 0, 0, 0, 39, 555, 1, 0, 0, 0, 41, 558, 1, 0, 0, 0, 43, 561, 1, 0, 0, 0, 45, 564, 1, 0, 0, 0, 47, 567, 1, 0, 0, 0, 49, 570, 1, 0, 0, 0, 51, 573, 1, 0, 0, 0, 53, 576, 1, 0, 0, 0, 55, 579, 1, 0, 0, 0, 57, 582, 1, 0, 0, 0, 59, 585, 1, 0, 0, 0, 61, 588, 1, 0, 0, 0, 63, 591, 1, 0, 0, 0, 65, 594, 1, 0, 0, 0, 67, 597, 1, 0, 0, 0, 69, 600, 1, 0, 0, 0, 71, 603, 1, 0, 0, 0, 73, 606, 1, 0, 0, 0, 75, 609, 1, 0, 0, 0, 77, 611, 1, 0, 0, 0, 79, 613, 1, 0, 0, 0, 81, 615, 1, 0, 0, 0, 83, 617, 1, 0, 0, 0, 85, 619, 1, 0, 0, 0, 87, 621, 1, 0, 0, 0, 89, 624, 1, 0, 0, 0, 91, 627, 1, 0, 0, 0, 93, 630, 1, 0, 0, 0, 95, 633, 1, 0, 0, 0, 97, 635, 1, 0, 0, 0, 99, 638, 1, 0, 0, 0, 101, 641, 1, 0, 0, 0, 103, 644, 1, 0, 0, 0, 105, 647, 1, 0, 0, 0, 107, 649, 1, 0, 0, 0, 109, 652, 1, 0, 0, 0, 111, 655, 1, 0, 0, 0, 113, 658, 1, 0, 0, 0, 115, 661, 1, 0, 0, 0, 117, 663, 1, 0, 0, 0, 119, 666, 1, 0, 0, 0, 121, 669, 1, 0, 0, 0, 123, 672, 1, 0, 0, 0, 125, 675, 1, 0, 0, 0, 127, 677, 1, 0, 0, 0, 129, 680, 1, 0, 0, 0, 131, 683, 1, 0, 0, 0, 133, 686, 1, 0, 0, 0, 135, 689, 1, 0, 0, 0, 137, 691, 1, 0, 0, 0, 139, 694, 1, 0, 0, 0, 141, 697, 1, 0, 0, 0, 143, 700, 1, 0, 0, 0, 145, 703, 1, 0, 0, 0, 147, 705, 1, 0, 0, 0, 149, 708, 1, 0, 0, 0, 151, 711, 1, 0, 0, 0, 153, 714, 1, 0, 0, 0, 155, 717, 1, 0, 0, 0, 157, 719, 1, 0, 0, 0, 159, 722, 1, 0, 0, 0, 161, 725, 1, 0, 0, 0, 163, 728, 1, 0, 0, 0, 165, 731, 1, 0, 0, 0, 167, 733, 1, 0, 0, 0, 169, 736, 1, 0, 0, 0, 171, 739, 1, 0, 0, 0, 173, 742, 1, 0, 0, 0, 175, 745, 1, 0, 0, 0, 177, 747, 1, 0, 0, 0, 179, 750, 1, 0, 0, 0, 181, 753, 1, 0, 0, 0, 183, 756, 1, 0, 0, 0, 185, 759, 1, 0, 0, 0, 187, 761, 1, 0, 0, 0, 189, 764, 1, 0, 0, 0, 191, 767, 1, 0, 0, 0, 193, 770, 1, 0, 0, 0, 195, 773, 1, 0, 0, 0, 197, 775, 1, 0, 0, 0, 199, 778, 1, 0, 0, 0, 201, 781, 1, 0, 0, 0, 203, 784, 1, 0, 0, 0, 205, 787, 1, 0, 0, 0, 207, 789, 1, 0, 0, 0, 209, 792, 1, 0, 0, 0, 211, 795, 1, 0, 0, 0, 213, 798, 1, 0, 0, 0, 215, 801, 1, 0, 0, 0, 217, 803, 1, 0, 0, 0, 219, 806, 1, 0, 0, 0, 221, 809, 1, 0, 0, 0, 223, 812, 1, 0, 0, 0, 225, 815, 1, 0, 0, 0, 227, 817, 1, 0, 0, 0, 229, 820, 1, 0, 0, 0, 231, 823, 1, 0, 0, 0, 233, 826, 1, 0, 0, 0, 235, 829, 1, 0, 0, 0, 237, 831, 1, 0, 0, 0, 239, 834, 1, 0, 0, 0, 241, 837, 1, 0, 0, 0, 243, 840, 1, 0, 0, 0, 245, 843, 1, 0, 0, 0, 247, 845, 1, 0, 0, 0, 249, 848, 1, 0, 0, 0, 251, 851, 1, 0, 0, 0, 253, 854, 1, 0, 0, 0, 255, 857, 1, 0, 0, 0, 257, 859, 1, 0, 0, 0, 259, 862, 1, 0, 0, 0, 261, 865, 1, 0, 0, 0, 263, 868, 1, 0, 0, 0, 265, 871, 1, 0, 0, 0, 267, 873, 1, 0, 0, 0, 269, 875, 1, 0, 0, 0, 271, 877, 1, 0, 0, 0, 273, 879, 1, 0, 0, 0, 275, 881, 1, 0, 0, 0, 277, 883, 1, 0, 0, 0, 279, 885, 1, 0, 0, 0, 281, 888, 1, 0, 0, 0, 283, 891, 1, 0, 0, 0, 285, 894, 1, 0, 0, 0, 287, 897, 1, 0, 0, 0, 289, 900, 1, 0, 0, 0, 291, 903, 1, 0, 0, 0, 293, 906, 1, 0, 0, 0, 295, 909, 1, 0, 0, 0, 297, 912, 1, 0, 0, 0, 299, 915, 1, 0, 0, 0, 301, 918, 1, 0, 0, 0, 303, 921, 1, 0, 0, 0, 305, 924, 1, 0, 0, 0, 307, 927, 1, 0, 0, 0, 309, 930, 1, 0, 0, 0, 311, 933, 1, 0, 0, 0, 313, 936, 1, 0, 0, 0, 315, 939, 1, 0, 0, 0, 317, 942, 1, 0, 0, 0, 319, 945, 1, 0, 0, 0, 321, 948, 1, 0, 0, 0, 323, 951, 1, 0, 0, 0, 325, 954, 1, 0, 0, 0, 327, 957, 1, 0, 0, 0, 329, 960, 1, 0, 0, 0, 331, 963, 1, 0, 0, 0, 333, 966, 1, 0, 0, 0, 335, 969, 1, 0, 0, 0, 337, 972, 1, 0, 0, 0, 339, 975, 1, 0, 0, 0, 341, 978, 1, 0, 0, 0, 343, 981, 1, 0, 0, 0, 345, 984, 1, 0, 0, 0, 347, 987, 1, 0, 0, 0, 349, 990, 1, 0, 0, 0, 351, 993, 1, 0, 0, 0, 353, 996, 1, 0, 0, 0, 355, 999, 1, 0, 0, 0, 357, 1002, 1, 0, 0, 0, 359, 1005, 1, 0, 0, 0, 361, 1008, 1, 0, 0, 0, 363, 1011, 1, 0, 0, 0, 365, 1014, 1, 0, 0, 0, 367, 1017, 1, 0, 0, 0, 369, 1020, 1, 0, 0, 0, 371, 1023, 1, 0, 0, 0, 373, 1026, 1, 0, 0, 0, 375, 1029, 1, 0, 0, 0, 377, 1032, 1, 0, 0, 0, 379, 1035, 1, 0, 0, 0, 381, 1038, 1, 0, 0, 0, 383, 1041, 1, 0, 0, 0, 385, 1044, 1, 0, 0, 0, 387, 1047, 1, 0, 0, 0, 389, 1050, 1, 0, 0, 0, 391, 1053, 1, 0, 0, 0, 393, 1056, 1, 0, 0, 0, 395, 1059, 1, 0, 0, 0, 397, 1062, 1, 0, 0, 0, 399, 1065, 1, 0, 0, 0, 401, 1068, 1, 0, 0, 0, 403, 1071, 1, 0, 0, 0, 405, 1074, 1, 0, 0, 0, 407, 1077, 1, 0, 0, 0, 409, 1080, 1, 0, 0, 0, 411, 1083, 1, 0, 0, 0, 413, 1086, 1, 0, 0, 0, 415, 1089, 1, 0, 0, 0, 417, 1092, 1, 0, 0, 0, 419, 1095, 1, 0, 0, 0, 421, 1098, 1, 0, 0, 0, 423, 1101, 1, 0, 0, 0, 425, 1104, 1, 0, 0, 0, 427, 1107, 1, 0, 0, 0, 429, 1110, 1, 0, 0, 0, 431, 1113, 1, 0, 0, 0, 433, 1116, 1, 0, 0, 0, 435, 1119, 1, 0, 0, 0, 437, 1122, 1, 0, 0, 0, 439, 1125, 1, 0, 0, 0, 441, 1128, 1, 0, 0, 0, 443, 1131, 1, 0, 0, 0, 445, 1134, 1, 0, 0, 0, 447, 1137, 1, 0, 0, 0, 449, 1140, 1, 0, 0, 0, 451, 1143, 1, 0, 0, 0, 453, 1146, 1, 0, 0, 0, 455, 1149, 1, 0, 0, 0, 457, 1152, 1, 0, 0, 0, 459, 1155, 1, 0, 0, 0, 461, 1158, 1, 0, 0, 0, 463, 1161, 1, 0, 0, 0, 465, 1164, 1, 0, 0, 0, 467, 1167, 1, 0, 0, 0, 469, 1170, 1, 0, 0, 0, 471, 1173, 1, 0, 0, 0, 473, 1176, 1, 0, 0, 0, 475, 1179, 1, 0, 0, 0, 477, 1182, 1, 0, 0, 0, 479, 1185, 1, 0, 0, 0, 481, 1188, 1, 0, 0, 0, 483, 1191, 1, 0, 0, 0, 485, 1194, 1, 0, 0, 0, 487, 1197, 1, 0, 0, 0, 489, 1200, 1, 0, 0, 0, 491, 1203, 1, 0, 0, 0, 493, 1206, 1, 0, 0, 0, 495, 1210, 1, 0, 0, 0, 497, 1215, 1, 0, 0, 0, 499, 500, 5, 2965, 0, 0, 500, 501, 5, 3021, 0, 0, 501, 2, 1, 0, 0, 0, 502, 503, 5, 2970, 0, 0, 503, 504, 5, 3021, 0, 0, 504, 4, 1, 0, 0, 0, 505, 506, 5, 2975, 0, 0, 506, 507, 5, 3021, 0, 0, 507, 6, 1, 0, 0, 0, 508, 509, 5, 2980, 0, 0, 509, 510, 5, 3021, 0, 0, 510, 8, 1, 0, 0, 0, 511, 512, 5, 2986, 0, 0, 512, 513, 5, 3021, 0, 0, 513, 10, 1, 0, 0, 0, 514, 515, 5, 2993, 0, 0, 515, 516, 5, 3021, 0, 0, 516, 12, 1, 0, 0, 0, 517, 518, 5, 2974, 0, 0, 518, 519, 5, 3021, 0, 0, 519, 14, 1, 0, 0, 0, 520, 521, 5, 2969, 0, 0, 521, 522, 5, 3021, 0, 0, 522, 16, 1, 0, 0, 0, 523, 524, 5, 2979, 0, 0, 524, 525, 5, 3021, 0, 0, 525, 18, 1, 0, 0, 0, 526, 527, 5, 2984, 0, 0, 527, 528, 5, 3021, 0, 0, 528, 20, 1, 0, 0, 0, 529, 530, 5, 2990, 0, 0, 530, 531, 5, 3021, 0, 0, 531, 22, 1, 0, 0, 0, 532, 533, 5, 2985, 0, 0, 533, 534, 5, 3021, 0, 0, 534, 24, 1, 0, 0, 0, 535, 536, 5, 2991, 0, 0, 536, 537, 5, 3021, 0, 0, 537, 26, 1, 0, 0, 0, 538, 539, 5, 2992, 0, 0, 539, 540, 5, 3021, 0, 0, 540, 28, 1, 0, 0, 0, 541, 542, 5, 2994, 0, 0, 542, 543, 5, 3021, 0, 0, 543, 30, 1, 0, 0, 0, 544, 545, 5, 2997, 0, 0, 545, 546, 5, 3021, 0, 0, 546, 32, 1, 0, 0, 0, 547, 548, 5, 2996, 0, 0, 548, 549, 5, 3021, 0, 0, 549, 34, 1, 0, 0, 0, 550, 551, 5, 2995, 0, 0, 551, 552, 5, 3021, 0, 0, 552, 36, 1, 0, 0, 0, 553, 554, 5, 2947, 0, 0, 554, 38, 1, 0, 0, 0, 555, 556, 5, 2965, 0, 0, 556, 557, 5, 3016, 0, 0, 557, 40, 1, 0, 0, 0, 558, 559, 5, 2969, 0, 0, 559, 560, 5, 3016, 0, 0, 560, 42, 1, 0, 0, 0, 561, 562, 5, 2970, 0, 0, 562, 563, 5, 3016, 0, 0, 563, 44, 1, 0, 0, 0, 564, 565, 5, 2974, 0, 0, 565, 566, 5, 3016, 0, 0, 566, 46, 1, 0, 0, 0, 567, 568, 5, 2975, 0, 0, 568, 569, 5, 3016, 0, 0, 569, 48, 1, 0, 0, 0, 570, 571, 5, 2979, 0, 0, 571, 572, 5, 3016, 0, 0, 572, 50, 1, 0, 0, 0, 573, 574, 5, 2980, 0, 0, 574, 575, 5, 3016, 0, 0, 575, 52, 1, 0, 0, 0, 576, 577, 5, 2984, 0, 0, 577, 578, 5, 3016, 0, 0, 578, 54, 1, 0, 0, 0, 579, 580, 5, 2986, 0, 0, 580, 581, 5, 3016, 0, 0, 581, 56, 1, 0, 0, 0, 582, 583, 5, 2990, 0, 0, 583, 584, 5, 3016, 0, 0, 584, 58, 1, 0, 0, 0, 585, 586, 5, 2991, 0, 0, 586, 587, 5, 3016, 0, 0, 587, 60, 1, 0, 0, 0, 588, 589, 5, 2992, 0, 0, 589, 590, 5, 3016, 0, 0, 590, 62, 1, 0, 0, 0, 591, 592, 5, 2994, 0, 0, 592, 593, 5, 3016, 0, 0, 593, 64, 1, 0, 0, 0, 594, 595, 5, 2997, 0, 0, 595, 596, 5, 3016, 0, 0, 596, 66, 1, 0, 0, 0, 597, 598, 5, 2996, 0, 0, 598, 599, 5, 3016, 0, 0, 599, 68, 1, 0, 0, 0, 600, 601, 5, 2995, 0, 0, 601, 602, 5, 3016, 0, 0, 602, 70, 1, 0, 0, 0, 603, 604, 5, 2993, 0, 0, 604, 605, 5, 3016, 0, 0, 605, 72, 1, 0, 0, 0, 606, 607, 5, 2985, 0, 0, 607, 608, 5, 3016, 0, 0, 608, 74, 1, 0, 0, 0, 609, 610, 5, 2949, 0, 0, 610, 76, 1, 0, 0, 0, 611, 612, 5, 2951, 0, 0, 612, 78, 1, 0, 0, 0, 613, 614, 5, 2953, 0, 0, 614, 80, 1, 0, 0, 0, 615, 616, 5, 2958, 0, 0, 616, 82, 1, 0, 0, 0, 617, 618, 5, 2962, 0, 0, 618, 84, 1, 0, 0, 0, 619, 620, 5, 2965, 0, 0, 620, 86, 1, 0, 0, 0, 621, 622, 5, 2965, 0, 0, 622, 623, 5, 3007, 0, 0, 623, 88, 1, 0, 0, 0, 624, 625, 5, 2965, 0, 0, 625, 626, 5, 3009, 0, 0, 626, 90, 1, 0, 0, 0, 627, 628, 5, 2965, 0, 0, 628, 629, 5, 3014, 0, 0, 629, 92, 1, 0, 0, 0, 630, 631, 5, 2965, 0, 0, 631, 632, 5, 3018, 0, 0, 632, 94, 1, 0, 0, 0, 633, 634, 5, 2969, 0, 0, 634, 96, 1, 0, 0, 0, 635, 636, 5, 2969, 0, 0, 636, 637, 5, 3007, 0, 0, 637, 98, 1, 0, 0, 0, 638, 639, 5, 2969, 0, 0, 639, 640, 5, 3009, 0, 0, 640, 100, 1, 0, 0, 0, 641, 642, 5, 2969, 0, 0, 642, 643, 5, 3014, 0, 0, 643, 102, 1, 0, 0, 0, 644, 645, 5, 2969, 0, 0, 645, 646, 5, 3018, 0, 0, 646, 104, 1, 0, 0, 0, 647, 648, 5, 2970, 0, 0, 648, 106, 1, 0, 0, 0, 649, 650, 5, 2970, 0, 0, 650, 651, 5, 3007, 0, 0, 651, 108, 1, 0, 0, 0, 652, 653, 5, 2970, 0, 0, 653, 654, 5, 3009, 0, 0, 654, 110, 1, 0, 0, 0, 655, 656, 5, 2970, 0, 0, 656, 657, 5, 3014, 0, 0, 657, 112, 1, 0, 0, 0, 658, 659, 5, 2970, 0, 0, 659, 660, 5, 3018, 0, 0, 660, 114, 1, 0, 0, 0, 661, 662, 5, 2974, 0, 0, 662, 116, 1, 0, 0, 0, 663, 664, 5, 2974, 0, 0, 664, 665, 5, 3007, 0, 0, 665, 118, 1, 0, 0, 0, 666, 667, 5, 2974, 0, 0, 667, 668, 5, 3009, 0, 0, 668, 120, 1, 0, 0, 0, 669, 670, 5, 2974, 0, 0, 670, 671, 5, 3014, 0, 0, 671, 122, 1, 0, 0, 0, 672, 673, 5, 2974, 0, 0, 673, 674, 5, 3018, 0, 0, 674, 124, 1, 0, 0, 0, 675, 676, 5, 2975, 0, 0, 676, 126, 1, 0, 0, 0, 677, 678, 5, 2975, 0, 0, 678, 679, 5, 3007, 0, 0, 679, 128, 1, 0, 0, 0, 680, 681, 5, 2975, 0, 0, 681, 682, 5, 3009, 0, 0, 682, 130, 1, 0, 0, 0, 683, 684, 5, 2975, 0, 0, 684, 685, 5, 3014, 0, 0, 685, 132, 1, 0, 0, 0, 686, 687, 5, 2975, 0, 0, 687, 688, 5, 3018, 0, 0, 688, 134, 1, 0, 0, 0, 689, 690, 5, 2979, 0, 0, 690, 136, 1, 0, 0, 0, 691, 692, 5, 2979, 0, 0, 692, 693, 5, 3007, 0, 0, 693, 138, 1, 0, 0, 0, 694, 695, 5, 2979, 0, 0, 695, 696, 5, 3009, 0, 0, 696, 140, 1, 0, 0, 0, 697, 698, 5, 2979, 0, 0, 698, 699, 5, 3014, 0, 0, 699, 142, 1, 0, 0, 0, 700, 701, 5, 2979, 0, 0, 701, 702, 5, 3018, 0, 0, 702, 144, 1, 0, 0, 0, 703, 704, 5, 2980, 0, 0, 704, 146, 1, 0, 0, 0, 705, 706, 5, 2980, 0, 0, 706, 707, 5, 3007, 0, 0, 707, 148, 1, 0, 0, 0, 708, 709, 5, 2980, 0, 0, 709, 710, 5, 3009, 0, 0, 710, 150, 1, 0, 0, 0, 711, 712, 5, 2980, 0, 0, 712, 713, 5, 3014, 0, 0, 713, 152, 1, 0, 0, 0, 714, 715, 5, 2980, 0, 0, 715, 716, 5, 3018, 0, 0, 716, 154, 1, 0, 0, 0, 717, 718, 5, 2984, 0, 0, 718, 156, 1, 0, 0, 0, 719, 720, 5, 2984, 0, 0, 720, 721, 5, 3007, 0, 0, 721, 158, 1, 0, 0, 0, 722, 723, 5, 2984, 0, 0, 723, 724, 5, 3009, 0, 0, 724, 160, 1, 0, 0, 0, 725, 726, 5, 2984, 0, 0, 726, 727, 5, 3014, 0, 0, 727, 162, 1, 0, 0, 0, 728, 729, 5, 2984, 0, 0, 729, 730, 5, 3018, 0, 0, 730, 164, 1, 0, 0, 0, 731, 732, 5, 2986, 0, 0, 732, 166, 1, 0, 0, 0, 733, 734, 5, 2986, 0, 0, 734, 735, 5, 3007, 0, 0, 735, 168, 1, 0, 0, 0, 736, 737, 5, 2986, 0, 0, 737, 738, 5, 3009, 0, 0, 738, 170, 1, 0, 0, 0, 739, 740, 5, 2986, 0, 0, 740, 741, 5, 3014, 0, 0, 741, 172, 1, 0, 0, 0, 742, 743, 5, 2986, 0, 0, 743, 744, 5, 3018, 0, 0, 744, 174, 1, 0, 0, 0, 745, 746, 5, 2990, 0, 0, 746, 176, 1, 0, 0, 0, 747, 748, 5, 2990, 0, 0, 748, 749, 5, 3007, 0, 0, 749, 178, 1, 0, 0, 0, 750, 751, 5, 2990, 0, 0, 751, 752, 5, 3009, 0, 0, 752, 180, 1, 0, 0, 0, 753, 754, 5, 2990, 0, 0, 754, 755, 5, 3014, 0, 0, 755, 182, 1, 0, 0, 0, 756, 757, 5, 2990, 0, 0, 757, 758, 5, 3018, 0, 0, 758, 184, 1, 0, 0, 0, 759, 760, 5, 2991, 0, 0, 760, 186, 1, 0, 0, 0, 761, 762, 5, 2991, 0, 0, 762, 763, 5, 3007, 0, 0, 763, 188, 1, 0, 0, 0, 764, 765, 5, 2991, 0, 0, 765, 766, 5, 3009, 0, 0, 766, 190, 1, 0, 0, 0, 767, 768, 5, 2991, 0, 0, 768, 769, 5, 3014, 0, 0, 769, 192, 1, 0, 0, 0, 770, 771, 5, 2991, 0, 0, 771, 772, 5, 3018, 0, 0, 772, 194, 1, 0, 0, 0, 773, 774, 5, 2992, 0, 0, 774, 196, 1, 0, 0, 0, 775, 776, 5, 2992, 0, 0, 776, 777, 5, 3007, 0, 0, 777, 198, 1, 0, 0, 0, 778, 779, 5, 2992, 0, 0, 779, 780, 5, 3009, 0, 0, 780, 200, 1, 0, 0, 0, 781, 782, 5, 2992, 0, 0, 782, 783, 5, 3014, 0, 0, 783, 202, 1, 0, 0, 0, 784, 785, 5, 2992, 0, 0, 785, 786, 5, 3018, 0, 0, 786, 204, 1, 0, 0, 0, 787, 788, 5, 2994, 0, 0, 788, 206, 1, 0, 0, 0, 789, 790, 5, 2994, 0, 0, 790, 791, 5, 3007, 0, 0, 791, 208, 1, 0, 0, 0, 792, 793, 5, 2994, 0, 0, 793, 794, 5, 3009, 0, 0, 794, 210, 1, 0, 0, 0, 795, 796, 5, 2994, 0, 0, 796, 797, 5, 3014, 0, 0, 797, 212, 1, 0, 0, 0, 798, 799, 5, 2994, 0, 0, 799, 800, 5, 3018, 0, 0, 800, 214, 1, 0, 0, 0, 801, 802, 5, 2997, 0, 0, 802, 216, 1, 0, 0, 0, 803, 804, 5, 2997, 0, 0, 804, 805, 5, 3007, 0, 0, 805, 218, 1, 0, 0, 0, 806, 807, 5, 2997, 0, 0, 807, 808, 5, 3009, 0, 0, 808, 220, 1, 0, 0, 0, 809, 810, 5, 2997, 0, 0, 810, 811, 5, 3014, 0, 0, 811, 222, 1, 0, 0, 0, 812, 813, 5, 2997, 0, 0, 813, 814, 5, 3018, 0, 0, 814, 224, 1, 0, 0, 0, 815, 816, 5, 2996, 0, 0, 816, 226, 1, 0, 0, 0, 817, 818, 5, 2996, 0, 0, 818, 819, 5, 3007, 0, 0, 819, 228, 1, 0, 0, 0, 820, 821, 5, 2996, 0, 0, 821, 822, 5, 3009, 0, 0, 822, 230, 1, 0, 0, 0, 823, 824, 5, 2996, 0, 0, 824, 825, 5, 3014, 0, 0, 825, 232, 1, 0, 0, 0, 826, 827, 5, 2996, 0, 0, 827, 828, 5, 3018, 0, 0, 828, 234, 1, 0, 0, 0, 829, 830, 5, 2995, 0, 0, 830, 236, 1, 0, 0, 0, 831, 832, 5, 2995, 0, 0, 832, 833, 5, 3007, 0, 0, 833, 238, 1, 0, 0, 0, 834, 835, 5, 2995, 0, 0, 835, 836, 5, 3009, 0, 0, 836, 240, 1, 0, 0, 0, 837, 838, 5, 2995, 0, 0, 838, 839, 5, 3014, 0, 0, 839, 242, 1, 0, 0, 0, 840, 841, 5, 2995, 0, 0, 841, 842, 5, 3018, 0, 0, 842, 244, 1, 0, 0, 0, 843, 844, 5, 2993, 0, 0, 844, 246, 1, 0, 0, 0, 845, 846, 5, 2993, 0, 0, 846, 847, 5, 3007, 0, 0, 847, 248, 1, 0, 0, 0, 848, 849, 5, 2993, 0, 0, 849, 850, 5, 3009, 0, 0, 850, 250, 1, 0, 0, 0, 851, 852, 5, 2993, 0, 0, 852, 853, 5, 3014, 0, 0, 853, 252, 1, 0, 0, 0, 854, 855, 5, 2993, 0, 0, 855, 856, 5, 3018, 0, 0, 856, 254, 1, 0, 0, 0, 857, 858, 5, 2985, 0, 0, 858, 256, 1, 0, 0, 0, 859, 860, 5, 2985, 0, 0, 860, 861, 5, 3007, 0, 0, 861, 258, 1, 0, 0, 0, 862, 863, 5, 2985, 0, 0, 863, 864, 5, 3009, 0, 0, 864, 260, 1, 0, 0, 0, 865, 866, 5, 2985, 0, 0, 866, 867, 5, 3014, 0, 0, 867, 262, 1, 0, 0, 0, 868, 869, 5, 2985, 0, 0, 869, 870, 5, 3018, 0, 0, 870, 264, 1, 0, 0, 0, 871, 872, 5, 2950, 0, 0, 872, 266, 1, 0, 0, 0, 873, 874, 5, 2952, 0, 0, 874, 268, 1, 0, 0, 0, 875, 876, 5, 2954, 0, 0, 876, 270, 1, 0, 0, 0, 877, 878, 5, 2959, 0, 0, 878, 272, 1, 0, 0, 0, 879, 880, 5, 2960, 0, 0, 880, 274, 1, 0, 0, 0, 881, 882, 5, 2963, 0, 0, 882, 276, 1, 0, 0, 0, 883, 884, 5, 2964, 0, 0, 884, 278, 1, 0, 0, 0, 885, 886, 5, 2965, 0, 0, 886, 887, 5, 3006, 0, 0, 887, 280, 1, 0, 0, 0, 888, 889, 5, 2965, 0, 0, 889, 890, 5, 3008, 0, 0, 890, 282, 1, 0, 0, 0, 891, 892, 5, 2965, 0, 0, 892, 893, 5, 3010, 0, 0, 893, 284, 1, 0, 0, 0, 894, 895, 5, 2965, 0, 0, 895, 896, 5, 3015, 0, 0, 896, 286, 1, 0, 0, 0, 897, 898, 5, 2965, 0, 0, 898, 899, 5, 3019, 0, 0, 899, 288, 1, 0, 0, 0, 900, 901, 5, 2965, 0, 0, 901, 902, 5, 3020, 0, 0, 902, 290, 1, 0, 0, 0, 903, 904, 5, 2969, 0, 0, 904, 905, 5, 3006, 0, 0, 905, 292, 1, 0, 0, 0, 906, 907, 5, 2969, 0, 0, 907, 908, 5, 3008, 0, 0, 908, 294, 1, 0, 0, 0, 909, 910, 5, 2969, 0, 0, 910, 911, 5, 3010, 0, 0, 911, 296, 1, 0, 0, 0, 912, 913, 5, 2969, 0, 0, 913, 914, 5, 3015, 0, 0, 914, 298, 1, 0, 0, 0, 915, 916, 5, 2969, 0, 0, 916, 917, 5, 3019, 0, 0, 917, 300, 1, 0, 0, 0, 918, 919, 5, 2969, 0, 0, 919, 920, 5, 3020, 0, 0, 920, 302, 1, 0, 0, 0, 921, 922, 5, 2970, 0, 0, 922, 923, 5, 3006, 0, 0, 923, 304, 1, 0, 0, 0, 924, 925, 5, 2970, 0, 0, 925, 926, 5, 3008, 0, 0, 926, 306, 1, 0, 0, 0, 927, 928, 5, 2970, 0, 0, 928, 929, 5, 3010, 0, 0, 929, 308, 1, 0, 0, 0, 930, 931, 5, 2970, 0, 0, 931, 932, 5, 3015, 0, 0, 932, 310, 1, 0, 0, 0, 933, 934, 5, 2970, 0, 0, 934, 935, 5, 3019, 0, 0, 935, 312, 1, 0, 0, 0, 936, 937, 5, 2970, 0, 0, 937, 938, 5, 3020, 0, 0, 938, 314, 1, 0, 0, 0, 939, 940, 5, 2974, 0, 0, 940, 941, 5, 3006, 0, 0, 941, 316, 1, 0, 0, 0, 942, 943, 5, 2974, 0, 0, 943, 944, 5, 3008, 0, 0, 944, 318, 1, 0, 0, 0, 945, 946, 5, 2974, 0, 0, 946, 947, 5, 3010, 0, 0, 947, 320, 1, 0, 0, 0, 948, 949, 5, 2974, 0, 0, 949, 950, 5, 3015, 0, 0, 950, 322, 1, 0, 0, 0, 951, 952, 5, 2974, 0, 0, 952, 953, 5, 3019, 0, 0, 953, 324, 1, 0, 0, 0, 954, 955, 5, 2974, 0, 0, 955, 956, 5, 3020, 0, 0, 956, 326, 1, 0, 0, 0, 957, 958, 5, 2975, 0, 0, 958, 959, 5, 3006, 0, 0, 959, 328, 1, 0, 0, 0, 960, 961, 5, 2975, 0, 0, 961, 962, 5, 3008, 0, 0, 962, 330, 1, 0, 0, 0, 963, 964, 5, 2975, 0, 0, 964, 965, 5, 3010, 0, 0, 965, 332, 1, 0, 0, 0, 966, 967, 5, 2975, 0, 0, 967, 968, 5, 3015, 0, 0, 968, 334, 1, 0, 0, 0, 969, 970, 5, 2975, 0, 0, 970, 971, 5, 3019, 0, 0, 971, 336, 1, 0, 0, 0, 972, 973, 5, 2975, 0, 0, 973, 974, 5, 3020, 0, 0, 974, 338, 1, 0, 0, 0, 975, 976, 5, 2979, 0, 0, 976, 977, 5, 3006, 0, 0, 977, 340, 1, 0, 0, 0, 978, 979, 5, 2979, 0, 0, 979, 980, 5, 3008, 0, 0, 980, 342, 1, 0, 0, 0, 981, 982, 5, 2979, 0, 0, 982, 983, 5, 3010, 0, 0, 983, 344, 1, 0, 0, 0, 984, 985, 5, 2979, 0, 0, 985, 986, 5, 3015, 0, 0, 986, 346, 1, 0, 0, 0, 987, 988, 5, 2979, 0, 0, 988, 989, 5, 3019, 0, 0, 989, 348, 1, 0, 0, 0, 990, 991, 5, 2979, 0, 0, 991, 992, 5, 3020, 0, 0, 992, 350, 1, 0, 0, 0, 993, 994, 5, 2980, 0, 0, 994, 995, 5, 3006, 0, 0, 995, 352, 1, 0, 0, 0, 996, 997, 5, 2980, 0, 0, 997, 998, 5, 3008, 0, 0, 998, 354, 1, 0, 0, 0, 999, 1000, 5, 2980, 0, 0, 1000, 1001, 5, 3010, 0, 0, 1001, 356, 1, 0, 0, 0, 1002, 1003, 5, 2980, 0, 0, 1003, 1004, 5, 3015, 0, 0, 1004, 358, 1, 0, 0, 0, 1005, 1006, 5, 2980, 0, 0, 1006, 1007, 5, 3019, 0, 0, 1007, 360, 1, 0, 0, 0, 1008, 1009, 5, 2980, 0, 0, 1009, 1010, 5, 3020, 0, 0, 1010, 362, 1, 0, 0, 0, 1011, 1012, 5, 2984, 0, 0, 1012, 1013, 5, 3006, 0, 0, 1013, 364, 1, 0, 0, 0, 1014, 1015, 5, 2984, 0, 0, 1015, 1016, 5, 3008, 0, 0, 1016, 366, 1, 0, 0, 0, 1017, 1018, 5, 2984, 0, 0, 1018, 1019, 5, 3010, 0, 0, 1019, 368, 1, 0, 0, 0, 1020, 1021, 5, 2984, 0, 0, 1021, 1022, 5, 3015, 0, 0, 1022, 370, 1, 0, 0, 0, 1023, 1024, 5, 2984, 0, 0, 1024, 1025, 5, 3019, 0, 0, 1025, 372, 1, 0, 0, 0, 1026, 1027, 5, 2984, 0, 0, 1027, 1028, 5, 3020, 0, 0, 1028, 374, 1, 0, 0, 0, 1029, 1030, 5, 2986, 0, 0, 1030, 1031, 5, 3006, 0, 0, 1031, 376, 1, 0, 0, 0, 1032, 1033, 5, 2986, 0, 0, 1033, 1034, 5, 3008, 0, 0, 1034, 378, 1, 0, 0, 0, 1035, 1036, 5, 2986, 0, 0, 1036, 1037, 5, 3010, 0, 0, 1037, 380, 1, 0, 0, 0, 1038, 1039, 5, 2986, 0, 0, 1039, 1040, 5, 3015, 0, 0, 1040, 382, 1, 0, 0, 0, 1041, 1042, 5, 2986, 0, 0, 1042, 1043, 5, 3019, 0, 0, 1043, 384, 1, 0, 0, 0, 1044, 1045, 5, 2986, 0, 0, 1045, 1046, 5, 3020, 0, 0, 1046, 386, 1, 0, 0, 0, 1047, 1048, 5, 2990, 0, 0, 1048, 1049, 5, 3006, 0, 0, 1049, 388, 1, 0, 0, 0, 1050, 1051, 5, 2990, 0, 0, 1051, 1052, 5, 3008, 0, 0, 1052, 390, 1, 0, 0, 0, 1053, 1054, 5, 2990, 0, 0, 1054, 1055, 5, 3010, 0, 0, 1055, 392, 1, 0, 0, 0, 1056, 1057, 5, 2990, 0, 0, 1057, 1058, 5, 3015, 0, 0, 1058, 394, 1, 0, 0, 0, 1059, 1060, 5, 2990, 0, 0, 1060, 1061, 5, 3019, 0, 0, 1061, 396, 1, 0, 0, 0, 1062, 1063, 5, 2990, 0, 0, 1063, 1064, 5, 3020, 0, 0, 1064, 398, 1, 0, 0, 0, 1065, 1066, 5, 2991, 0, 0, 1066, 1067, 5, 3006, 0, 0, 1067, 400, 1, 0, 0, 0, 1068, 1069, 5, 2991, 0, 0, 1069, 1070, 5, 3008, 0, 0, 1070, 402, 1, 0, 0, 0, 1071, 1072, 5, 2991, 0, 0, 1072, 1073, 5, 3010, 0, 0, 1073, 404, 1, 0, 0, 0, 1074, 1075, 5, 2991, 0, 0, 1075, 1076, 5, 3015, 0, 0, 1076, 406, 1, 0, 0, 0, 1077, 1078, 5, 2991, 0, 0, 1078, 1079, 5, 3019, 0, 0, 1079, 408, 1, 0, 0, 0, 1080, 1081, 5, 2991, 0, 0, 1081, 1082, 5, 3020, 0, 0, 1082, 410, 1, 0, 0, 0, 1083, 1084, 5, 2992, 0, 0, 1084, 1085, 5, 3006, 0, 0, 1085, 412, 1, 0, 0, 0, 1086, 1087, 5, 2992, 0, 0, 1087, 1088, 5, 3008, 0, 0, 1088, 414, 1, 0, 0, 0, 1089, 1090, 5, 2992, 0, 0, 1090, 1091, 5, 3010, 0, 0, 1091, 416, 1, 0, 0, 0, 1092, 1093, 5, 2992, 0, 0, 1093, 1094, 5, 3015, 0, 0, 1094, 418, 1, 0, 0, 0, 1095, 1096, 5, 2992, 0, 0, 1096, 1097, 5, 3019, 0, 0, 1097, 420, 1, 0, 0, 0, 1098, 1099, 5, 2992, 0, 0, 1099, 1100, 5, 3020, 0, 0, 1100, 422, 1, 0, 0, 0, 1101, 1102, 5, 2994, 0, 0, 1102, 1103, 5, 3006, 0, 0, 1103, 424, 1, 0, 0, 0, 1104, 1105, 5, 2994, 0, 0, 1105, 1106, 5, 3008, 0, 0, 1106, 426, 1, 0, 0, 0, 1107, 1108, 5, 2994, 0, 0, 1108, 1109, 5, 3010, 0, 0, 1109, 428, 1, 0, 0, 0, 1110, 1111, 5, 2994, 0, 0, 1111, 1112, 5, 3015, 0, 0, 1112, 430, 1, 0, 0, 0, 1113, 1114, 5, 2994, 0, 0, 1114, 1115, 5, 3019, 0, 0, 1115, 432, 1, 0, 0, 0, 1116, 1117, 5, 2994, 0, 0, 1117, 1118, 5, 3020, 0, 0, 1118, 434, 1, 0, 0, 0, 1119, 1120, 5, 2997, 0, 0, 1120, 1121, 5, 3006, 0, 0, 1121, 436, 1, 0, 0, 0, 1122, 1123, 5, 2997, 0, 0, 1123, 1124, 5, 3008, 0, 0, 1124, 438, 1, 0, 0, 0, 1125, 1126, 5, 2997, 0, 0, 1126, 1127, 5, 3010, 0, 0, 1127, 440, 1, 0, 0, 0, 1128, 1129, 5, 2997, 0, 0, 1129, 1130, 5, 3015, 0, 0, 1130, 442, 1, 0, 0, 0, 1131, 1132, 5, 2997, 0, 0, 1132, 1133, 5, 3019, 0, 0, 1133, 444, 1, 0, 0, 0, 1134, 1135, 5, 2997, 0, 0, 1135, 1136, 5, 3020, 0, 0, 1136, 446, 1, 0, 0, 0, 1137, 1138, 5, 2996, 0, 0, 1138, 1139, 5, 3006, 0, 0, 1139, 448, 1, 0, 0, 0, 1140, 1141, 5, 2996, 0, 0, 1141, 1142, 5, 3008, 0, 0, 1142, 450, 1, 0, 0, 0, 1143, 1144, 5, 2996, 0, 0, 1144, 1145, 5, 3010, 0, 0, 1145, 452, 1, 0, 0, 0, 1146, 1147, 5, 2996, 0, 0, 1147, 1148, 5, 3015, 0, 0, 1148, 454, 1, 0, 0, 0, 1149, 1150, 5, 2996, 0, 0, 1150, 1151, 5, 3019, 0, 0, 1151, 456, 1, 0, 0, 0, 1152, 1153, 5, 2996, 0, 0, 1153, 1154, 5, 3020, 0, 0, 1154, 458, 1, 0, 0, 0, 1155, 1156, 5, 2995, 0, 0, 1156, 1157, 5, 3006, 0, 0, 1157, 460, 1, 0, 0, 0, 1158, 1159, 5, 2995, 0, 0, 1159, 1160, 5, 3008, 0, 0, 1160, 462, 1, 0, 0, 0, 1161, 1162, 5, 2995, 0, 0, 1162, 1163, 5, 3010, 0, 0, 1163, 464, 1, 0, 0, 0, 1164, 1165, 5, 2995, 0, 0, 1165, 1166, 5, 3015, 0, 0, 1166, 466, 1, 0, 0, 0, 1167, 1168, 5, 2995, 0, 0, 1168, 1169, 5, 3019, 0, 0, 1169, 468, 1, 0, 0, 0, 1170, 1171, 5, 2995, 0, 0, 1171, 1172, 5, 3020, 0, 0, 1172, 470, 1, 0, 0, 0, 1173, 1174, 5, 2993, 0, 0, 1174, 1175, 5, 3006, 0, 0, 1175, 472, 1, 0, 0, 0, 1176, 1177, 5, 2993, 0, 0, 1177, 1178, 5, 3008, 0, 0, 1178, 474, 1, 0, 0, 0, 1179, 1180, 5, 2993, 0, 0, 1180, 1181, 5, 3010, 0, 0, 1181, 476, 1, 0, 0, 0, 1182, 1183, 5, 2993, 0, 0, 1183, 1184, 5, 3015, 0, 0, 1184, 478, 1, 0, 0, 0, 1185, 1186, 5, 2993, 0, 0, 1186, 1187, 5, 3019, 0, 0, 1187, 480, 1, 0, 0, 0, 1188, 1189, 5, 2993, 0, 0, 1189, 1190, 5, 3020, 0, 0, 1190, 482, 1, 0, 0, 0, 1191, 1192, 5, 2985, 0, 0, 1192, 1193, 5, 3006, 0, 0, 1193, 484, 1, 0, 0, 0, 1194, 1195, 5, 2985, 0, 0, 1195, 1196, 5, 3008, 0, 0, 1196, 486, 1, 0, 0, 0, 1197, 1198, 5, 2985, 0, 0, 1198, 1199, 5, 3010, 0, 0, 1199, 488, 1, 0, 0, 0, 1200, 1201, 5, 2985, 0, 0, 1201, 1202, 5, 3015, 0, 0, 1202, 490, 1, 0, 0, 0, 1203, 1204, 5, 2985, 0, 0, 1204, 1205, 5, 3019, 0, 0, 1205, 492, 1, 0, 0, 0, 1206, 1207, 5, 2985, 0, 0, 1207, 1208, 5, 3020, 0, 0, 1208, 494, 1, 0, 0, 0, 1209, 1211, 7, 0, 0, 0, 1210, 1209, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1210, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 496, 1, 0, 0, 0, 1214, 1216, 5, 13, 0, 0, 1215, 1214, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1218, 5, 10, 0, 0, 1218, 498, 1, 0, 0, 0, 3, 0, 1212, 1215, 0] \ No newline at end of file diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.py" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.py" index 4000c04..fc65aae 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.py" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.py" @@ -10,7 +10,7 @@ def serializedATN(): return [ - 4,0,249,1214,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, + 4,0,249,1219,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, @@ -52,412 +52,415 @@ def serializedATN(): 2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235, 7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240, 2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246, - 7,246,2,247,7,247,2,248,7,248,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1,2,1, - 3,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,7,1,8,1, - 8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1, - 13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1,17,1, - 17,1,17,1,18,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,25,1,26,1,26,1,26,1,27,1,27,1,27,1, - 28,1,28,1,28,1,29,1,29,1,30,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1, - 32,1,33,1,33,1,33,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1, - 37,1,37,1,38,1,38,1,38,1,39,1,39,1,40,1,40,1,40,1,41,1,41,1,41,1, - 42,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,45,1,45,1,45,1,46,1,46,1, - 46,1,47,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,50,1,50,1,50,1,51,1, - 51,1,51,1,52,1,52,1,52,1,53,1,53,1,53,1,54,1,54,1,55,1,55,1,55,1, - 56,1,56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,59,1,59,1,60,1,60,1, - 60,1,61,1,61,1,61,1,62,1,62,1,62,1,63,1,63,1,63,1,64,1,64,1,65,1, - 65,1,65,1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,68,1,69,1,69,1, - 70,1,70,1,70,1,71,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,73,1,74,1, - 74,1,75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1, - 79,1,79,1,80,1,80,1,80,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1, - 83,1,84,1,84,1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1, - 88,1,88,1,89,1,89,1,90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,1, - 93,1,93,1,93,1,94,1,94,1,95,1,95,1,95,1,96,1,96,1,96,1,97,1,97,1, - 97,1,98,1,98,1,98,1,99,1,99,1,100,1,100,1,100,1,101,1,101,1,101, - 1,102,1,102,1,102,1,103,1,103,1,103,1,104,1,104,1,105,1,105,1,105, - 1,106,1,106,1,106,1,107,1,107,1,107,1,108,1,108,1,108,1,109,1,109, - 1,110,1,110,1,110,1,111,1,111,1,111,1,112,1,112,1,112,1,113,1,113, - 1,113,1,114,1,114,1,115,1,115,1,116,1,116,1,117,1,117,1,118,1,118, - 1,119,1,119,1,120,1,120,1,120,1,121,1,121,1,121,1,122,1,122,1,122, - 1,123,1,123,1,123,1,124,1,124,1,124,1,125,1,125,1,125,1,126,1,126, - 1,126,1,127,1,127,1,127,1,128,1,128,1,128,1,129,1,129,1,129,1,130, - 1,130,1,130,1,131,1,131,1,131,1,132,1,132,1,132,1,133,1,133,1,133, - 1,134,1,134,1,134,1,135,1,135,1,135,1,136,1,136,1,136,1,137,1,137, - 1,137,1,138,1,138,1,138,1,139,1,139,1,139,1,140,1,140,1,140,1,141, - 1,141,1,141,1,142,1,142,1,142,1,143,1,143,1,143,1,144,1,144,1,144, - 1,145,1,145,1,145,1,146,1,146,1,146,1,147,1,147,1,147,1,148,1,148, - 1,148,1,149,1,149,1,149,1,150,1,150,1,150,1,151,1,151,1,151,1,152, - 1,152,1,152,1,153,1,153,1,153,1,154,1,154,1,154,1,155,1,155,1,155, - 1,156,1,156,1,156,1,157,1,157,1,157,1,158,1,158,1,158,1,159,1,159, - 1,159,1,160,1,160,1,160,1,161,1,161,1,161,1,162,1,162,1,162,1,163, - 1,163,1,163,1,164,1,164,1,164,1,165,1,165,1,165,1,166,1,166,1,166, - 1,167,1,167,1,167,1,168,1,168,1,168,1,169,1,169,1,169,1,170,1,170, - 1,170,1,171,1,171,1,171,1,172,1,172,1,172,1,173,1,173,1,173,1,174, - 1,174,1,174,1,175,1,175,1,175,1,176,1,176,1,176,1,177,1,177,1,177, - 1,178,1,178,1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,181,1,181, - 1,181,1,182,1,182,1,182,1,183,1,183,1,183,1,184,1,184,1,184,1,185, - 1,185,1,185,1,186,1,186,1,186,1,187,1,187,1,187,1,188,1,188,1,188, - 1,189,1,189,1,189,1,190,1,190,1,190,1,191,1,191,1,191,1,192,1,192, - 1,192,1,193,1,193,1,193,1,194,1,194,1,194,1,195,1,195,1,195,1,196, - 1,196,1,196,1,197,1,197,1,197,1,198,1,198,1,198,1,199,1,199,1,199, - 1,200,1,200,1,200,1,201,1,201,1,201,1,202,1,202,1,202,1,203,1,203, - 1,203,1,204,1,204,1,204,1,205,1,205,1,205,1,206,1,206,1,206,1,207, - 1,207,1,207,1,208,1,208,1,208,1,209,1,209,1,209,1,210,1,210,1,210, - 1,211,1,211,1,211,1,212,1,212,1,212,1,213,1,213,1,213,1,214,1,214, - 1,214,1,215,1,215,1,215,1,216,1,216,1,216,1,217,1,217,1,217,1,218, - 1,218,1,218,1,219,1,219,1,219,1,220,1,220,1,220,1,221,1,221,1,221, - 1,222,1,222,1,222,1,223,1,223,1,223,1,224,1,224,1,224,1,225,1,225, - 1,225,1,226,1,226,1,226,1,227,1,227,1,227,1,228,1,228,1,228,1,229, - 1,229,1,229,1,230,1,230,1,230,1,231,1,231,1,231,1,232,1,232,1,232, - 1,233,1,233,1,233,1,234,1,234,1,234,1,235,1,235,1,235,1,236,1,236, - 1,236,1,237,1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,239,1,240, - 1,240,1,240,1,241,1,241,1,241,1,242,1,242,1,242,1,243,1,243,1,243, - 1,244,1,244,1,244,1,245,1,245,1,245,1,246,1,246,1,246,1,247,1,247, - 1,248,1,248,0,0,249,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10, - 21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21, - 43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32, - 65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43, - 87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107, - 54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63, - 127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145, - 73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82, - 165,83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183, - 92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201, - 101,203,102,205,103,207,104,209,105,211,106,213,107,215,108,217, - 109,219,110,221,111,223,112,225,113,227,114,229,115,231,116,233, - 117,235,118,237,119,239,120,241,121,243,122,245,123,247,124,249, - 125,251,126,253,127,255,128,257,129,259,130,261,131,263,132,265, - 133,267,134,269,135,271,136,273,137,275,138,277,139,279,140,281, - 141,283,142,285,143,287,144,289,145,291,146,293,147,295,148,297, - 149,299,150,301,151,303,152,305,153,307,154,309,155,311,156,313, - 157,315,158,317,159,319,160,321,161,323,162,325,163,327,164,329, - 165,331,166,333,167,335,168,337,169,339,170,341,171,343,172,345, - 173,347,174,349,175,351,176,353,177,355,178,357,179,359,180,361, - 181,363,182,365,183,367,184,369,185,371,186,373,187,375,188,377, - 189,379,190,381,191,383,192,385,193,387,194,389,195,391,196,393, - 197,395,198,397,199,399,200,401,201,403,202,405,203,407,204,409, - 205,411,206,413,207,415,208,417,209,419,210,421,211,423,212,425, - 213,427,214,429,215,431,216,433,217,435,218,437,219,439,220,441, - 221,443,222,445,223,447,224,449,225,451,226,453,227,455,228,457, - 229,459,230,461,231,463,232,465,233,467,234,469,235,471,236,473, - 237,475,238,477,239,479,240,481,241,483,242,485,243,487,244,489, - 245,491,246,493,247,495,248,497,249,1,0,0,1213,0,1,1,0,0,0,0,3,1, - 0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0, - 0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0, - 0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0, - 0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0, - 0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0, - 0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0, - 0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0, - 0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0, - 0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0, - 0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1, - 0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0, - 113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0, - 0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131, - 1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0, - 0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1, - 0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0, - 159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0, - 0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177, - 1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0, - 0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1, - 0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0, - 205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0, - 0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223, - 1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0, - 0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1, - 0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0, - 251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0, - 0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269, - 1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0, - 0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1, - 0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0, - 297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0, - 0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315, - 1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0, - 0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1, - 0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0, - 343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0, - 0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361, - 1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0, - 0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1, - 0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0, - 389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0, - 0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407, - 1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0, - 0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1, - 0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0, - 435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0, - 0,0,0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453, - 1,0,0,0,0,455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0, - 0,463,1,0,0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1, - 0,0,0,0,473,1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0, - 481,1,0,0,0,0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0, - 0,0,0,491,1,0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,1,499, - 1,0,0,0,3,501,1,0,0,0,5,504,1,0,0,0,7,507,1,0,0,0,9,510,1,0,0,0, - 11,513,1,0,0,0,13,516,1,0,0,0,15,519,1,0,0,0,17,522,1,0,0,0,19,525, - 1,0,0,0,21,528,1,0,0,0,23,531,1,0,0,0,25,534,1,0,0,0,27,537,1,0, - 0,0,29,540,1,0,0,0,31,543,1,0,0,0,33,546,1,0,0,0,35,549,1,0,0,0, - 37,552,1,0,0,0,39,555,1,0,0,0,41,557,1,0,0,0,43,559,1,0,0,0,45,561, - 1,0,0,0,47,563,1,0,0,0,49,565,1,0,0,0,51,567,1,0,0,0,53,570,1,0, - 0,0,55,573,1,0,0,0,57,576,1,0,0,0,59,579,1,0,0,0,61,581,1,0,0,0, - 63,584,1,0,0,0,65,587,1,0,0,0,67,590,1,0,0,0,69,593,1,0,0,0,71,595, - 1,0,0,0,73,598,1,0,0,0,75,601,1,0,0,0,77,604,1,0,0,0,79,607,1,0, - 0,0,81,609,1,0,0,0,83,612,1,0,0,0,85,615,1,0,0,0,87,618,1,0,0,0, - 89,621,1,0,0,0,91,623,1,0,0,0,93,626,1,0,0,0,95,629,1,0,0,0,97,632, - 1,0,0,0,99,635,1,0,0,0,101,637,1,0,0,0,103,640,1,0,0,0,105,643,1, - 0,0,0,107,646,1,0,0,0,109,649,1,0,0,0,111,651,1,0,0,0,113,654,1, - 0,0,0,115,657,1,0,0,0,117,660,1,0,0,0,119,663,1,0,0,0,121,665,1, - 0,0,0,123,668,1,0,0,0,125,671,1,0,0,0,127,674,1,0,0,0,129,677,1, - 0,0,0,131,679,1,0,0,0,133,682,1,0,0,0,135,685,1,0,0,0,137,688,1, - 0,0,0,139,691,1,0,0,0,141,693,1,0,0,0,143,696,1,0,0,0,145,699,1, - 0,0,0,147,702,1,0,0,0,149,705,1,0,0,0,151,707,1,0,0,0,153,710,1, - 0,0,0,155,713,1,0,0,0,157,716,1,0,0,0,159,719,1,0,0,0,161,721,1, - 0,0,0,163,724,1,0,0,0,165,727,1,0,0,0,167,730,1,0,0,0,169,733,1, - 0,0,0,171,735,1,0,0,0,173,738,1,0,0,0,175,741,1,0,0,0,177,744,1, - 0,0,0,179,747,1,0,0,0,181,749,1,0,0,0,183,752,1,0,0,0,185,755,1, - 0,0,0,187,758,1,0,0,0,189,761,1,0,0,0,191,763,1,0,0,0,193,766,1, - 0,0,0,195,769,1,0,0,0,197,772,1,0,0,0,199,775,1,0,0,0,201,777,1, - 0,0,0,203,780,1,0,0,0,205,783,1,0,0,0,207,786,1,0,0,0,209,789,1, - 0,0,0,211,791,1,0,0,0,213,794,1,0,0,0,215,797,1,0,0,0,217,800,1, - 0,0,0,219,803,1,0,0,0,221,805,1,0,0,0,223,808,1,0,0,0,225,811,1, - 0,0,0,227,814,1,0,0,0,229,817,1,0,0,0,231,819,1,0,0,0,233,821,1, - 0,0,0,235,823,1,0,0,0,237,825,1,0,0,0,239,827,1,0,0,0,241,829,1, - 0,0,0,243,832,1,0,0,0,245,835,1,0,0,0,247,838,1,0,0,0,249,841,1, - 0,0,0,251,844,1,0,0,0,253,847,1,0,0,0,255,850,1,0,0,0,257,853,1, - 0,0,0,259,856,1,0,0,0,261,859,1,0,0,0,263,862,1,0,0,0,265,865,1, - 0,0,0,267,868,1,0,0,0,269,871,1,0,0,0,271,874,1,0,0,0,273,877,1, - 0,0,0,275,880,1,0,0,0,277,883,1,0,0,0,279,886,1,0,0,0,281,889,1, - 0,0,0,283,892,1,0,0,0,285,895,1,0,0,0,287,898,1,0,0,0,289,901,1, - 0,0,0,291,904,1,0,0,0,293,907,1,0,0,0,295,910,1,0,0,0,297,913,1, - 0,0,0,299,916,1,0,0,0,301,919,1,0,0,0,303,922,1,0,0,0,305,925,1, - 0,0,0,307,928,1,0,0,0,309,931,1,0,0,0,311,934,1,0,0,0,313,937,1, - 0,0,0,315,940,1,0,0,0,317,943,1,0,0,0,319,946,1,0,0,0,321,949,1, - 0,0,0,323,952,1,0,0,0,325,955,1,0,0,0,327,958,1,0,0,0,329,961,1, - 0,0,0,331,964,1,0,0,0,333,967,1,0,0,0,335,970,1,0,0,0,337,973,1, - 0,0,0,339,976,1,0,0,0,341,979,1,0,0,0,343,982,1,0,0,0,345,985,1, - 0,0,0,347,988,1,0,0,0,349,991,1,0,0,0,351,994,1,0,0,0,353,997,1, - 0,0,0,355,1000,1,0,0,0,357,1003,1,0,0,0,359,1006,1,0,0,0,361,1009, - 1,0,0,0,363,1012,1,0,0,0,365,1015,1,0,0,0,367,1018,1,0,0,0,369,1021, - 1,0,0,0,371,1024,1,0,0,0,373,1027,1,0,0,0,375,1030,1,0,0,0,377,1033, - 1,0,0,0,379,1036,1,0,0,0,381,1039,1,0,0,0,383,1042,1,0,0,0,385,1045, - 1,0,0,0,387,1048,1,0,0,0,389,1051,1,0,0,0,391,1054,1,0,0,0,393,1057, - 1,0,0,0,395,1060,1,0,0,0,397,1063,1,0,0,0,399,1066,1,0,0,0,401,1069, - 1,0,0,0,403,1072,1,0,0,0,405,1075,1,0,0,0,407,1078,1,0,0,0,409,1081, - 1,0,0,0,411,1084,1,0,0,0,413,1087,1,0,0,0,415,1090,1,0,0,0,417,1093, - 1,0,0,0,419,1096,1,0,0,0,421,1099,1,0,0,0,423,1102,1,0,0,0,425,1105, - 1,0,0,0,427,1108,1,0,0,0,429,1111,1,0,0,0,431,1114,1,0,0,0,433,1117, - 1,0,0,0,435,1120,1,0,0,0,437,1123,1,0,0,0,439,1126,1,0,0,0,441,1129, - 1,0,0,0,443,1132,1,0,0,0,445,1135,1,0,0,0,447,1138,1,0,0,0,449,1141, - 1,0,0,0,451,1144,1,0,0,0,453,1147,1,0,0,0,455,1150,1,0,0,0,457,1153, - 1,0,0,0,459,1156,1,0,0,0,461,1159,1,0,0,0,463,1162,1,0,0,0,465,1165, - 1,0,0,0,467,1168,1,0,0,0,469,1171,1,0,0,0,471,1174,1,0,0,0,473,1177, - 1,0,0,0,475,1180,1,0,0,0,477,1183,1,0,0,0,479,1186,1,0,0,0,481,1189, - 1,0,0,0,483,1192,1,0,0,0,485,1195,1,0,0,0,487,1198,1,0,0,0,489,1201, - 1,0,0,0,491,1204,1,0,0,0,493,1207,1,0,0,0,495,1210,1,0,0,0,497,1212, - 1,0,0,0,499,500,5,10,0,0,500,2,1,0,0,0,501,502,5,2965,0,0,502,503, - 5,3021,0,0,503,4,1,0,0,0,504,505,5,2970,0,0,505,506,5,3021,0,0,506, - 6,1,0,0,0,507,508,5,2975,0,0,508,509,5,3021,0,0,509,8,1,0,0,0,510, - 511,5,2980,0,0,511,512,5,3021,0,0,512,10,1,0,0,0,513,514,5,2986, - 0,0,514,515,5,3021,0,0,515,12,1,0,0,0,516,517,5,2993,0,0,517,518, - 5,3021,0,0,518,14,1,0,0,0,519,520,5,2974,0,0,520,521,5,3021,0,0, - 521,16,1,0,0,0,522,523,5,2969,0,0,523,524,5,3021,0,0,524,18,1,0, - 0,0,525,526,5,2979,0,0,526,527,5,3021,0,0,527,20,1,0,0,0,528,529, - 5,2984,0,0,529,530,5,3021,0,0,530,22,1,0,0,0,531,532,5,2990,0,0, - 532,533,5,3021,0,0,533,24,1,0,0,0,534,535,5,2985,0,0,535,536,5,3021, - 0,0,536,26,1,0,0,0,537,538,5,2991,0,0,538,539,5,3021,0,0,539,28, - 1,0,0,0,540,541,5,2992,0,0,541,542,5,3021,0,0,542,30,1,0,0,0,543, - 544,5,2994,0,0,544,545,5,3021,0,0,545,32,1,0,0,0,546,547,5,2997, - 0,0,547,548,5,3021,0,0,548,34,1,0,0,0,549,550,5,2996,0,0,550,551, - 5,3021,0,0,551,36,1,0,0,0,552,553,5,2995,0,0,553,554,5,3021,0,0, - 554,38,1,0,0,0,555,556,5,2949,0,0,556,40,1,0,0,0,557,558,5,2951, - 0,0,558,42,1,0,0,0,559,560,5,2953,0,0,560,44,1,0,0,0,561,562,5,2958, - 0,0,562,46,1,0,0,0,563,564,5,2962,0,0,564,48,1,0,0,0,565,566,5,2965, - 0,0,566,50,1,0,0,0,567,568,5,2965,0,0,568,569,5,3007,0,0,569,52, - 1,0,0,0,570,571,5,2965,0,0,571,572,5,3009,0,0,572,54,1,0,0,0,573, - 574,5,2965,0,0,574,575,5,3014,0,0,575,56,1,0,0,0,576,577,5,2965, - 0,0,577,578,5,3018,0,0,578,58,1,0,0,0,579,580,5,2969,0,0,580,60, - 1,0,0,0,581,582,5,2969,0,0,582,583,5,3007,0,0,583,62,1,0,0,0,584, - 585,5,2969,0,0,585,586,5,3009,0,0,586,64,1,0,0,0,587,588,5,2969, - 0,0,588,589,5,3014,0,0,589,66,1,0,0,0,590,591,5,2969,0,0,591,592, - 5,3018,0,0,592,68,1,0,0,0,593,594,5,2970,0,0,594,70,1,0,0,0,595, - 596,5,2970,0,0,596,597,5,3007,0,0,597,72,1,0,0,0,598,599,5,2970, - 0,0,599,600,5,3009,0,0,600,74,1,0,0,0,601,602,5,2970,0,0,602,603, - 5,3014,0,0,603,76,1,0,0,0,604,605,5,2970,0,0,605,606,5,3018,0,0, - 606,78,1,0,0,0,607,608,5,2974,0,0,608,80,1,0,0,0,609,610,5,2974, - 0,0,610,611,5,3007,0,0,611,82,1,0,0,0,612,613,5,2974,0,0,613,614, - 5,3009,0,0,614,84,1,0,0,0,615,616,5,2974,0,0,616,617,5,3014,0,0, - 617,86,1,0,0,0,618,619,5,2974,0,0,619,620,5,3018,0,0,620,88,1,0, - 0,0,621,622,5,2975,0,0,622,90,1,0,0,0,623,624,5,2975,0,0,624,625, - 5,3007,0,0,625,92,1,0,0,0,626,627,5,2975,0,0,627,628,5,3009,0,0, - 628,94,1,0,0,0,629,630,5,2975,0,0,630,631,5,3014,0,0,631,96,1,0, - 0,0,632,633,5,2975,0,0,633,634,5,3018,0,0,634,98,1,0,0,0,635,636, - 5,2979,0,0,636,100,1,0,0,0,637,638,5,2979,0,0,638,639,5,3007,0,0, - 639,102,1,0,0,0,640,641,5,2979,0,0,641,642,5,3009,0,0,642,104,1, - 0,0,0,643,644,5,2979,0,0,644,645,5,3014,0,0,645,106,1,0,0,0,646, - 647,5,2979,0,0,647,648,5,3018,0,0,648,108,1,0,0,0,649,650,5,2980, - 0,0,650,110,1,0,0,0,651,652,5,2980,0,0,652,653,5,3007,0,0,653,112, - 1,0,0,0,654,655,5,2980,0,0,655,656,5,3009,0,0,656,114,1,0,0,0,657, - 658,5,2980,0,0,658,659,5,3014,0,0,659,116,1,0,0,0,660,661,5,2980, - 0,0,661,662,5,3018,0,0,662,118,1,0,0,0,663,664,5,2984,0,0,664,120, - 1,0,0,0,665,666,5,2984,0,0,666,667,5,3007,0,0,667,122,1,0,0,0,668, - 669,5,2984,0,0,669,670,5,3009,0,0,670,124,1,0,0,0,671,672,5,2984, - 0,0,672,673,5,3014,0,0,673,126,1,0,0,0,674,675,5,2984,0,0,675,676, - 5,3018,0,0,676,128,1,0,0,0,677,678,5,2986,0,0,678,130,1,0,0,0,679, - 680,5,2986,0,0,680,681,5,3007,0,0,681,132,1,0,0,0,682,683,5,2986, - 0,0,683,684,5,3009,0,0,684,134,1,0,0,0,685,686,5,2986,0,0,686,687, - 5,3014,0,0,687,136,1,0,0,0,688,689,5,2986,0,0,689,690,5,3018,0,0, - 690,138,1,0,0,0,691,692,5,2990,0,0,692,140,1,0,0,0,693,694,5,2990, - 0,0,694,695,5,3007,0,0,695,142,1,0,0,0,696,697,5,2990,0,0,697,698, - 5,3009,0,0,698,144,1,0,0,0,699,700,5,2990,0,0,700,701,5,3014,0,0, - 701,146,1,0,0,0,702,703,5,2990,0,0,703,704,5,3018,0,0,704,148,1, - 0,0,0,705,706,5,2991,0,0,706,150,1,0,0,0,707,708,5,2991,0,0,708, - 709,5,3007,0,0,709,152,1,0,0,0,710,711,5,2991,0,0,711,712,5,3009, - 0,0,712,154,1,0,0,0,713,714,5,2991,0,0,714,715,5,3014,0,0,715,156, - 1,0,0,0,716,717,5,2991,0,0,717,718,5,3018,0,0,718,158,1,0,0,0,719, - 720,5,2992,0,0,720,160,1,0,0,0,721,722,5,2992,0,0,722,723,5,3007, - 0,0,723,162,1,0,0,0,724,725,5,2992,0,0,725,726,5,3009,0,0,726,164, - 1,0,0,0,727,728,5,2992,0,0,728,729,5,3014,0,0,729,166,1,0,0,0,730, - 731,5,2992,0,0,731,732,5,3018,0,0,732,168,1,0,0,0,733,734,5,2994, - 0,0,734,170,1,0,0,0,735,736,5,2994,0,0,736,737,5,3007,0,0,737,172, - 1,0,0,0,738,739,5,2994,0,0,739,740,5,3009,0,0,740,174,1,0,0,0,741, - 742,5,2994,0,0,742,743,5,3014,0,0,743,176,1,0,0,0,744,745,5,2994, - 0,0,745,746,5,3018,0,0,746,178,1,0,0,0,747,748,5,2997,0,0,748,180, - 1,0,0,0,749,750,5,2997,0,0,750,751,5,3007,0,0,751,182,1,0,0,0,752, - 753,5,2997,0,0,753,754,5,3009,0,0,754,184,1,0,0,0,755,756,5,2997, - 0,0,756,757,5,3014,0,0,757,186,1,0,0,0,758,759,5,2997,0,0,759,760, - 5,3018,0,0,760,188,1,0,0,0,761,762,5,2996,0,0,762,190,1,0,0,0,763, - 764,5,2996,0,0,764,765,5,3007,0,0,765,192,1,0,0,0,766,767,5,2996, - 0,0,767,768,5,3009,0,0,768,194,1,0,0,0,769,770,5,2996,0,0,770,771, - 5,3014,0,0,771,196,1,0,0,0,772,773,5,2996,0,0,773,774,5,3018,0,0, - 774,198,1,0,0,0,775,776,5,2995,0,0,776,200,1,0,0,0,777,778,5,2995, - 0,0,778,779,5,3007,0,0,779,202,1,0,0,0,780,781,5,2995,0,0,781,782, - 5,3009,0,0,782,204,1,0,0,0,783,784,5,2995,0,0,784,785,5,3014,0,0, - 785,206,1,0,0,0,786,787,5,2995,0,0,787,788,5,3018,0,0,788,208,1, - 0,0,0,789,790,5,2993,0,0,790,210,1,0,0,0,791,792,5,2993,0,0,792, - 793,5,3007,0,0,793,212,1,0,0,0,794,795,5,2993,0,0,795,796,5,3009, - 0,0,796,214,1,0,0,0,797,798,5,2993,0,0,798,799,5,3014,0,0,799,216, - 1,0,0,0,800,801,5,2993,0,0,801,802,5,3018,0,0,802,218,1,0,0,0,803, - 804,5,2985,0,0,804,220,1,0,0,0,805,806,5,2985,0,0,806,807,5,3007, - 0,0,807,222,1,0,0,0,808,809,5,2985,0,0,809,810,5,3009,0,0,810,224, - 1,0,0,0,811,812,5,2985,0,0,812,813,5,3014,0,0,813,226,1,0,0,0,814, - 815,5,2985,0,0,815,816,5,3018,0,0,816,228,1,0,0,0,817,818,5,2950, - 0,0,818,230,1,0,0,0,819,820,5,2952,0,0,820,232,1,0,0,0,821,822,5, - 2954,0,0,822,234,1,0,0,0,823,824,5,2959,0,0,824,236,1,0,0,0,825, - 826,5,2960,0,0,826,238,1,0,0,0,827,828,5,2963,0,0,828,240,1,0,0, - 0,829,830,5,2962,0,0,830,831,5,2995,0,0,831,242,1,0,0,0,832,833, - 5,2965,0,0,833,834,5,3006,0,0,834,244,1,0,0,0,835,836,5,2965,0,0, - 836,837,5,3008,0,0,837,246,1,0,0,0,838,839,5,2965,0,0,839,840,5, - 3010,0,0,840,248,1,0,0,0,841,842,5,2965,0,0,842,843,5,3015,0,0,843, - 250,1,0,0,0,844,845,5,2965,0,0,845,846,5,3016,0,0,846,252,1,0,0, - 0,847,848,5,2965,0,0,848,849,5,3019,0,0,849,254,1,0,0,0,850,851, - 5,2965,0,0,851,852,5,3020,0,0,852,256,1,0,0,0,853,854,5,2969,0,0, - 854,855,5,3006,0,0,855,258,1,0,0,0,856,857,5,2969,0,0,857,858,5, - 3008,0,0,858,260,1,0,0,0,859,860,5,2969,0,0,860,861,5,3010,0,0,861, - 262,1,0,0,0,862,863,5,2969,0,0,863,864,5,3015,0,0,864,264,1,0,0, - 0,865,866,5,2969,0,0,866,867,5,3016,0,0,867,266,1,0,0,0,868,869, - 5,2969,0,0,869,870,5,3019,0,0,870,268,1,0,0,0,871,872,5,2969,0,0, - 872,873,5,3020,0,0,873,270,1,0,0,0,874,875,5,2970,0,0,875,876,5, - 3006,0,0,876,272,1,0,0,0,877,878,5,2970,0,0,878,879,5,3008,0,0,879, - 274,1,0,0,0,880,881,5,2970,0,0,881,882,5,3010,0,0,882,276,1,0,0, - 0,883,884,5,2970,0,0,884,885,5,3015,0,0,885,278,1,0,0,0,886,887, - 5,2970,0,0,887,888,5,3016,0,0,888,280,1,0,0,0,889,890,5,2970,0,0, - 890,891,5,3019,0,0,891,282,1,0,0,0,892,893,5,2970,0,0,893,894,5, - 3020,0,0,894,284,1,0,0,0,895,896,5,2974,0,0,896,897,5,3006,0,0,897, - 286,1,0,0,0,898,899,5,2974,0,0,899,900,5,3008,0,0,900,288,1,0,0, - 0,901,902,5,2974,0,0,902,903,5,3010,0,0,903,290,1,0,0,0,904,905, - 5,2974,0,0,905,906,5,3015,0,0,906,292,1,0,0,0,907,908,5,2974,0,0, - 908,909,5,3016,0,0,909,294,1,0,0,0,910,911,5,2974,0,0,911,912,5, - 3019,0,0,912,296,1,0,0,0,913,914,5,2974,0,0,914,915,5,3020,0,0,915, - 298,1,0,0,0,916,917,5,2975,0,0,917,918,5,3006,0,0,918,300,1,0,0, - 0,919,920,5,2975,0,0,920,921,5,3008,0,0,921,302,1,0,0,0,922,923, - 5,2975,0,0,923,924,5,3010,0,0,924,304,1,0,0,0,925,926,5,2975,0,0, - 926,927,5,3015,0,0,927,306,1,0,0,0,928,929,5,2975,0,0,929,930,5, - 3016,0,0,930,308,1,0,0,0,931,932,5,2975,0,0,932,933,5,3019,0,0,933, - 310,1,0,0,0,934,935,5,2975,0,0,935,936,5,3020,0,0,936,312,1,0,0, - 0,937,938,5,2979,0,0,938,939,5,3006,0,0,939,314,1,0,0,0,940,941, - 5,2979,0,0,941,942,5,3008,0,0,942,316,1,0,0,0,943,944,5,2979,0,0, - 944,945,5,3010,0,0,945,318,1,0,0,0,946,947,5,2979,0,0,947,948,5, - 3015,0,0,948,320,1,0,0,0,949,950,5,2979,0,0,950,951,5,3016,0,0,951, - 322,1,0,0,0,952,953,5,2979,0,0,953,954,5,3019,0,0,954,324,1,0,0, - 0,955,956,5,2979,0,0,956,957,5,3020,0,0,957,326,1,0,0,0,958,959, - 5,2980,0,0,959,960,5,3006,0,0,960,328,1,0,0,0,961,962,5,2980,0,0, - 962,963,5,3008,0,0,963,330,1,0,0,0,964,965,5,2980,0,0,965,966,5, - 3010,0,0,966,332,1,0,0,0,967,968,5,2980,0,0,968,969,5,3015,0,0,969, - 334,1,0,0,0,970,971,5,2980,0,0,971,972,5,3016,0,0,972,336,1,0,0, - 0,973,974,5,2980,0,0,974,975,5,3019,0,0,975,338,1,0,0,0,976,977, - 5,2980,0,0,977,978,5,3020,0,0,978,340,1,0,0,0,979,980,5,2984,0,0, - 980,981,5,3006,0,0,981,342,1,0,0,0,982,983,5,2984,0,0,983,984,5, - 3008,0,0,984,344,1,0,0,0,985,986,5,2984,0,0,986,987,5,3010,0,0,987, - 346,1,0,0,0,988,989,5,2984,0,0,989,990,5,3015,0,0,990,348,1,0,0, - 0,991,992,5,2984,0,0,992,993,5,3016,0,0,993,350,1,0,0,0,994,995, - 5,2984,0,0,995,996,5,3019,0,0,996,352,1,0,0,0,997,998,5,2984,0,0, - 998,999,5,3020,0,0,999,354,1,0,0,0,1000,1001,5,2986,0,0,1001,1002, - 5,3006,0,0,1002,356,1,0,0,0,1003,1004,5,2986,0,0,1004,1005,5,3008, - 0,0,1005,358,1,0,0,0,1006,1007,5,2986,0,0,1007,1008,5,3010,0,0,1008, - 360,1,0,0,0,1009,1010,5,2986,0,0,1010,1011,5,3015,0,0,1011,362,1, - 0,0,0,1012,1013,5,2986,0,0,1013,1014,5,3016,0,0,1014,364,1,0,0,0, - 1015,1016,5,2986,0,0,1016,1017,5,3019,0,0,1017,366,1,0,0,0,1018, - 1019,5,2986,0,0,1019,1020,5,3020,0,0,1020,368,1,0,0,0,1021,1022, - 5,2990,0,0,1022,1023,5,3006,0,0,1023,370,1,0,0,0,1024,1025,5,2990, - 0,0,1025,1026,5,3008,0,0,1026,372,1,0,0,0,1027,1028,5,2990,0,0,1028, - 1029,5,3010,0,0,1029,374,1,0,0,0,1030,1031,5,2990,0,0,1031,1032, - 5,3015,0,0,1032,376,1,0,0,0,1033,1034,5,2990,0,0,1034,1035,5,3016, - 0,0,1035,378,1,0,0,0,1036,1037,5,2990,0,0,1037,1038,5,3019,0,0,1038, - 380,1,0,0,0,1039,1040,5,2990,0,0,1040,1041,5,3020,0,0,1041,382,1, - 0,0,0,1042,1043,5,2991,0,0,1043,1044,5,3006,0,0,1044,384,1,0,0,0, - 1045,1046,5,2991,0,0,1046,1047,5,3008,0,0,1047,386,1,0,0,0,1048, - 1049,5,2991,0,0,1049,1050,5,3010,0,0,1050,388,1,0,0,0,1051,1052, - 5,2991,0,0,1052,1053,5,3015,0,0,1053,390,1,0,0,0,1054,1055,5,2991, - 0,0,1055,1056,5,3016,0,0,1056,392,1,0,0,0,1057,1058,5,2991,0,0,1058, - 1059,5,3019,0,0,1059,394,1,0,0,0,1060,1061,5,2991,0,0,1061,1062, - 5,3020,0,0,1062,396,1,0,0,0,1063,1064,5,2992,0,0,1064,1065,5,3006, - 0,0,1065,398,1,0,0,0,1066,1067,5,2992,0,0,1067,1068,5,3008,0,0,1068, - 400,1,0,0,0,1069,1070,5,2992,0,0,1070,1071,5,3010,0,0,1071,402,1, - 0,0,0,1072,1073,5,2992,0,0,1073,1074,5,3015,0,0,1074,404,1,0,0,0, - 1075,1076,5,2992,0,0,1076,1077,5,3016,0,0,1077,406,1,0,0,0,1078, - 1079,5,2992,0,0,1079,1080,5,3019,0,0,1080,408,1,0,0,0,1081,1082, - 5,2992,0,0,1082,1083,5,3020,0,0,1083,410,1,0,0,0,1084,1085,5,2994, - 0,0,1085,1086,5,3006,0,0,1086,412,1,0,0,0,1087,1088,5,2994,0,0,1088, - 1089,5,3008,0,0,1089,414,1,0,0,0,1090,1091,5,2994,0,0,1091,1092, - 5,3010,0,0,1092,416,1,0,0,0,1093,1094,5,2994,0,0,1094,1095,5,3015, - 0,0,1095,418,1,0,0,0,1096,1097,5,2994,0,0,1097,1098,5,3016,0,0,1098, - 420,1,0,0,0,1099,1100,5,2994,0,0,1100,1101,5,3019,0,0,1101,422,1, - 0,0,0,1102,1103,5,2994,0,0,1103,1104,5,3020,0,0,1104,424,1,0,0,0, - 1105,1106,5,2997,0,0,1106,1107,5,3006,0,0,1107,426,1,0,0,0,1108, - 1109,5,2997,0,0,1109,1110,5,3008,0,0,1110,428,1,0,0,0,1111,1112, - 5,2997,0,0,1112,1113,5,3010,0,0,1113,430,1,0,0,0,1114,1115,5,2997, - 0,0,1115,1116,5,3015,0,0,1116,432,1,0,0,0,1117,1118,5,2997,0,0,1118, - 1119,5,3016,0,0,1119,434,1,0,0,0,1120,1121,5,2997,0,0,1121,1122, - 5,3019,0,0,1122,436,1,0,0,0,1123,1124,5,2997,0,0,1124,1125,5,3020, - 0,0,1125,438,1,0,0,0,1126,1127,5,2996,0,0,1127,1128,5,3006,0,0,1128, - 440,1,0,0,0,1129,1130,5,2996,0,0,1130,1131,5,3008,0,0,1131,442,1, - 0,0,0,1132,1133,5,2996,0,0,1133,1134,5,3010,0,0,1134,444,1,0,0,0, - 1135,1136,5,2996,0,0,1136,1137,5,3015,0,0,1137,446,1,0,0,0,1138, - 1139,5,2996,0,0,1139,1140,5,3016,0,0,1140,448,1,0,0,0,1141,1142, - 5,2996,0,0,1142,1143,5,3019,0,0,1143,450,1,0,0,0,1144,1145,5,2996, - 0,0,1145,1146,5,3020,0,0,1146,452,1,0,0,0,1147,1148,5,2995,0,0,1148, - 1149,5,3006,0,0,1149,454,1,0,0,0,1150,1151,5,2995,0,0,1151,1152, - 5,3008,0,0,1152,456,1,0,0,0,1153,1154,5,2995,0,0,1154,1155,5,3010, - 0,0,1155,458,1,0,0,0,1156,1157,5,2995,0,0,1157,1158,5,3015,0,0,1158, - 460,1,0,0,0,1159,1160,5,2995,0,0,1160,1161,5,3016,0,0,1161,462,1, - 0,0,0,1162,1163,5,2995,0,0,1163,1164,5,3019,0,0,1164,464,1,0,0,0, - 1165,1166,5,2995,0,0,1166,1167,5,3020,0,0,1167,466,1,0,0,0,1168, - 1169,5,2993,0,0,1169,1170,5,3006,0,0,1170,468,1,0,0,0,1171,1172, - 5,2993,0,0,1172,1173,5,3008,0,0,1173,470,1,0,0,0,1174,1175,5,2993, - 0,0,1175,1176,5,3010,0,0,1176,472,1,0,0,0,1177,1178,5,2993,0,0,1178, - 1179,5,3015,0,0,1179,474,1,0,0,0,1180,1181,5,2993,0,0,1181,1182, - 5,3016,0,0,1182,476,1,0,0,0,1183,1184,5,2993,0,0,1184,1185,5,3019, - 0,0,1185,478,1,0,0,0,1186,1187,5,2993,0,0,1187,1188,5,3020,0,0,1188, - 480,1,0,0,0,1189,1190,5,2985,0,0,1190,1191,5,3006,0,0,1191,482,1, - 0,0,0,1192,1193,5,2985,0,0,1193,1194,5,3008,0,0,1194,484,1,0,0,0, - 1195,1196,5,2985,0,0,1196,1197,5,3010,0,0,1197,486,1,0,0,0,1198, - 1199,5,2985,0,0,1199,1200,5,3015,0,0,1200,488,1,0,0,0,1201,1202, - 5,2985,0,0,1202,1203,5,3016,0,0,1203,490,1,0,0,0,1204,1205,5,2985, - 0,0,1205,1206,5,3019,0,0,1206,492,1,0,0,0,1207,1208,5,2985,0,0,1208, - 1209,5,3020,0,0,1209,494,1,0,0,0,1210,1211,5,2947,0,0,1211,496,1, - 0,0,0,1212,1213,5,32,0,0,1213,498,1,0,0,0,1,0,0 + 7,246,2,247,7,247,2,248,7,248,1,0,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1, + 2,1,3,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,7,1, + 8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1, + 12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1, + 17,1,17,1,17,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,20,1,21,1,21,1, + 21,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1, + 26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,28,1,29,1,29,1,29,1,30,1, + 30,1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,33,1,33,1,33,1,34,1,34,1, + 34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1, + 40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,45,1, + 45,1,45,1,46,1,46,1,46,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,49,1, + 50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,53,1,53,1,53,1,54,1,54,1, + 54,1,55,1,55,1,55,1,56,1,56,1,56,1,57,1,57,1,58,1,58,1,58,1,59,1, + 59,1,59,1,60,1,60,1,60,1,61,1,61,1,61,1,62,1,62,1,63,1,63,1,63,1, + 64,1,64,1,64,1,65,1,65,1,65,1,66,1,66,1,66,1,67,1,67,1,68,1,68,1, + 68,1,69,1,69,1,69,1,70,1,70,1,70,1,71,1,71,1,71,1,72,1,72,1,73,1, + 73,1,73,1,74,1,74,1,74,1,75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1, + 78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,81,1,81,1,81,1,82,1, + 82,1,83,1,83,1,83,1,84,1,84,1,84,1,85,1,85,1,85,1,86,1,86,1,86,1, + 87,1,87,1,88,1,88,1,88,1,89,1,89,1,89,1,90,1,90,1,90,1,91,1,91,1, + 91,1,92,1,92,1,93,1,93,1,93,1,94,1,94,1,94,1,95,1,95,1,95,1,96,1, + 96,1,96,1,97,1,97,1,98,1,98,1,98,1,99,1,99,1,99,1,100,1,100,1,100, + 1,101,1,101,1,101,1,102,1,102,1,103,1,103,1,103,1,104,1,104,1,104, + 1,105,1,105,1,105,1,106,1,106,1,106,1,107,1,107,1,108,1,108,1,108, + 1,109,1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,112,1,112, + 1,113,1,113,1,113,1,114,1,114,1,114,1,115,1,115,1,115,1,116,1,116, + 1,116,1,117,1,117,1,118,1,118,1,118,1,119,1,119,1,119,1,120,1,120, + 1,120,1,121,1,121,1,121,1,122,1,122,1,123,1,123,1,123,1,124,1,124, + 1,124,1,125,1,125,1,125,1,126,1,126,1,126,1,127,1,127,1,128,1,128, + 1,128,1,129,1,129,1,129,1,130,1,130,1,130,1,131,1,131,1,131,1,132, + 1,132,1,133,1,133,1,134,1,134,1,135,1,135,1,136,1,136,1,137,1,137, + 1,138,1,138,1,139,1,139,1,139,1,140,1,140,1,140,1,141,1,141,1,141, + 1,142,1,142,1,142,1,143,1,143,1,143,1,144,1,144,1,144,1,145,1,145, + 1,145,1,146,1,146,1,146,1,147,1,147,1,147,1,148,1,148,1,148,1,149, + 1,149,1,149,1,150,1,150,1,150,1,151,1,151,1,151,1,152,1,152,1,152, + 1,153,1,153,1,153,1,154,1,154,1,154,1,155,1,155,1,155,1,156,1,156, + 1,156,1,157,1,157,1,157,1,158,1,158,1,158,1,159,1,159,1,159,1,160, + 1,160,1,160,1,161,1,161,1,161,1,162,1,162,1,162,1,163,1,163,1,163, + 1,164,1,164,1,164,1,165,1,165,1,165,1,166,1,166,1,166,1,167,1,167, + 1,167,1,168,1,168,1,168,1,169,1,169,1,169,1,170,1,170,1,170,1,171, + 1,171,1,171,1,172,1,172,1,172,1,173,1,173,1,173,1,174,1,174,1,174, + 1,175,1,175,1,175,1,176,1,176,1,176,1,177,1,177,1,177,1,178,1,178, + 1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,181,1,181,1,181,1,182, + 1,182,1,182,1,183,1,183,1,183,1,184,1,184,1,184,1,185,1,185,1,185, + 1,186,1,186,1,186,1,187,1,187,1,187,1,188,1,188,1,188,1,189,1,189, + 1,189,1,190,1,190,1,190,1,191,1,191,1,191,1,192,1,192,1,192,1,193, + 1,193,1,193,1,194,1,194,1,194,1,195,1,195,1,195,1,196,1,196,1,196, + 1,197,1,197,1,197,1,198,1,198,1,198,1,199,1,199,1,199,1,200,1,200, + 1,200,1,201,1,201,1,201,1,202,1,202,1,202,1,203,1,203,1,203,1,204, + 1,204,1,204,1,205,1,205,1,205,1,206,1,206,1,206,1,207,1,207,1,207, + 1,208,1,208,1,208,1,209,1,209,1,209,1,210,1,210,1,210,1,211,1,211, + 1,211,1,212,1,212,1,212,1,213,1,213,1,213,1,214,1,214,1,214,1,215, + 1,215,1,215,1,216,1,216,1,216,1,217,1,217,1,217,1,218,1,218,1,218, + 1,219,1,219,1,219,1,220,1,220,1,220,1,221,1,221,1,221,1,222,1,222, + 1,222,1,223,1,223,1,223,1,224,1,224,1,224,1,225,1,225,1,225,1,226, + 1,226,1,226,1,227,1,227,1,227,1,228,1,228,1,228,1,229,1,229,1,229, + 1,230,1,230,1,230,1,231,1,231,1,231,1,232,1,232,1,232,1,233,1,233, + 1,233,1,234,1,234,1,234,1,235,1,235,1,235,1,236,1,236,1,236,1,237, + 1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,239,1,240,1,240,1,240, + 1,241,1,241,1,241,1,242,1,242,1,242,1,243,1,243,1,243,1,244,1,244, + 1,244,1,245,1,245,1,245,1,246,1,246,1,246,1,247,4,247,1211,8,247, + 11,247,12,247,1212,1,248,3,248,1216,8,248,1,248,1,248,0,0,249,1, + 1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27, + 14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49, + 25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71, + 36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93, + 47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113, + 57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66, + 133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151, + 76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85, + 171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189, + 95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207, + 104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223, + 112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239, + 120,241,121,243,122,245,123,247,124,249,125,251,126,253,127,255, + 128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271, + 136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287, + 144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303, + 152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319, + 160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335, + 168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351, + 176,353,177,355,178,357,179,359,180,361,181,363,182,365,183,367, + 184,369,185,371,186,373,187,375,188,377,189,379,190,381,191,383, + 192,385,193,387,194,389,195,391,196,393,197,395,198,397,199,399, + 200,401,201,403,202,405,203,407,204,409,205,411,206,413,207,415, + 208,417,209,419,210,421,211,423,212,425,213,427,214,429,215,431, + 216,433,217,435,218,437,219,439,220,441,221,443,222,445,223,447, + 224,449,225,451,226,453,227,455,228,457,229,459,230,461,231,463, + 232,465,233,467,234,469,235,471,236,473,237,475,238,477,239,479, + 240,481,241,483,242,485,243,487,244,489,245,491,246,493,247,495, + 248,497,249,1,0,1,2,0,9,9,32,32,1220,0,1,1,0,0,0,0,3,1,0,0,0,0,5, + 1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1, + 0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1, + 0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1, + 0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1, + 0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1, + 0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1, + 0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1, + 0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1, + 0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1, + 0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105, + 1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0, + 0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1, + 0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0, + 133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0, + 0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151, + 1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0, + 0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1, + 0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0, + 179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0, + 0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197, + 1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0, + 0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1, + 0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0, + 225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0, + 0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243, + 1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0, + 0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1, + 0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0, + 271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0, + 0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289, + 1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0, + 0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1, + 0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0, + 317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0, + 0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335, + 1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0, + 0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1, + 0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0, + 363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0, + 0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381, + 1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0, + 0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1, + 0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0, + 409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0, + 0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427, + 1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0, + 0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1, + 0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0, + 455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0, + 0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473, + 1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0, + 0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1, + 0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,1,499,1,0,0,0,3, + 502,1,0,0,0,5,505,1,0,0,0,7,508,1,0,0,0,9,511,1,0,0,0,11,514,1,0, + 0,0,13,517,1,0,0,0,15,520,1,0,0,0,17,523,1,0,0,0,19,526,1,0,0,0, + 21,529,1,0,0,0,23,532,1,0,0,0,25,535,1,0,0,0,27,538,1,0,0,0,29,541, + 1,0,0,0,31,544,1,0,0,0,33,547,1,0,0,0,35,550,1,0,0,0,37,553,1,0, + 0,0,39,555,1,0,0,0,41,558,1,0,0,0,43,561,1,0,0,0,45,564,1,0,0,0, + 47,567,1,0,0,0,49,570,1,0,0,0,51,573,1,0,0,0,53,576,1,0,0,0,55,579, + 1,0,0,0,57,582,1,0,0,0,59,585,1,0,0,0,61,588,1,0,0,0,63,591,1,0, + 0,0,65,594,1,0,0,0,67,597,1,0,0,0,69,600,1,0,0,0,71,603,1,0,0,0, + 73,606,1,0,0,0,75,609,1,0,0,0,77,611,1,0,0,0,79,613,1,0,0,0,81,615, + 1,0,0,0,83,617,1,0,0,0,85,619,1,0,0,0,87,621,1,0,0,0,89,624,1,0, + 0,0,91,627,1,0,0,0,93,630,1,0,0,0,95,633,1,0,0,0,97,635,1,0,0,0, + 99,638,1,0,0,0,101,641,1,0,0,0,103,644,1,0,0,0,105,647,1,0,0,0,107, + 649,1,0,0,0,109,652,1,0,0,0,111,655,1,0,0,0,113,658,1,0,0,0,115, + 661,1,0,0,0,117,663,1,0,0,0,119,666,1,0,0,0,121,669,1,0,0,0,123, + 672,1,0,0,0,125,675,1,0,0,0,127,677,1,0,0,0,129,680,1,0,0,0,131, + 683,1,0,0,0,133,686,1,0,0,0,135,689,1,0,0,0,137,691,1,0,0,0,139, + 694,1,0,0,0,141,697,1,0,0,0,143,700,1,0,0,0,145,703,1,0,0,0,147, + 705,1,0,0,0,149,708,1,0,0,0,151,711,1,0,0,0,153,714,1,0,0,0,155, + 717,1,0,0,0,157,719,1,0,0,0,159,722,1,0,0,0,161,725,1,0,0,0,163, + 728,1,0,0,0,165,731,1,0,0,0,167,733,1,0,0,0,169,736,1,0,0,0,171, + 739,1,0,0,0,173,742,1,0,0,0,175,745,1,0,0,0,177,747,1,0,0,0,179, + 750,1,0,0,0,181,753,1,0,0,0,183,756,1,0,0,0,185,759,1,0,0,0,187, + 761,1,0,0,0,189,764,1,0,0,0,191,767,1,0,0,0,193,770,1,0,0,0,195, + 773,1,0,0,0,197,775,1,0,0,0,199,778,1,0,0,0,201,781,1,0,0,0,203, + 784,1,0,0,0,205,787,1,0,0,0,207,789,1,0,0,0,209,792,1,0,0,0,211, + 795,1,0,0,0,213,798,1,0,0,0,215,801,1,0,0,0,217,803,1,0,0,0,219, + 806,1,0,0,0,221,809,1,0,0,0,223,812,1,0,0,0,225,815,1,0,0,0,227, + 817,1,0,0,0,229,820,1,0,0,0,231,823,1,0,0,0,233,826,1,0,0,0,235, + 829,1,0,0,0,237,831,1,0,0,0,239,834,1,0,0,0,241,837,1,0,0,0,243, + 840,1,0,0,0,245,843,1,0,0,0,247,845,1,0,0,0,249,848,1,0,0,0,251, + 851,1,0,0,0,253,854,1,0,0,0,255,857,1,0,0,0,257,859,1,0,0,0,259, + 862,1,0,0,0,261,865,1,0,0,0,263,868,1,0,0,0,265,871,1,0,0,0,267, + 873,1,0,0,0,269,875,1,0,0,0,271,877,1,0,0,0,273,879,1,0,0,0,275, + 881,1,0,0,0,277,883,1,0,0,0,279,885,1,0,0,0,281,888,1,0,0,0,283, + 891,1,0,0,0,285,894,1,0,0,0,287,897,1,0,0,0,289,900,1,0,0,0,291, + 903,1,0,0,0,293,906,1,0,0,0,295,909,1,0,0,0,297,912,1,0,0,0,299, + 915,1,0,0,0,301,918,1,0,0,0,303,921,1,0,0,0,305,924,1,0,0,0,307, + 927,1,0,0,0,309,930,1,0,0,0,311,933,1,0,0,0,313,936,1,0,0,0,315, + 939,1,0,0,0,317,942,1,0,0,0,319,945,1,0,0,0,321,948,1,0,0,0,323, + 951,1,0,0,0,325,954,1,0,0,0,327,957,1,0,0,0,329,960,1,0,0,0,331, + 963,1,0,0,0,333,966,1,0,0,0,335,969,1,0,0,0,337,972,1,0,0,0,339, + 975,1,0,0,0,341,978,1,0,0,0,343,981,1,0,0,0,345,984,1,0,0,0,347, + 987,1,0,0,0,349,990,1,0,0,0,351,993,1,0,0,0,353,996,1,0,0,0,355, + 999,1,0,0,0,357,1002,1,0,0,0,359,1005,1,0,0,0,361,1008,1,0,0,0,363, + 1011,1,0,0,0,365,1014,1,0,0,0,367,1017,1,0,0,0,369,1020,1,0,0,0, + 371,1023,1,0,0,0,373,1026,1,0,0,0,375,1029,1,0,0,0,377,1032,1,0, + 0,0,379,1035,1,0,0,0,381,1038,1,0,0,0,383,1041,1,0,0,0,385,1044, + 1,0,0,0,387,1047,1,0,0,0,389,1050,1,0,0,0,391,1053,1,0,0,0,393,1056, + 1,0,0,0,395,1059,1,0,0,0,397,1062,1,0,0,0,399,1065,1,0,0,0,401,1068, + 1,0,0,0,403,1071,1,0,0,0,405,1074,1,0,0,0,407,1077,1,0,0,0,409,1080, + 1,0,0,0,411,1083,1,0,0,0,413,1086,1,0,0,0,415,1089,1,0,0,0,417,1092, + 1,0,0,0,419,1095,1,0,0,0,421,1098,1,0,0,0,423,1101,1,0,0,0,425,1104, + 1,0,0,0,427,1107,1,0,0,0,429,1110,1,0,0,0,431,1113,1,0,0,0,433,1116, + 1,0,0,0,435,1119,1,0,0,0,437,1122,1,0,0,0,439,1125,1,0,0,0,441,1128, + 1,0,0,0,443,1131,1,0,0,0,445,1134,1,0,0,0,447,1137,1,0,0,0,449,1140, + 1,0,0,0,451,1143,1,0,0,0,453,1146,1,0,0,0,455,1149,1,0,0,0,457,1152, + 1,0,0,0,459,1155,1,0,0,0,461,1158,1,0,0,0,463,1161,1,0,0,0,465,1164, + 1,0,0,0,467,1167,1,0,0,0,469,1170,1,0,0,0,471,1173,1,0,0,0,473,1176, + 1,0,0,0,475,1179,1,0,0,0,477,1182,1,0,0,0,479,1185,1,0,0,0,481,1188, + 1,0,0,0,483,1191,1,0,0,0,485,1194,1,0,0,0,487,1197,1,0,0,0,489,1200, + 1,0,0,0,491,1203,1,0,0,0,493,1206,1,0,0,0,495,1210,1,0,0,0,497,1215, + 1,0,0,0,499,500,5,2965,0,0,500,501,5,3021,0,0,501,2,1,0,0,0,502, + 503,5,2970,0,0,503,504,5,3021,0,0,504,4,1,0,0,0,505,506,5,2975,0, + 0,506,507,5,3021,0,0,507,6,1,0,0,0,508,509,5,2980,0,0,509,510,5, + 3021,0,0,510,8,1,0,0,0,511,512,5,2986,0,0,512,513,5,3021,0,0,513, + 10,1,0,0,0,514,515,5,2993,0,0,515,516,5,3021,0,0,516,12,1,0,0,0, + 517,518,5,2974,0,0,518,519,5,3021,0,0,519,14,1,0,0,0,520,521,5,2969, + 0,0,521,522,5,3021,0,0,522,16,1,0,0,0,523,524,5,2979,0,0,524,525, + 5,3021,0,0,525,18,1,0,0,0,526,527,5,2984,0,0,527,528,5,3021,0,0, + 528,20,1,0,0,0,529,530,5,2990,0,0,530,531,5,3021,0,0,531,22,1,0, + 0,0,532,533,5,2985,0,0,533,534,5,3021,0,0,534,24,1,0,0,0,535,536, + 5,2991,0,0,536,537,5,3021,0,0,537,26,1,0,0,0,538,539,5,2992,0,0, + 539,540,5,3021,0,0,540,28,1,0,0,0,541,542,5,2994,0,0,542,543,5,3021, + 0,0,543,30,1,0,0,0,544,545,5,2997,0,0,545,546,5,3021,0,0,546,32, + 1,0,0,0,547,548,5,2996,0,0,548,549,5,3021,0,0,549,34,1,0,0,0,550, + 551,5,2995,0,0,551,552,5,3021,0,0,552,36,1,0,0,0,553,554,5,2947, + 0,0,554,38,1,0,0,0,555,556,5,2965,0,0,556,557,5,3016,0,0,557,40, + 1,0,0,0,558,559,5,2969,0,0,559,560,5,3016,0,0,560,42,1,0,0,0,561, + 562,5,2970,0,0,562,563,5,3016,0,0,563,44,1,0,0,0,564,565,5,2974, + 0,0,565,566,5,3016,0,0,566,46,1,0,0,0,567,568,5,2975,0,0,568,569, + 5,3016,0,0,569,48,1,0,0,0,570,571,5,2979,0,0,571,572,5,3016,0,0, + 572,50,1,0,0,0,573,574,5,2980,0,0,574,575,5,3016,0,0,575,52,1,0, + 0,0,576,577,5,2984,0,0,577,578,5,3016,0,0,578,54,1,0,0,0,579,580, + 5,2986,0,0,580,581,5,3016,0,0,581,56,1,0,0,0,582,583,5,2990,0,0, + 583,584,5,3016,0,0,584,58,1,0,0,0,585,586,5,2991,0,0,586,587,5,3016, + 0,0,587,60,1,0,0,0,588,589,5,2992,0,0,589,590,5,3016,0,0,590,62, + 1,0,0,0,591,592,5,2994,0,0,592,593,5,3016,0,0,593,64,1,0,0,0,594, + 595,5,2997,0,0,595,596,5,3016,0,0,596,66,1,0,0,0,597,598,5,2996, + 0,0,598,599,5,3016,0,0,599,68,1,0,0,0,600,601,5,2995,0,0,601,602, + 5,3016,0,0,602,70,1,0,0,0,603,604,5,2993,0,0,604,605,5,3016,0,0, + 605,72,1,0,0,0,606,607,5,2985,0,0,607,608,5,3016,0,0,608,74,1,0, + 0,0,609,610,5,2949,0,0,610,76,1,0,0,0,611,612,5,2951,0,0,612,78, + 1,0,0,0,613,614,5,2953,0,0,614,80,1,0,0,0,615,616,5,2958,0,0,616, + 82,1,0,0,0,617,618,5,2962,0,0,618,84,1,0,0,0,619,620,5,2965,0,0, + 620,86,1,0,0,0,621,622,5,2965,0,0,622,623,5,3007,0,0,623,88,1,0, + 0,0,624,625,5,2965,0,0,625,626,5,3009,0,0,626,90,1,0,0,0,627,628, + 5,2965,0,0,628,629,5,3014,0,0,629,92,1,0,0,0,630,631,5,2965,0,0, + 631,632,5,3018,0,0,632,94,1,0,0,0,633,634,5,2969,0,0,634,96,1,0, + 0,0,635,636,5,2969,0,0,636,637,5,3007,0,0,637,98,1,0,0,0,638,639, + 5,2969,0,0,639,640,5,3009,0,0,640,100,1,0,0,0,641,642,5,2969,0,0, + 642,643,5,3014,0,0,643,102,1,0,0,0,644,645,5,2969,0,0,645,646,5, + 3018,0,0,646,104,1,0,0,0,647,648,5,2970,0,0,648,106,1,0,0,0,649, + 650,5,2970,0,0,650,651,5,3007,0,0,651,108,1,0,0,0,652,653,5,2970, + 0,0,653,654,5,3009,0,0,654,110,1,0,0,0,655,656,5,2970,0,0,656,657, + 5,3014,0,0,657,112,1,0,0,0,658,659,5,2970,0,0,659,660,5,3018,0,0, + 660,114,1,0,0,0,661,662,5,2974,0,0,662,116,1,0,0,0,663,664,5,2974, + 0,0,664,665,5,3007,0,0,665,118,1,0,0,0,666,667,5,2974,0,0,667,668, + 5,3009,0,0,668,120,1,0,0,0,669,670,5,2974,0,0,670,671,5,3014,0,0, + 671,122,1,0,0,0,672,673,5,2974,0,0,673,674,5,3018,0,0,674,124,1, + 0,0,0,675,676,5,2975,0,0,676,126,1,0,0,0,677,678,5,2975,0,0,678, + 679,5,3007,0,0,679,128,1,0,0,0,680,681,5,2975,0,0,681,682,5,3009, + 0,0,682,130,1,0,0,0,683,684,5,2975,0,0,684,685,5,3014,0,0,685,132, + 1,0,0,0,686,687,5,2975,0,0,687,688,5,3018,0,0,688,134,1,0,0,0,689, + 690,5,2979,0,0,690,136,1,0,0,0,691,692,5,2979,0,0,692,693,5,3007, + 0,0,693,138,1,0,0,0,694,695,5,2979,0,0,695,696,5,3009,0,0,696,140, + 1,0,0,0,697,698,5,2979,0,0,698,699,5,3014,0,0,699,142,1,0,0,0,700, + 701,5,2979,0,0,701,702,5,3018,0,0,702,144,1,0,0,0,703,704,5,2980, + 0,0,704,146,1,0,0,0,705,706,5,2980,0,0,706,707,5,3007,0,0,707,148, + 1,0,0,0,708,709,5,2980,0,0,709,710,5,3009,0,0,710,150,1,0,0,0,711, + 712,5,2980,0,0,712,713,5,3014,0,0,713,152,1,0,0,0,714,715,5,2980, + 0,0,715,716,5,3018,0,0,716,154,1,0,0,0,717,718,5,2984,0,0,718,156, + 1,0,0,0,719,720,5,2984,0,0,720,721,5,3007,0,0,721,158,1,0,0,0,722, + 723,5,2984,0,0,723,724,5,3009,0,0,724,160,1,0,0,0,725,726,5,2984, + 0,0,726,727,5,3014,0,0,727,162,1,0,0,0,728,729,5,2984,0,0,729,730, + 5,3018,0,0,730,164,1,0,0,0,731,732,5,2986,0,0,732,166,1,0,0,0,733, + 734,5,2986,0,0,734,735,5,3007,0,0,735,168,1,0,0,0,736,737,5,2986, + 0,0,737,738,5,3009,0,0,738,170,1,0,0,0,739,740,5,2986,0,0,740,741, + 5,3014,0,0,741,172,1,0,0,0,742,743,5,2986,0,0,743,744,5,3018,0,0, + 744,174,1,0,0,0,745,746,5,2990,0,0,746,176,1,0,0,0,747,748,5,2990, + 0,0,748,749,5,3007,0,0,749,178,1,0,0,0,750,751,5,2990,0,0,751,752, + 5,3009,0,0,752,180,1,0,0,0,753,754,5,2990,0,0,754,755,5,3014,0,0, + 755,182,1,0,0,0,756,757,5,2990,0,0,757,758,5,3018,0,0,758,184,1, + 0,0,0,759,760,5,2991,0,0,760,186,1,0,0,0,761,762,5,2991,0,0,762, + 763,5,3007,0,0,763,188,1,0,0,0,764,765,5,2991,0,0,765,766,5,3009, + 0,0,766,190,1,0,0,0,767,768,5,2991,0,0,768,769,5,3014,0,0,769,192, + 1,0,0,0,770,771,5,2991,0,0,771,772,5,3018,0,0,772,194,1,0,0,0,773, + 774,5,2992,0,0,774,196,1,0,0,0,775,776,5,2992,0,0,776,777,5,3007, + 0,0,777,198,1,0,0,0,778,779,5,2992,0,0,779,780,5,3009,0,0,780,200, + 1,0,0,0,781,782,5,2992,0,0,782,783,5,3014,0,0,783,202,1,0,0,0,784, + 785,5,2992,0,0,785,786,5,3018,0,0,786,204,1,0,0,0,787,788,5,2994, + 0,0,788,206,1,0,0,0,789,790,5,2994,0,0,790,791,5,3007,0,0,791,208, + 1,0,0,0,792,793,5,2994,0,0,793,794,5,3009,0,0,794,210,1,0,0,0,795, + 796,5,2994,0,0,796,797,5,3014,0,0,797,212,1,0,0,0,798,799,5,2994, + 0,0,799,800,5,3018,0,0,800,214,1,0,0,0,801,802,5,2997,0,0,802,216, + 1,0,0,0,803,804,5,2997,0,0,804,805,5,3007,0,0,805,218,1,0,0,0,806, + 807,5,2997,0,0,807,808,5,3009,0,0,808,220,1,0,0,0,809,810,5,2997, + 0,0,810,811,5,3014,0,0,811,222,1,0,0,0,812,813,5,2997,0,0,813,814, + 5,3018,0,0,814,224,1,0,0,0,815,816,5,2996,0,0,816,226,1,0,0,0,817, + 818,5,2996,0,0,818,819,5,3007,0,0,819,228,1,0,0,0,820,821,5,2996, + 0,0,821,822,5,3009,0,0,822,230,1,0,0,0,823,824,5,2996,0,0,824,825, + 5,3014,0,0,825,232,1,0,0,0,826,827,5,2996,0,0,827,828,5,3018,0,0, + 828,234,1,0,0,0,829,830,5,2995,0,0,830,236,1,0,0,0,831,832,5,2995, + 0,0,832,833,5,3007,0,0,833,238,1,0,0,0,834,835,5,2995,0,0,835,836, + 5,3009,0,0,836,240,1,0,0,0,837,838,5,2995,0,0,838,839,5,3014,0,0, + 839,242,1,0,0,0,840,841,5,2995,0,0,841,842,5,3018,0,0,842,244,1, + 0,0,0,843,844,5,2993,0,0,844,246,1,0,0,0,845,846,5,2993,0,0,846, + 847,5,3007,0,0,847,248,1,0,0,0,848,849,5,2993,0,0,849,850,5,3009, + 0,0,850,250,1,0,0,0,851,852,5,2993,0,0,852,853,5,3014,0,0,853,252, + 1,0,0,0,854,855,5,2993,0,0,855,856,5,3018,0,0,856,254,1,0,0,0,857, + 858,5,2985,0,0,858,256,1,0,0,0,859,860,5,2985,0,0,860,861,5,3007, + 0,0,861,258,1,0,0,0,862,863,5,2985,0,0,863,864,5,3009,0,0,864,260, + 1,0,0,0,865,866,5,2985,0,0,866,867,5,3014,0,0,867,262,1,0,0,0,868, + 869,5,2985,0,0,869,870,5,3018,0,0,870,264,1,0,0,0,871,872,5,2950, + 0,0,872,266,1,0,0,0,873,874,5,2952,0,0,874,268,1,0,0,0,875,876,5, + 2954,0,0,876,270,1,0,0,0,877,878,5,2959,0,0,878,272,1,0,0,0,879, + 880,5,2960,0,0,880,274,1,0,0,0,881,882,5,2963,0,0,882,276,1,0,0, + 0,883,884,5,2964,0,0,884,278,1,0,0,0,885,886,5,2965,0,0,886,887, + 5,3006,0,0,887,280,1,0,0,0,888,889,5,2965,0,0,889,890,5,3008,0,0, + 890,282,1,0,0,0,891,892,5,2965,0,0,892,893,5,3010,0,0,893,284,1, + 0,0,0,894,895,5,2965,0,0,895,896,5,3015,0,0,896,286,1,0,0,0,897, + 898,5,2965,0,0,898,899,5,3019,0,0,899,288,1,0,0,0,900,901,5,2965, + 0,0,901,902,5,3020,0,0,902,290,1,0,0,0,903,904,5,2969,0,0,904,905, + 5,3006,0,0,905,292,1,0,0,0,906,907,5,2969,0,0,907,908,5,3008,0,0, + 908,294,1,0,0,0,909,910,5,2969,0,0,910,911,5,3010,0,0,911,296,1, + 0,0,0,912,913,5,2969,0,0,913,914,5,3015,0,0,914,298,1,0,0,0,915, + 916,5,2969,0,0,916,917,5,3019,0,0,917,300,1,0,0,0,918,919,5,2969, + 0,0,919,920,5,3020,0,0,920,302,1,0,0,0,921,922,5,2970,0,0,922,923, + 5,3006,0,0,923,304,1,0,0,0,924,925,5,2970,0,0,925,926,5,3008,0,0, + 926,306,1,0,0,0,927,928,5,2970,0,0,928,929,5,3010,0,0,929,308,1, + 0,0,0,930,931,5,2970,0,0,931,932,5,3015,0,0,932,310,1,0,0,0,933, + 934,5,2970,0,0,934,935,5,3019,0,0,935,312,1,0,0,0,936,937,5,2970, + 0,0,937,938,5,3020,0,0,938,314,1,0,0,0,939,940,5,2974,0,0,940,941, + 5,3006,0,0,941,316,1,0,0,0,942,943,5,2974,0,0,943,944,5,3008,0,0, + 944,318,1,0,0,0,945,946,5,2974,0,0,946,947,5,3010,0,0,947,320,1, + 0,0,0,948,949,5,2974,0,0,949,950,5,3015,0,0,950,322,1,0,0,0,951, + 952,5,2974,0,0,952,953,5,3019,0,0,953,324,1,0,0,0,954,955,5,2974, + 0,0,955,956,5,3020,0,0,956,326,1,0,0,0,957,958,5,2975,0,0,958,959, + 5,3006,0,0,959,328,1,0,0,0,960,961,5,2975,0,0,961,962,5,3008,0,0, + 962,330,1,0,0,0,963,964,5,2975,0,0,964,965,5,3010,0,0,965,332,1, + 0,0,0,966,967,5,2975,0,0,967,968,5,3015,0,0,968,334,1,0,0,0,969, + 970,5,2975,0,0,970,971,5,3019,0,0,971,336,1,0,0,0,972,973,5,2975, + 0,0,973,974,5,3020,0,0,974,338,1,0,0,0,975,976,5,2979,0,0,976,977, + 5,3006,0,0,977,340,1,0,0,0,978,979,5,2979,0,0,979,980,5,3008,0,0, + 980,342,1,0,0,0,981,982,5,2979,0,0,982,983,5,3010,0,0,983,344,1, + 0,0,0,984,985,5,2979,0,0,985,986,5,3015,0,0,986,346,1,0,0,0,987, + 988,5,2979,0,0,988,989,5,3019,0,0,989,348,1,0,0,0,990,991,5,2979, + 0,0,991,992,5,3020,0,0,992,350,1,0,0,0,993,994,5,2980,0,0,994,995, + 5,3006,0,0,995,352,1,0,0,0,996,997,5,2980,0,0,997,998,5,3008,0,0, + 998,354,1,0,0,0,999,1000,5,2980,0,0,1000,1001,5,3010,0,0,1001,356, + 1,0,0,0,1002,1003,5,2980,0,0,1003,1004,5,3015,0,0,1004,358,1,0,0, + 0,1005,1006,5,2980,0,0,1006,1007,5,3019,0,0,1007,360,1,0,0,0,1008, + 1009,5,2980,0,0,1009,1010,5,3020,0,0,1010,362,1,0,0,0,1011,1012, + 5,2984,0,0,1012,1013,5,3006,0,0,1013,364,1,0,0,0,1014,1015,5,2984, + 0,0,1015,1016,5,3008,0,0,1016,366,1,0,0,0,1017,1018,5,2984,0,0,1018, + 1019,5,3010,0,0,1019,368,1,0,0,0,1020,1021,5,2984,0,0,1021,1022, + 5,3015,0,0,1022,370,1,0,0,0,1023,1024,5,2984,0,0,1024,1025,5,3019, + 0,0,1025,372,1,0,0,0,1026,1027,5,2984,0,0,1027,1028,5,3020,0,0,1028, + 374,1,0,0,0,1029,1030,5,2986,0,0,1030,1031,5,3006,0,0,1031,376,1, + 0,0,0,1032,1033,5,2986,0,0,1033,1034,5,3008,0,0,1034,378,1,0,0,0, + 1035,1036,5,2986,0,0,1036,1037,5,3010,0,0,1037,380,1,0,0,0,1038, + 1039,5,2986,0,0,1039,1040,5,3015,0,0,1040,382,1,0,0,0,1041,1042, + 5,2986,0,0,1042,1043,5,3019,0,0,1043,384,1,0,0,0,1044,1045,5,2986, + 0,0,1045,1046,5,3020,0,0,1046,386,1,0,0,0,1047,1048,5,2990,0,0,1048, + 1049,5,3006,0,0,1049,388,1,0,0,0,1050,1051,5,2990,0,0,1051,1052, + 5,3008,0,0,1052,390,1,0,0,0,1053,1054,5,2990,0,0,1054,1055,5,3010, + 0,0,1055,392,1,0,0,0,1056,1057,5,2990,0,0,1057,1058,5,3015,0,0,1058, + 394,1,0,0,0,1059,1060,5,2990,0,0,1060,1061,5,3019,0,0,1061,396,1, + 0,0,0,1062,1063,5,2990,0,0,1063,1064,5,3020,0,0,1064,398,1,0,0,0, + 1065,1066,5,2991,0,0,1066,1067,5,3006,0,0,1067,400,1,0,0,0,1068, + 1069,5,2991,0,0,1069,1070,5,3008,0,0,1070,402,1,0,0,0,1071,1072, + 5,2991,0,0,1072,1073,5,3010,0,0,1073,404,1,0,0,0,1074,1075,5,2991, + 0,0,1075,1076,5,3015,0,0,1076,406,1,0,0,0,1077,1078,5,2991,0,0,1078, + 1079,5,3019,0,0,1079,408,1,0,0,0,1080,1081,5,2991,0,0,1081,1082, + 5,3020,0,0,1082,410,1,0,0,0,1083,1084,5,2992,0,0,1084,1085,5,3006, + 0,0,1085,412,1,0,0,0,1086,1087,5,2992,0,0,1087,1088,5,3008,0,0,1088, + 414,1,0,0,0,1089,1090,5,2992,0,0,1090,1091,5,3010,0,0,1091,416,1, + 0,0,0,1092,1093,5,2992,0,0,1093,1094,5,3015,0,0,1094,418,1,0,0,0, + 1095,1096,5,2992,0,0,1096,1097,5,3019,0,0,1097,420,1,0,0,0,1098, + 1099,5,2992,0,0,1099,1100,5,3020,0,0,1100,422,1,0,0,0,1101,1102, + 5,2994,0,0,1102,1103,5,3006,0,0,1103,424,1,0,0,0,1104,1105,5,2994, + 0,0,1105,1106,5,3008,0,0,1106,426,1,0,0,0,1107,1108,5,2994,0,0,1108, + 1109,5,3010,0,0,1109,428,1,0,0,0,1110,1111,5,2994,0,0,1111,1112, + 5,3015,0,0,1112,430,1,0,0,0,1113,1114,5,2994,0,0,1114,1115,5,3019, + 0,0,1115,432,1,0,0,0,1116,1117,5,2994,0,0,1117,1118,5,3020,0,0,1118, + 434,1,0,0,0,1119,1120,5,2997,0,0,1120,1121,5,3006,0,0,1121,436,1, + 0,0,0,1122,1123,5,2997,0,0,1123,1124,5,3008,0,0,1124,438,1,0,0,0, + 1125,1126,5,2997,0,0,1126,1127,5,3010,0,0,1127,440,1,0,0,0,1128, + 1129,5,2997,0,0,1129,1130,5,3015,0,0,1130,442,1,0,0,0,1131,1132, + 5,2997,0,0,1132,1133,5,3019,0,0,1133,444,1,0,0,0,1134,1135,5,2997, + 0,0,1135,1136,5,3020,0,0,1136,446,1,0,0,0,1137,1138,5,2996,0,0,1138, + 1139,5,3006,0,0,1139,448,1,0,0,0,1140,1141,5,2996,0,0,1141,1142, + 5,3008,0,0,1142,450,1,0,0,0,1143,1144,5,2996,0,0,1144,1145,5,3010, + 0,0,1145,452,1,0,0,0,1146,1147,5,2996,0,0,1147,1148,5,3015,0,0,1148, + 454,1,0,0,0,1149,1150,5,2996,0,0,1150,1151,5,3019,0,0,1151,456,1, + 0,0,0,1152,1153,5,2996,0,0,1153,1154,5,3020,0,0,1154,458,1,0,0,0, + 1155,1156,5,2995,0,0,1156,1157,5,3006,0,0,1157,460,1,0,0,0,1158, + 1159,5,2995,0,0,1159,1160,5,3008,0,0,1160,462,1,0,0,0,1161,1162, + 5,2995,0,0,1162,1163,5,3010,0,0,1163,464,1,0,0,0,1164,1165,5,2995, + 0,0,1165,1166,5,3015,0,0,1166,466,1,0,0,0,1167,1168,5,2995,0,0,1168, + 1169,5,3019,0,0,1169,468,1,0,0,0,1170,1171,5,2995,0,0,1171,1172, + 5,3020,0,0,1172,470,1,0,0,0,1173,1174,5,2993,0,0,1174,1175,5,3006, + 0,0,1175,472,1,0,0,0,1176,1177,5,2993,0,0,1177,1178,5,3008,0,0,1178, + 474,1,0,0,0,1179,1180,5,2993,0,0,1180,1181,5,3010,0,0,1181,476,1, + 0,0,0,1182,1183,5,2993,0,0,1183,1184,5,3015,0,0,1184,478,1,0,0,0, + 1185,1186,5,2993,0,0,1186,1187,5,3019,0,0,1187,480,1,0,0,0,1188, + 1189,5,2993,0,0,1189,1190,5,3020,0,0,1190,482,1,0,0,0,1191,1192, + 5,2985,0,0,1192,1193,5,3006,0,0,1193,484,1,0,0,0,1194,1195,5,2985, + 0,0,1195,1196,5,3008,0,0,1196,486,1,0,0,0,1197,1198,5,2985,0,0,1198, + 1199,5,3010,0,0,1199,488,1,0,0,0,1200,1201,5,2985,0,0,1201,1202, + 5,3015,0,0,1202,490,1,0,0,0,1203,1204,5,2985,0,0,1204,1205,5,3019, + 0,0,1205,492,1,0,0,0,1206,1207,5,2985,0,0,1207,1208,5,3020,0,0,1208, + 494,1,0,0,0,1209,1211,7,0,0,0,1210,1209,1,0,0,0,1211,1212,1,0,0, + 0,1212,1210,1,0,0,0,1212,1213,1,0,0,0,1213,496,1,0,0,0,1214,1216, + 5,13,0,0,1215,1214,1,0,0,0,1215,1216,1,0,0,0,1216,1217,1,0,0,0,1217, + 1218,5,10,0,0,1218,498,1,0,0,0,3,0,1212,1215,0 ] class ஆசிரியப்பாLexer(Lexer): @@ -713,20 +716,26 @@ class ஆசிரியப்பாLexer(Lexer): T__244 = 245 T__245 = 246 T__246 = 247 - T__247 = 248 - I = 249 + I = 248 + NL = 249 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] modeNames = [ "DEFAULT_MODE" ] literalNames = [ "", - "'\\n'", "'\\u0B95\\u0BCD'", "'\\u0B9A\\u0BCD'", "'\\u0B9F\\u0BCD'", + "'\\u0B95\\u0BCD'", "'\\u0B9A\\u0BCD'", "'\\u0B9F\\u0BCD'", "'\\u0BA4\\u0BCD'", "'\\u0BAA\\u0BCD'", "'\\u0BB1\\u0BCD'", "'\\u0B9E\\u0BCD'", "'\\u0B99\\u0BCD'", "'\\u0BA3\\u0BCD'", "'\\u0BA8\\u0BCD'", "'\\u0BAE\\u0BCD'", "'\\u0BA9\\u0BCD'", "'\\u0BAF\\u0BCD'", "'\\u0BB0\\u0BCD'", "'\\u0BB2\\u0BCD'", "'\\u0BB5\\u0BCD'", "'\\u0BB4\\u0BCD'", "'\\u0BB3\\u0BCD'", + "'\\u0B83'", "'\\u0B95\\u0BC8'", "'\\u0B99\\u0BC8'", "'\\u0B9A\\u0BC8'", + "'\\u0B9E\\u0BC8'", "'\\u0B9F\\u0BC8'", "'\\u0BA3\\u0BC8'", + "'\\u0BA4\\u0BC8'", "'\\u0BA8\\u0BC8'", "'\\u0BAA\\u0BC8'", + "'\\u0BAE\\u0BC8'", "'\\u0BAF\\u0BC8'", "'\\u0BB0\\u0BC8'", + "'\\u0BB2\\u0BC8'", "'\\u0BB5\\u0BC8'", "'\\u0BB4\\u0BC8'", + "'\\u0BB3\\u0BC8'", "'\\u0BB1\\u0BC8'", "'\\u0BA9\\u0BC8'", "'\\u0B85'", "'\\u0B87'", "'\\u0B89'", "'\\u0B8E'", "'\\u0B92'", "'\\u0B95'", "'\\u0B95\\u0BBF'", "'\\u0B95\\u0BC1'", "'\\u0B95\\u0BC6'", "'\\u0B95\\u0BCA'", "'\\u0B99'", "'\\u0B99\\u0BBF'", "'\\u0B99\\u0BC1'", @@ -753,52 +762,46 @@ class ஆசிரியப்பாLexer(Lexer): "'\\u0BB1\\u0BC6'", "'\\u0BB1\\u0BCA'", "'\\u0BA9'", "'\\u0BA9\\u0BBF'", "'\\u0BA9\\u0BC1'", "'\\u0BA9\\u0BC6'", "'\\u0BA9\\u0BCA'", "'\\u0B86'", "'\\u0B88'", "'\\u0B8A'", "'\\u0B8F'", "'\\u0B90'", - "'\\u0B93'", "'\\u0B92\\u0BB3'", "'\\u0B95\\u0BBE'", "'\\u0B95\\u0BC0'", - "'\\u0B95\\u0BC2'", "'\\u0B95\\u0BC7'", "'\\u0B95\\u0BC8'", - "'\\u0B95\\u0BCB'", "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", - "'\\u0B99\\u0BC0'", "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", - "'\\u0B99\\u0BC8'", "'\\u0B99\\u0BCB'", "'\\u0B99\\u0BCC'", - "'\\u0B9A\\u0BBE'", "'\\u0B9A\\u0BC0'", "'\\u0B9A\\u0BC2'", - "'\\u0B9A\\u0BC7'", "'\\u0B9A\\u0BC8'", "'\\u0B9A\\u0BCB'", + "'\\u0B93'", "'\\u0B94'", "'\\u0B95\\u0BBE'", "'\\u0B95\\u0BC0'", + "'\\u0B95\\u0BC2'", "'\\u0B95\\u0BC7'", "'\\u0B95\\u0BCB'", + "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", "'\\u0B99\\u0BC0'", + "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", "'\\u0B99\\u0BCB'", + "'\\u0B99\\u0BCC'", "'\\u0B9A\\u0BBE'", "'\\u0B9A\\u0BC0'", + "'\\u0B9A\\u0BC2'", "'\\u0B9A\\u0BC7'", "'\\u0B9A\\u0BCB'", "'\\u0B9A\\u0BCC'", "'\\u0B9E\\u0BBE'", "'\\u0B9E\\u0BC0'", - "'\\u0B9E\\u0BC2'", "'\\u0B9E\\u0BC7'", "'\\u0B9E\\u0BC8'", - "'\\u0B9E\\u0BCB'", "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", - "'\\u0B9F\\u0BC0'", "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", - "'\\u0B9F\\u0BC8'", "'\\u0B9F\\u0BCB'", "'\\u0B9F\\u0BCC'", - "'\\u0BA3\\u0BBE'", "'\\u0BA3\\u0BC0'", "'\\u0BA3\\u0BC2'", - "'\\u0BA3\\u0BC7'", "'\\u0BA3\\u0BC8'", "'\\u0BA3\\u0BCB'", + "'\\u0B9E\\u0BC2'", "'\\u0B9E\\u0BC7'", "'\\u0B9E\\u0BCB'", + "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", "'\\u0B9F\\u0BC0'", + "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", "'\\u0B9F\\u0BCB'", + "'\\u0B9F\\u0BCC'", "'\\u0BA3\\u0BBE'", "'\\u0BA3\\u0BC0'", + "'\\u0BA3\\u0BC2'", "'\\u0BA3\\u0BC7'", "'\\u0BA3\\u0BCB'", "'\\u0BA3\\u0BCC'", "'\\u0BA4\\u0BBE'", "'\\u0BA4\\u0BC0'", - "'\\u0BA4\\u0BC2'", "'\\u0BA4\\u0BC7'", "'\\u0BA4\\u0BC8'", - "'\\u0BA4\\u0BCB'", "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", - "'\\u0BA8\\u0BC0'", "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", - "'\\u0BA8\\u0BC8'", "'\\u0BA8\\u0BCB'", "'\\u0BA8\\u0BCC'", - "'\\u0BAA\\u0BBE'", "'\\u0BAA\\u0BC0'", "'\\u0BAA\\u0BC2'", - "'\\u0BAA\\u0BC7'", "'\\u0BAA\\u0BC8'", "'\\u0BAA\\u0BCB'", + "'\\u0BA4\\u0BC2'", "'\\u0BA4\\u0BC7'", "'\\u0BA4\\u0BCB'", + "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", "'\\u0BA8\\u0BC0'", + "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", "'\\u0BA8\\u0BCB'", + "'\\u0BA8\\u0BCC'", "'\\u0BAA\\u0BBE'", "'\\u0BAA\\u0BC0'", + "'\\u0BAA\\u0BC2'", "'\\u0BAA\\u0BC7'", "'\\u0BAA\\u0BCB'", "'\\u0BAA\\u0BCC'", "'\\u0BAE\\u0BBE'", "'\\u0BAE\\u0BC0'", - "'\\u0BAE\\u0BC2'", "'\\u0BAE\\u0BC7'", "'\\u0BAE\\u0BC8'", - "'\\u0BAE\\u0BCB'", "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", - "'\\u0BAF\\u0BC0'", "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", - "'\\u0BAF\\u0BC8'", "'\\u0BAF\\u0BCB'", "'\\u0BAF\\u0BCC'", - "'\\u0BB0\\u0BBE'", "'\\u0BB0\\u0BC0'", "'\\u0BB0\\u0BC2'", - "'\\u0BB0\\u0BC7'", "'\\u0BB0\\u0BC8'", "'\\u0BB0\\u0BCB'", + "'\\u0BAE\\u0BC2'", "'\\u0BAE\\u0BC7'", "'\\u0BAE\\u0BCB'", + "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", "'\\u0BAF\\u0BC0'", + "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", "'\\u0BAF\\u0BCB'", + "'\\u0BAF\\u0BCC'", "'\\u0BB0\\u0BBE'", "'\\u0BB0\\u0BC0'", + "'\\u0BB0\\u0BC2'", "'\\u0BB0\\u0BC7'", "'\\u0BB0\\u0BCB'", "'\\u0BB0\\u0BCC'", "'\\u0BB2\\u0BBE'", "'\\u0BB2\\u0BC0'", - "'\\u0BB2\\u0BC2'", "'\\u0BB2\\u0BC7'", "'\\u0BB2\\u0BC8'", - "'\\u0BB2\\u0BCB'", "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", - "'\\u0BB5\\u0BC0'", "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", - "'\\u0BB5\\u0BC8'", "'\\u0BB5\\u0BCB'", "'\\u0BB5\\u0BCC'", - "'\\u0BB4\\u0BBE'", "'\\u0BB4\\u0BC0'", "'\\u0BB4\\u0BC2'", - "'\\u0BB4\\u0BC7'", "'\\u0BB4\\u0BC8'", "'\\u0BB4\\u0BCB'", + "'\\u0BB2\\u0BC2'", "'\\u0BB2\\u0BC7'", "'\\u0BB2\\u0BCB'", + "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", "'\\u0BB5\\u0BC0'", + "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", "'\\u0BB5\\u0BCB'", + "'\\u0BB5\\u0BCC'", "'\\u0BB4\\u0BBE'", "'\\u0BB4\\u0BC0'", + "'\\u0BB4\\u0BC2'", "'\\u0BB4\\u0BC7'", "'\\u0BB4\\u0BCB'", "'\\u0BB4\\u0BCC'", "'\\u0BB3\\u0BBE'", "'\\u0BB3\\u0BC0'", - "'\\u0BB3\\u0BC2'", "'\\u0BB3\\u0BC7'", "'\\u0BB3\\u0BC8'", - "'\\u0BB3\\u0BCB'", "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", - "'\\u0BB1\\u0BC0'", "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", - "'\\u0BB1\\u0BC8'", "'\\u0BB1\\u0BCB'", "'\\u0BB1\\u0BCC'", - "'\\u0BA9\\u0BBE'", "'\\u0BA9\\u0BC0'", "'\\u0BA9\\u0BC2'", - "'\\u0BA9\\u0BC7'", "'\\u0BA9\\u0BC8'", "'\\u0BA9\\u0BCB'", - "'\\u0BA9\\u0BCC'", "'\\u0B83'", "' '" ] + "'\\u0BB3\\u0BC2'", "'\\u0BB3\\u0BC7'", "'\\u0BB3\\u0BCB'", + "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", "'\\u0BB1\\u0BC0'", + "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", "'\\u0BB1\\u0BCB'", + "'\\u0BB1\\u0BCC'", "'\\u0BA9\\u0BBE'", "'\\u0BA9\\u0BC0'", + "'\\u0BA9\\u0BC2'", "'\\u0BA9\\u0BC7'", "'\\u0BA9\\u0BCB'", + "'\\u0BA9\\u0BCC'" ] symbolicNames = [ "", - "I" ] + "I", "NL" ] ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", @@ -840,8 +843,8 @@ class ஆசிரியப்பாLexer(Lexer): "T__224", "T__225", "T__226", "T__227", "T__228", "T__229", "T__230", "T__231", "T__232", "T__233", "T__234", "T__235", "T__236", "T__237", "T__238", "T__239", "T__240", "T__241", - "T__242", "T__243", "T__244", "T__245", "T__246", "T__247", - "I" ] + "T__242", "T__243", "T__244", "T__245", "T__246", "I", + "NL" ] grammarFileName = "ஆசிரியப்பா.g4" diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.tokens" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.tokens" index e6be6e7..c562079 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.tokens" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Lexer.tokens" @@ -245,254 +245,252 @@ T__243=244 T__244=245 T__245=246 T__246=247 -T__247=248 -I=249 -'\n'=1 -'க்'=2 -'ச்'=3 -'ட்'=4 -'த்'=5 -'ப்'=6 -'ற்'=7 -'ஞ்'=8 -'ங்'=9 -'ண்'=10 -'ந்'=11 -'ம்'=12 -'ன்'=13 -'ய்'=14 -'ர்'=15 -'ல்'=16 -'வ்'=17 -'ழ்'=18 -'ள்'=19 -'அ'=20 -'இ'=21 -'உ'=22 -'எ'=23 -'ஒ'=24 -'க'=25 -'கி'=26 -'கு'=27 -'கெ'=28 -'கொ'=29 -'ங'=30 -'ஙி'=31 -'ஙு'=32 -'ஙெ'=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 -'ஏ'=118 -'ஐ'=119 -'ஓ'=120 -'ஒள'=121 -'கா'=122 -'கீ'=123 -'கூ'=124 -'கே'=125 -'கை'=126 -'கோ'=127 -'கௌ'=128 -'ஙா'=129 -'ஙீ'=130 -'ஙூ'=131 -'ஙே'=132 -'ஙை'=133 -'ஙோ'=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 -'ணோ'=162 -'ணௌ'=163 -'தா'=164 -'தீ'=165 -'தூ'=166 -'தே'=167 -'தை'=168 -'தோ'=169 -'தௌ'=170 -'நா'=171 -'நீ'=172 -'நூ'=173 -'நே'=174 -'நை'=175 -'நோ'=176 -'நௌ'=177 -'பா'=178 -'பீ'=179 -'பூ'=180 -'பே'=181 -'பை'=182 -'போ'=183 -'பௌ'=184 -'மா'=185 -'மீ'=186 -'மூ'=187 -'மே'=188 -'மை'=189 -'மோ'=190 -'மௌ'=191 -'யா'=192 -'யீ'=193 -'யூ'=194 -'யே'=195 -'யை'=196 -'யோ'=197 -'யௌ'=198 -'ரா'=199 -'ரீ'=200 -'ரூ'=201 -'ரே'=202 -'ரை'=203 -'ரோ'=204 -'ரௌ'=205 -'லா'=206 -'லீ'=207 -'லூ'=208 -'லே'=209 -'லை'=210 -'லோ'=211 -'லௌ'=212 -'வா'=213 -'வீ'=214 -'வூ'=215 -'வே'=216 -'வை'=217 -'வோ'=218 -'வௌ'=219 -'ழா'=220 -'ழீ'=221 -'ழூ'=222 -'ழே'=223 -'ழை'=224 -'ழோ'=225 -'ழௌ'=226 -'ளா'=227 -'ளீ'=228 -'ளூ'=229 -'ளே'=230 -'ளை'=231 -'ளோ'=232 -'ளௌ'=233 -'றா'=234 -'றீ'=235 -'றூ'=236 -'றே'=237 -'றை'=238 -'றோ'=239 -'றௌ'=240 -'னா'=241 -'னீ'=242 -'னூ'=243 -'னே'=244 -'னை'=245 +I=248 +NL=249 +'க்'=1 +'ச்'=2 +'ட்'=3 +'த்'=4 +'ப்'=5 +'ற்'=6 +'ஞ்'=7 +'ங்'=8 +'ண்'=9 +'ந்'=10 +'ம்'=11 +'ன்'=12 +'ய்'=13 +'ர்'=14 +'ல்'=15 +'வ்'=16 +'ழ்'=17 +'ள்'=18 +'ஃ'=19 +'கை'=20 +'ஙை'=21 +'சை'=22 +'ஞை'=23 +'டை'=24 +'ணை'=25 +'தை'=26 +'நை'=27 +'பை'=28 +'மை'=29 +'யை'=30 +'ரை'=31 +'லை'=32 +'வை'=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 +'ள'=118 +'ளி'=119 +'ளு'=120 +'ளெ'=121 +'ளொ'=122 +'ற'=123 +'றி'=124 +'று'=125 +'றெ'=126 +'றொ'=127 +'ன'=128 +'னி'=129 +'னு'=130 +'னெ'=131 +'னொ'=132 +'ஆ'=133 +'ஈ'=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 +'ஞோ'=162 +'ஞௌ'=163 +'டா'=164 +'டீ'=165 +'டூ'=166 +'டே'=167 +'டோ'=168 +'டௌ'=169 +'ணா'=170 +'ணீ'=171 +'ணூ'=172 +'ணே'=173 +'ணோ'=174 +'ணௌ'=175 +'தா'=176 +'தீ'=177 +'தூ'=178 +'தே'=179 +'தோ'=180 +'தௌ'=181 +'நா'=182 +'நீ'=183 +'நூ'=184 +'நே'=185 +'நோ'=186 +'நௌ'=187 +'பா'=188 +'பீ'=189 +'பூ'=190 +'பே'=191 +'போ'=192 +'பௌ'=193 +'மா'=194 +'மீ'=195 +'மூ'=196 +'மே'=197 +'மோ'=198 +'மௌ'=199 +'யா'=200 +'யீ'=201 +'யூ'=202 +'யே'=203 +'யோ'=204 +'யௌ'=205 +'ரா'=206 +'ரீ'=207 +'ரூ'=208 +'ரே'=209 +'ரோ'=210 +'ரௌ'=211 +'லா'=212 +'லீ'=213 +'லூ'=214 +'லே'=215 +'லோ'=216 +'லௌ'=217 +'வா'=218 +'வீ'=219 +'வூ'=220 +'வே'=221 +'வோ'=222 +'வௌ'=223 +'ழா'=224 +'ழீ'=225 +'ழூ'=226 +'ழே'=227 +'ழோ'=228 +'ழௌ'=229 +'ளா'=230 +'ளீ'=231 +'ளூ'=232 +'ளே'=233 +'ளோ'=234 +'ளௌ'=235 +'றா'=236 +'றீ'=237 +'றூ'=238 +'றே'=239 +'றோ'=240 +'றௌ'=241 +'னா'=242 +'னீ'=243 +'னூ'=244 +'னே'=245 'னோ'=246 'னௌ'=247 -'ஃ'=248 -' '=249 diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Listener.py" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Listener.py" index 556d794..4d91699 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Listener.py" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Listener.py" @@ -431,6 +431,15 @@ def exitநேர்(self, ctx:ஆசிரியப்பாParser.நேர் pass + # Enter a parse tree produced by ஆசிரியப்பாParser#முதல்நிரை. + def enterமுதல்நிரை(self, ctx:ஆசிரியப்பாParser.முதல்நிரைContext): + pass + + # Exit a parse tree produced by ஆசிரியப்பாParser#முதல்நிரை. + def exitமுதல்நிரை(self, ctx:ஆசிரியப்பாParser.முதல்நிரைContext): + pass + + # Enter a parse tree produced by ஆசிரியப்பாParser#நிரை. def enterநிரை(self, ctx:ஆசிரியப்பாParser.நிரைContext): pass @@ -449,6 +458,24 @@ def exitஒற்று(self, ctx:ஆசிரியப்பாParser.ஒற் pass + # Enter a parse tree produced by ஆசிரியப்பாParser#ஆய்தம். + def enterஆய்தம்(self, ctx:ஆசிரியப்பாParser.ஆய்தம்Context): + pass + + # Exit a parse tree produced by ஆசிரியப்பாParser#ஆய்தம். + def exitஆய்தம்(self, ctx:ஆசிரியப்பாParser.ஆய்தம்Context): + pass + + + # Enter a parse tree produced by ஆசிரியப்பாParser#ஐகாரக்குறுக்கம். + def enterஐகாரக்குறுக்கம்(self, ctx:ஆசிரியப்பாParser.ஐகாரக்குறுக்கம்Context): + pass + + # Exit a parse tree produced by ஆசிரியப்பாParser#ஐகாரக்குறுக்கம். + def exitஐகாரக்குறுக்கம்(self, ctx:ஆசிரியப்பாParser.ஐகாரக்குறுக்கம்Context): + pass + + # Enter a parse tree produced by ஆசிரியப்பாParser#குறில். def enterகுறில்(self, ctx:ஆசிரியப்பாParser.குறில்Context): pass @@ -467,14 +494,5 @@ def exitநெடில்(self, ctx:ஆசிரியப்பாParser.நெ pass - # Enter a parse tree produced by ஆசிரியப்பாParser#ஆய்தம். - def enterஆய்தம்(self, ctx:ஆசிரியப்பாParser.ஆய்தம்Context): - pass - - # Exit a parse tree produced by ஆசிரியப்பாParser#ஆய்தம். - def exitஆய்தம்(self, ctx:ஆசிரியப்பாParser.ஆய்தம்Context): - pass - - del ஆசிரியப்பாParser \ No newline at end of file diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Parser.py" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Parser.py" index 1bcea33..acfeecb 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Parser.py" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276Parser.py" @@ -10,139 +10,140 @@ def serializedATN(): return [ - 4,1,249,375,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, + 4,1,249,377,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,1,0,1, - 0,1,0,3,0,108,8,0,1,1,4,1,111,8,1,11,1,12,1,112,1,1,1,1,1,1,1,2, - 1,2,1,2,4,2,121,8,2,11,2,12,2,122,1,2,1,2,1,3,1,3,4,3,129,8,3,11, - 3,12,3,130,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1, - 5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,155,8,6,1,7,1,7,3,7,159,8, - 7,1,8,1,8,1,8,1,8,3,8,165,8,8,1,9,1,9,1,9,1,9,3,9,171,8,9,1,10,1, - 10,1,10,1,10,3,10,177,8,10,1,11,1,11,1,11,1,11,3,11,183,8,11,1,12, - 1,12,3,12,187,8,12,1,13,1,13,3,13,191,8,13,1,14,1,14,1,14,1,14,3, - 14,197,8,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1, - 15,1,15,1,15,1,15,1,15,1,15,3,15,215,8,15,1,16,1,16,1,16,1,16,1, - 16,1,16,1,16,1,16,3,16,225,8,16,1,17,1,17,1,17,1,17,3,17,231,8,17, - 1,18,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,20,1,21,1,21,1,21,1,22, - 1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1,26,1,26, - 1,26,1,27,1,27,1,27,1,28,1,28,1,28,1,29,1,29,1,29,1,30,1,30,1,30, - 1,31,1,31,1,31,1,32,1,32,1,32,1,33,1,33,1,33,1,34,1,34,1,34,1,35, - 1,35,1,35,1,36,1,36,1,36,1,37,1,37,1,37,1,38,1,38,1,38,1,39,1,39, - 1,39,1,40,1,40,1,40,1,41,1,41,1,41,1,42,1,42,1,42,1,43,1,43,1,43, - 1,44,1,44,1,44,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,4,46,322, - 8,46,11,46,12,46,323,3,46,326,8,46,1,46,1,46,1,46,4,46,331,8,46, - 11,46,12,46,332,3,46,335,8,46,3,46,337,8,46,1,47,1,47,1,47,1,47, - 1,47,1,47,1,47,1,47,1,47,1,47,4,47,349,8,47,11,47,12,47,350,3,47, - 353,8,47,1,47,1,47,1,47,1,47,4,47,359,8,47,11,47,12,47,360,3,47, - 363,8,47,3,47,365,8,47,1,48,1,48,1,49,1,49,1,50,1,50,1,51,1,51,1, - 51,0,0,52,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,0,3,1,0,2,19,1,0,20,114,1,0,115, - 247,386,0,107,1,0,0,0,2,110,1,0,0,0,4,117,1,0,0,0,6,126,1,0,0,0, - 8,134,1,0,0,0,10,139,1,0,0,0,12,146,1,0,0,0,14,158,1,0,0,0,16,164, - 1,0,0,0,18,170,1,0,0,0,20,176,1,0,0,0,22,182,1,0,0,0,24,186,1,0, - 0,0,26,190,1,0,0,0,28,196,1,0,0,0,30,214,1,0,0,0,32,224,1,0,0,0, - 34,230,1,0,0,0,36,232,1,0,0,0,38,235,1,0,0,0,40,238,1,0,0,0,42,241, - 1,0,0,0,44,244,1,0,0,0,46,247,1,0,0,0,48,250,1,0,0,0,50,253,1,0, - 0,0,52,256,1,0,0,0,54,259,1,0,0,0,56,262,1,0,0,0,58,265,1,0,0,0, - 60,268,1,0,0,0,62,271,1,0,0,0,64,274,1,0,0,0,66,277,1,0,0,0,68,280, - 1,0,0,0,70,283,1,0,0,0,72,286,1,0,0,0,74,289,1,0,0,0,76,292,1,0, - 0,0,78,295,1,0,0,0,80,298,1,0,0,0,82,301,1,0,0,0,84,304,1,0,0,0, - 86,307,1,0,0,0,88,310,1,0,0,0,90,313,1,0,0,0,92,336,1,0,0,0,94,364, - 1,0,0,0,96,366,1,0,0,0,98,368,1,0,0,0,100,370,1,0,0,0,102,372,1, - 0,0,0,104,108,3,2,1,0,105,108,3,4,2,0,106,108,3,6,3,0,107,104,1, - 0,0,0,107,105,1,0,0,0,107,106,1,0,0,0,108,1,1,0,0,0,109,111,3,12, - 6,0,110,109,1,0,0,0,111,112,1,0,0,0,112,110,1,0,0,0,112,113,1,0, - 0,0,113,114,1,0,0,0,114,115,3,10,5,0,115,116,3,12,6,0,116,3,1,0, - 0,0,117,120,3,12,6,0,118,121,3,8,4,0,119,121,3,10,5,0,120,118,1, - 0,0,0,120,119,1,0,0,0,121,122,1,0,0,0,122,120,1,0,0,0,122,123,1, - 0,0,0,123,124,1,0,0,0,124,125,3,12,6,0,125,5,1,0,0,0,126,128,3,12, - 6,0,127,129,3,12,6,0,128,127,1,0,0,0,129,130,1,0,0,0,130,128,1,0, - 0,0,130,131,1,0,0,0,131,132,1,0,0,0,132,133,3,12,6,0,133,7,1,0,0, - 0,134,135,3,14,7,0,135,136,5,249,0,0,136,137,3,14,7,0,137,138,5, - 1,0,0,138,9,1,0,0,0,139,140,3,14,7,0,140,141,5,249,0,0,141,142,3, - 14,7,0,142,143,5,249,0,0,143,144,3,14,7,0,144,145,5,1,0,0,145,11, - 1,0,0,0,146,147,3,14,7,0,147,148,5,249,0,0,148,149,3,14,7,0,149, - 150,5,249,0,0,150,151,3,14,7,0,151,152,5,249,0,0,152,154,3,14,7, - 0,153,155,5,1,0,0,154,153,1,0,0,0,154,155,1,0,0,0,155,13,1,0,0,0, - 156,159,3,16,8,0,157,159,3,18,9,0,158,156,1,0,0,0,158,157,1,0,0, - 0,159,15,1,0,0,0,160,165,3,84,42,0,161,165,3,86,43,0,162,165,3,88, - 44,0,163,165,3,90,45,0,164,160,1,0,0,0,164,161,1,0,0,0,164,162,1, - 0,0,0,164,163,1,0,0,0,165,17,1,0,0,0,166,171,3,68,34,0,167,171,3, - 72,36,0,168,171,3,76,38,0,169,171,3,80,40,0,170,166,1,0,0,0,170, - 167,1,0,0,0,170,168,1,0,0,0,170,169,1,0,0,0,171,19,1,0,0,0,172,177, - 3,70,35,0,173,177,3,74,37,0,174,177,3,78,39,0,175,177,3,82,41,0, + 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,1,0,1,0,1,0,3,0,112,8,0,1,0,1,0,1,1,4,1,117,8,1,11, + 1,12,1,118,1,1,1,1,1,1,1,2,1,2,1,2,4,2,127,8,2,11,2,12,2,128,1,2, + 1,2,1,3,1,3,4,3,135,8,3,11,3,12,3,136,1,3,1,3,1,4,1,4,1,4,1,4,1, + 4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3, + 6,161,8,6,1,7,1,7,3,7,165,8,7,1,8,1,8,1,8,1,8,3,8,171,8,8,1,9,1, + 9,1,9,1,9,3,9,177,8,9,1,10,1,10,1,10,1,10,3,10,183,8,10,1,11,1,11, + 1,11,1,11,3,11,189,8,11,1,12,1,12,3,12,193,8,12,1,13,1,13,3,13,197, + 8,13,1,14,1,14,1,14,1,14,3,14,203,8,14,1,15,1,15,1,15,1,15,1,15, + 1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,221, + 8,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,3,16,231,8,16,1,17, + 1,17,1,17,1,17,3,17,237,8,17,1,18,1,18,1,18,1,19,1,19,1,19,1,20, + 1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24, + 1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,28, + 1,29,1,29,1,29,1,30,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,33, + 1,33,1,33,1,34,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1,37, + 1,37,1,38,1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,40,1,41,1,41,1,41, + 1,42,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,45,1,45,1,45,1,46, + 1,46,1,46,3,46,326,8,46,1,46,1,46,4,46,330,8,46,11,46,12,46,331, + 3,46,334,8,46,1,47,1,47,1,47,1,47,3,47,340,8,47,1,47,1,47,4,47,344, + 8,47,11,47,12,47,345,3,47,348,8,47,1,48,1,48,3,48,352,8,48,1,48, + 1,48,1,48,3,48,357,8,48,1,48,1,48,4,48,361,8,48,11,48,12,48,362, + 3,48,365,8,48,1,49,1,49,1,50,1,50,1,51,1,51,1,52,1,52,1,53,1,53, + 1,53,0,0,54,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,0,4,1,0,1,18,1,0,20,37, + 1,0,38,132,1,0,133,247,388,0,111,1,0,0,0,2,116,1,0,0,0,4,123,1,0, + 0,0,6,132,1,0,0,0,8,140,1,0,0,0,10,145,1,0,0,0,12,152,1,0,0,0,14, + 164,1,0,0,0,16,170,1,0,0,0,18,176,1,0,0,0,20,182,1,0,0,0,22,188, + 1,0,0,0,24,192,1,0,0,0,26,196,1,0,0,0,28,202,1,0,0,0,30,220,1,0, + 0,0,32,230,1,0,0,0,34,236,1,0,0,0,36,238,1,0,0,0,38,241,1,0,0,0, + 40,244,1,0,0,0,42,247,1,0,0,0,44,250,1,0,0,0,46,253,1,0,0,0,48,256, + 1,0,0,0,50,259,1,0,0,0,52,262,1,0,0,0,54,265,1,0,0,0,56,268,1,0, + 0,0,58,271,1,0,0,0,60,274,1,0,0,0,62,277,1,0,0,0,64,280,1,0,0,0, + 66,283,1,0,0,0,68,286,1,0,0,0,70,289,1,0,0,0,72,292,1,0,0,0,74,295, + 1,0,0,0,76,298,1,0,0,0,78,301,1,0,0,0,80,304,1,0,0,0,82,307,1,0, + 0,0,84,310,1,0,0,0,86,313,1,0,0,0,88,316,1,0,0,0,90,319,1,0,0,0, + 92,325,1,0,0,0,94,335,1,0,0,0,96,351,1,0,0,0,98,366,1,0,0,0,100, + 368,1,0,0,0,102,370,1,0,0,0,104,372,1,0,0,0,106,374,1,0,0,0,108, + 112,3,2,1,0,109,112,3,4,2,0,110,112,3,6,3,0,111,108,1,0,0,0,111, + 109,1,0,0,0,111,110,1,0,0,0,112,113,1,0,0,0,113,114,5,0,0,1,114, + 1,1,0,0,0,115,117,3,12,6,0,116,115,1,0,0,0,117,118,1,0,0,0,118,116, + 1,0,0,0,118,119,1,0,0,0,119,120,1,0,0,0,120,121,3,10,5,0,121,122, + 3,12,6,0,122,3,1,0,0,0,123,126,3,12,6,0,124,127,3,8,4,0,125,127, + 3,10,5,0,126,124,1,0,0,0,126,125,1,0,0,0,127,128,1,0,0,0,128,126, + 1,0,0,0,128,129,1,0,0,0,129,130,1,0,0,0,130,131,3,12,6,0,131,5,1, + 0,0,0,132,134,3,12,6,0,133,135,3,12,6,0,134,133,1,0,0,0,135,136, + 1,0,0,0,136,134,1,0,0,0,136,137,1,0,0,0,137,138,1,0,0,0,138,139, + 3,12,6,0,139,7,1,0,0,0,140,141,3,14,7,0,141,142,5,248,0,0,142,143, + 3,14,7,0,143,144,5,249,0,0,144,9,1,0,0,0,145,146,3,14,7,0,146,147, + 5,248,0,0,147,148,3,14,7,0,148,149,5,248,0,0,149,150,3,14,7,0,150, + 151,5,249,0,0,151,11,1,0,0,0,152,153,3,14,7,0,153,154,5,248,0,0, + 154,155,3,14,7,0,155,156,5,248,0,0,156,157,3,14,7,0,157,158,5,248, + 0,0,158,160,3,14,7,0,159,161,5,249,0,0,160,159,1,0,0,0,160,161,1, + 0,0,0,161,13,1,0,0,0,162,165,3,16,8,0,163,165,3,18,9,0,164,162,1, + 0,0,0,164,163,1,0,0,0,165,15,1,0,0,0,166,171,3,84,42,0,167,171,3, + 86,43,0,168,171,3,88,44,0,169,171,3,90,45,0,170,166,1,0,0,0,170, + 167,1,0,0,0,170,168,1,0,0,0,170,169,1,0,0,0,171,17,1,0,0,0,172,177, + 3,68,34,0,173,177,3,72,36,0,174,177,3,76,38,0,175,177,3,80,40,0, 176,172,1,0,0,0,176,173,1,0,0,0,176,174,1,0,0,0,176,175,1,0,0,0, - 177,21,1,0,0,0,178,183,3,84,42,0,179,183,3,86,43,0,180,183,3,88, - 44,0,181,183,3,90,45,0,182,178,1,0,0,0,182,179,1,0,0,0,182,180,1, - 0,0,0,182,181,1,0,0,0,183,23,1,0,0,0,184,187,3,84,42,0,185,187,3, - 86,43,0,186,184,1,0,0,0,186,185,1,0,0,0,187,25,1,0,0,0,188,191,3, - 88,44,0,189,191,3,90,45,0,190,188,1,0,0,0,190,189,1,0,0,0,191,27, - 1,0,0,0,192,197,3,68,34,0,193,197,3,72,36,0,194,197,3,76,38,0,195, - 197,3,80,40,0,196,192,1,0,0,0,196,193,1,0,0,0,196,194,1,0,0,0,196, - 195,1,0,0,0,197,29,1,0,0,0,198,215,3,36,18,0,199,215,3,38,19,0,200, - 215,3,40,20,0,201,215,3,42,21,0,202,215,3,44,22,0,203,215,3,46,23, - 0,204,215,3,48,24,0,205,215,3,50,25,0,206,215,3,52,26,0,207,215, - 3,54,27,0,208,215,3,56,28,0,209,215,3,58,29,0,210,215,3,60,30,0, - 211,215,3,62,31,0,212,215,3,64,32,0,213,215,3,66,33,0,214,198,1, - 0,0,0,214,199,1,0,0,0,214,200,1,0,0,0,214,201,1,0,0,0,214,202,1, - 0,0,0,214,203,1,0,0,0,214,204,1,0,0,0,214,205,1,0,0,0,214,206,1, - 0,0,0,214,207,1,0,0,0,214,208,1,0,0,0,214,209,1,0,0,0,214,210,1, - 0,0,0,214,211,1,0,0,0,214,212,1,0,0,0,214,213,1,0,0,0,215,31,1,0, - 0,0,216,225,3,68,34,0,217,225,3,70,35,0,218,225,3,72,36,0,219,225, - 3,74,37,0,220,225,3,76,38,0,221,225,3,78,39,0,222,225,3,80,40,0, - 223,225,3,82,41,0,224,216,1,0,0,0,224,217,1,0,0,0,224,218,1,0,0, - 0,224,219,1,0,0,0,224,220,1,0,0,0,224,221,1,0,0,0,224,222,1,0,0, - 0,224,223,1,0,0,0,225,33,1,0,0,0,226,231,3,84,42,0,227,231,3,86, - 43,0,228,231,3,88,44,0,229,231,3,90,45,0,230,226,1,0,0,0,230,227, - 1,0,0,0,230,228,1,0,0,0,230,229,1,0,0,0,231,35,1,0,0,0,232,233,3, - 68,34,0,233,234,3,92,46,0,234,37,1,0,0,0,235,236,3,68,34,0,236,237, - 3,94,47,0,237,39,1,0,0,0,238,239,3,70,35,0,239,240,3,92,46,0,240, - 41,1,0,0,0,241,242,3,70,35,0,242,243,3,94,47,0,243,43,1,0,0,0,244, - 245,3,72,36,0,245,246,3,92,46,0,246,45,1,0,0,0,247,248,3,72,36,0, - 248,249,3,94,47,0,249,47,1,0,0,0,250,251,3,74,37,0,251,252,3,92, - 46,0,252,49,1,0,0,0,253,254,3,74,37,0,254,255,3,94,47,0,255,51,1, - 0,0,0,256,257,3,76,38,0,257,258,3,92,46,0,258,53,1,0,0,0,259,260, - 3,76,38,0,260,261,3,94,47,0,261,55,1,0,0,0,262,263,3,78,39,0,263, - 264,3,92,46,0,264,57,1,0,0,0,265,266,3,78,39,0,266,267,3,94,47,0, - 267,59,1,0,0,0,268,269,3,80,40,0,269,270,3,92,46,0,270,61,1,0,0, - 0,271,272,3,80,40,0,272,273,3,94,47,0,273,63,1,0,0,0,274,275,3,82, - 41,0,275,276,3,92,46,0,276,65,1,0,0,0,277,278,3,82,41,0,278,279, - 3,94,47,0,279,67,1,0,0,0,280,281,3,84,42,0,281,282,3,92,46,0,282, - 69,1,0,0,0,283,284,3,84,42,0,284,285,3,94,47,0,285,71,1,0,0,0,286, - 287,3,86,43,0,287,288,3,92,46,0,288,73,1,0,0,0,289,290,3,86,43,0, - 290,291,3,94,47,0,291,75,1,0,0,0,292,293,3,88,44,0,293,294,3,92, - 46,0,294,77,1,0,0,0,295,296,3,88,44,0,296,297,3,94,47,0,297,79,1, - 0,0,0,298,299,3,90,45,0,299,300,3,92,46,0,300,81,1,0,0,0,301,302, - 3,90,45,0,302,303,3,94,47,0,303,83,1,0,0,0,304,305,3,92,46,0,305, - 306,3,92,46,0,306,85,1,0,0,0,307,308,3,94,47,0,308,309,3,92,46,0, - 309,87,1,0,0,0,310,311,3,94,47,0,311,312,3,94,47,0,312,89,1,0,0, - 0,313,314,3,92,46,0,314,315,3,94,47,0,315,91,1,0,0,0,316,337,3,98, - 49,0,317,337,3,100,50,0,318,325,3,98,49,0,319,326,3,102,51,0,320, - 322,3,96,48,0,321,320,1,0,0,0,322,323,1,0,0,0,323,321,1,0,0,0,323, - 324,1,0,0,0,324,326,1,0,0,0,325,319,1,0,0,0,325,321,1,0,0,0,326, - 337,1,0,0,0,327,334,3,100,50,0,328,335,3,102,51,0,329,331,3,96,48, - 0,330,329,1,0,0,0,331,332,1,0,0,0,332,330,1,0,0,0,332,333,1,0,0, - 0,333,335,1,0,0,0,334,328,1,0,0,0,334,330,1,0,0,0,335,337,1,0,0, - 0,336,316,1,0,0,0,336,317,1,0,0,0,336,318,1,0,0,0,336,327,1,0,0, - 0,337,93,1,0,0,0,338,339,3,98,49,0,339,340,3,98,49,0,340,365,1,0, - 0,0,341,342,3,98,49,0,342,343,3,100,50,0,343,365,1,0,0,0,344,345, - 3,98,49,0,345,352,3,98,49,0,346,353,3,102,51,0,347,349,3,96,48,0, - 348,347,1,0,0,0,349,350,1,0,0,0,350,348,1,0,0,0,350,351,1,0,0,0, - 351,353,1,0,0,0,352,346,1,0,0,0,352,348,1,0,0,0,353,365,1,0,0,0, - 354,355,3,98,49,0,355,362,3,100,50,0,356,363,3,102,51,0,357,359, - 3,96,48,0,358,357,1,0,0,0,359,360,1,0,0,0,360,358,1,0,0,0,360,361, - 1,0,0,0,361,363,1,0,0,0,362,356,1,0,0,0,362,358,1,0,0,0,363,365, - 1,0,0,0,364,338,1,0,0,0,364,341,1,0,0,0,364,344,1,0,0,0,364,354, - 1,0,0,0,365,95,1,0,0,0,366,367,7,0,0,0,367,97,1,0,0,0,368,369,7, - 1,0,0,369,99,1,0,0,0,370,371,7,2,0,0,371,101,1,0,0,0,372,373,5,248, - 0,0,373,103,1,0,0,0,27,107,112,120,122,130,154,158,164,170,176,182, - 186,190,196,214,224,230,323,325,332,334,336,350,352,360,362,364 + 177,19,1,0,0,0,178,183,3,70,35,0,179,183,3,74,37,0,180,183,3,78, + 39,0,181,183,3,82,41,0,182,178,1,0,0,0,182,179,1,0,0,0,182,180,1, + 0,0,0,182,181,1,0,0,0,183,21,1,0,0,0,184,189,3,84,42,0,185,189,3, + 86,43,0,186,189,3,88,44,0,187,189,3,90,45,0,188,184,1,0,0,0,188, + 185,1,0,0,0,188,186,1,0,0,0,188,187,1,0,0,0,189,23,1,0,0,0,190,193, + 3,84,42,0,191,193,3,86,43,0,192,190,1,0,0,0,192,191,1,0,0,0,193, + 25,1,0,0,0,194,197,3,88,44,0,195,197,3,90,45,0,196,194,1,0,0,0,196, + 195,1,0,0,0,197,27,1,0,0,0,198,203,3,68,34,0,199,203,3,72,36,0,200, + 203,3,76,38,0,201,203,3,80,40,0,202,198,1,0,0,0,202,199,1,0,0,0, + 202,200,1,0,0,0,202,201,1,0,0,0,203,29,1,0,0,0,204,221,3,36,18,0, + 205,221,3,44,22,0,206,221,3,52,26,0,207,221,3,60,30,0,208,221,3, + 40,20,0,209,221,3,48,24,0,210,221,3,56,28,0,211,221,3,64,32,0,212, + 221,3,38,19,0,213,221,3,46,23,0,214,221,3,54,27,0,215,221,3,62,31, + 0,216,221,3,42,21,0,217,221,3,50,25,0,218,221,3,58,29,0,219,221, + 3,66,33,0,220,204,1,0,0,0,220,205,1,0,0,0,220,206,1,0,0,0,220,207, + 1,0,0,0,220,208,1,0,0,0,220,209,1,0,0,0,220,210,1,0,0,0,220,211, + 1,0,0,0,220,212,1,0,0,0,220,213,1,0,0,0,220,214,1,0,0,0,220,215, + 1,0,0,0,220,216,1,0,0,0,220,217,1,0,0,0,220,218,1,0,0,0,220,219, + 1,0,0,0,221,31,1,0,0,0,222,231,3,68,34,0,223,231,3,72,36,0,224,231, + 3,76,38,0,225,231,3,80,40,0,226,231,3,70,35,0,227,231,3,74,37,0, + 228,231,3,78,39,0,229,231,3,82,41,0,230,222,1,0,0,0,230,223,1,0, + 0,0,230,224,1,0,0,0,230,225,1,0,0,0,230,226,1,0,0,0,230,227,1,0, + 0,0,230,228,1,0,0,0,230,229,1,0,0,0,231,33,1,0,0,0,232,237,3,84, + 42,0,233,237,3,86,43,0,234,237,3,88,44,0,235,237,3,90,45,0,236,232, + 1,0,0,0,236,233,1,0,0,0,236,234,1,0,0,0,236,235,1,0,0,0,237,35,1, + 0,0,0,238,239,3,68,34,0,239,240,3,92,46,0,240,37,1,0,0,0,241,242, + 3,68,34,0,242,243,3,96,48,0,243,39,1,0,0,0,244,245,3,70,35,0,245, + 246,3,92,46,0,246,41,1,0,0,0,247,248,3,70,35,0,248,249,3,96,48,0, + 249,43,1,0,0,0,250,251,3,72,36,0,251,252,3,92,46,0,252,45,1,0,0, + 0,253,254,3,72,36,0,254,255,3,96,48,0,255,47,1,0,0,0,256,257,3,74, + 37,0,257,258,3,92,46,0,258,49,1,0,0,0,259,260,3,74,37,0,260,261, + 3,96,48,0,261,51,1,0,0,0,262,263,3,76,38,0,263,264,3,92,46,0,264, + 53,1,0,0,0,265,266,3,76,38,0,266,267,3,96,48,0,267,55,1,0,0,0,268, + 269,3,78,39,0,269,270,3,92,46,0,270,57,1,0,0,0,271,272,3,78,39,0, + 272,273,3,96,48,0,273,59,1,0,0,0,274,275,3,80,40,0,275,276,3,92, + 46,0,276,61,1,0,0,0,277,278,3,80,40,0,278,279,3,96,48,0,279,63,1, + 0,0,0,280,281,3,82,41,0,281,282,3,92,46,0,282,65,1,0,0,0,283,284, + 3,82,41,0,284,285,3,96,48,0,285,67,1,0,0,0,286,287,3,84,42,0,287, + 288,3,92,46,0,288,69,1,0,0,0,289,290,3,84,42,0,290,291,3,96,48,0, + 291,71,1,0,0,0,292,293,3,86,43,0,293,294,3,92,46,0,294,73,1,0,0, + 0,295,296,3,86,43,0,296,297,3,96,48,0,297,75,1,0,0,0,298,299,3,88, + 44,0,299,300,3,92,46,0,300,77,1,0,0,0,301,302,3,88,44,0,302,303, + 3,96,48,0,303,79,1,0,0,0,304,305,3,90,45,0,305,306,3,92,46,0,306, + 81,1,0,0,0,307,308,3,90,45,0,308,309,3,96,48,0,309,83,1,0,0,0,310, + 311,3,92,46,0,311,312,3,92,46,0,312,85,1,0,0,0,313,314,3,94,47,0, + 314,315,3,92,46,0,315,87,1,0,0,0,316,317,3,94,47,0,317,318,3,96, + 48,0,318,89,1,0,0,0,319,320,3,92,46,0,320,321,3,96,48,0,321,91,1, + 0,0,0,322,326,3,104,52,0,323,326,3,106,53,0,324,326,3,102,51,0,325, + 322,1,0,0,0,325,323,1,0,0,0,325,324,1,0,0,0,326,333,1,0,0,0,327, + 334,3,100,50,0,328,330,3,98,49,0,329,328,1,0,0,0,330,331,1,0,0,0, + 331,329,1,0,0,0,331,332,1,0,0,0,332,334,1,0,0,0,333,327,1,0,0,0, + 333,329,1,0,0,0,333,334,1,0,0,0,334,93,1,0,0,0,335,339,3,104,52, + 0,336,340,3,104,52,0,337,340,3,106,53,0,338,340,3,102,51,0,339,336, + 1,0,0,0,339,337,1,0,0,0,339,338,1,0,0,0,340,347,1,0,0,0,341,348, + 3,100,50,0,342,344,3,98,49,0,343,342,1,0,0,0,344,345,1,0,0,0,345, + 343,1,0,0,0,345,346,1,0,0,0,346,348,1,0,0,0,347,341,1,0,0,0,347, + 343,1,0,0,0,347,348,1,0,0,0,348,95,1,0,0,0,349,352,3,104,52,0,350, + 352,3,102,51,0,351,349,1,0,0,0,351,350,1,0,0,0,352,356,1,0,0,0,353, + 357,3,104,52,0,354,357,3,106,53,0,355,357,3,102,51,0,356,353,1,0, + 0,0,356,354,1,0,0,0,356,355,1,0,0,0,357,364,1,0,0,0,358,365,3,100, + 50,0,359,361,3,98,49,0,360,359,1,0,0,0,361,362,1,0,0,0,362,360,1, + 0,0,0,362,363,1,0,0,0,363,365,1,0,0,0,364,358,1,0,0,0,364,360,1, + 0,0,0,364,365,1,0,0,0,365,97,1,0,0,0,366,367,7,0,0,0,367,99,1,0, + 0,0,368,369,5,19,0,0,369,101,1,0,0,0,370,371,7,1,0,0,371,103,1,0, + 0,0,372,373,7,2,0,0,373,105,1,0,0,0,374,375,7,3,0,0,375,107,1,0, + 0,0,27,111,118,126,128,136,160,164,170,176,182,188,192,196,202,220, + 230,236,325,331,333,339,345,347,351,356,362,364 ] class ஆசிரியப்பாParser ( Parser ): @@ -155,88 +156,88 @@ class ஆசிரியப்பாParser ( Parser ): sharedContextCache = PredictionContextCache() - literalNames = [ "", "'\\n'", "'\\u0B95\\u0BCD'", "'\\u0B9A\\u0BCD'", + literalNames = [ "", "'\\u0B95\\u0BCD'", "'\\u0B9A\\u0BCD'", "'\\u0B9F\\u0BCD'", "'\\u0BA4\\u0BCD'", "'\\u0BAA\\u0BCD'", "'\\u0BB1\\u0BCD'", "'\\u0B9E\\u0BCD'", "'\\u0B99\\u0BCD'", "'\\u0BA3\\u0BCD'", "'\\u0BA8\\u0BCD'", "'\\u0BAE\\u0BCD'", "'\\u0BA9\\u0BCD'", "'\\u0BAF\\u0BCD'", "'\\u0BB0\\u0BCD'", "'\\u0BB2\\u0BCD'", "'\\u0BB5\\u0BCD'", "'\\u0BB4\\u0BCD'", - "'\\u0BB3\\u0BCD'", "'\\u0B85'", "'\\u0B87'", "'\\u0B89'", - "'\\u0B8E'", "'\\u0B92'", "'\\u0B95'", "'\\u0B95\\u0BBF'", - "'\\u0B95\\u0BC1'", "'\\u0B95\\u0BC6'", "'\\u0B95\\u0BCA'", - "'\\u0B99'", "'\\u0B99\\u0BBF'", "'\\u0B99\\u0BC1'", - "'\\u0B99\\u0BC6'", "'\\u0B99\\u0BCA'", "'\\u0B9A'", - "'\\u0B9A\\u0BBF'", "'\\u0B9A\\u0BC1'", "'\\u0B9A\\u0BC6'", - "'\\u0B9A\\u0BCA'", "'\\u0B9E'", "'\\u0B9E\\u0BBF'", - "'\\u0B9E\\u0BC1'", "'\\u0B9E\\u0BC6'", "'\\u0B9E\\u0BCA'", - "'\\u0B9F'", "'\\u0B9F\\u0BBF'", "'\\u0B9F\\u0BC1'", - "'\\u0B9F\\u0BC6'", "'\\u0B9F\\u0BCA'", "'\\u0BA3'", - "'\\u0BA3\\u0BBF'", "'\\u0BA3\\u0BC1'", "'\\u0BA3\\u0BC6'", - "'\\u0BA3\\u0BCA'", "'\\u0BA4'", "'\\u0BA4\\u0BBF'", - "'\\u0BA4\\u0BC1'", "'\\u0BA4\\u0BC6'", "'\\u0BA4\\u0BCA'", - "'\\u0BA8'", "'\\u0BA8\\u0BBF'", "'\\u0BA8\\u0BC1'", - "'\\u0BA8\\u0BC6'", "'\\u0BA8\\u0BCA'", "'\\u0BAA'", - "'\\u0BAA\\u0BBF'", "'\\u0BAA\\u0BC1'", "'\\u0BAA\\u0BC6'", - "'\\u0BAA\\u0BCA'", "'\\u0BAE'", "'\\u0BAE\\u0BBF'", - "'\\u0BAE\\u0BC1'", "'\\u0BAE\\u0BC6'", "'\\u0BAE\\u0BCA'", - "'\\u0BAF'", "'\\u0BAF\\u0BBF'", "'\\u0BAF\\u0BC1'", - "'\\u0BAF\\u0BC6'", "'\\u0BAF\\u0BCA'", "'\\u0BB0'", - "'\\u0BB0\\u0BBF'", "'\\u0BB0\\u0BC1'", "'\\u0BB0\\u0BC6'", - "'\\u0BB0\\u0BCA'", "'\\u0BB2'", "'\\u0BB2\\u0BBF'", - "'\\u0BB2\\u0BC1'", "'\\u0BB2\\u0BC6'", "'\\u0BB2\\u0BCA'", - "'\\u0BB5'", "'\\u0BB5\\u0BBF'", "'\\u0BB5\\u0BC1'", - "'\\u0BB5\\u0BC6'", "'\\u0BB5\\u0BCA'", "'\\u0BB4'", - "'\\u0BB4\\u0BBF'", "'\\u0BB4\\u0BC1'", "'\\u0BB4\\u0BC6'", - "'\\u0BB4\\u0BCA'", "'\\u0BB3'", "'\\u0BB3\\u0BBF'", - "'\\u0BB3\\u0BC1'", "'\\u0BB3\\u0BC6'", "'\\u0BB3\\u0BCA'", - "'\\u0BB1'", "'\\u0BB1\\u0BBF'", "'\\u0BB1\\u0BC1'", - "'\\u0BB1\\u0BC6'", "'\\u0BB1\\u0BCA'", "'\\u0BA9'", - "'\\u0BA9\\u0BBF'", "'\\u0BA9\\u0BC1'", "'\\u0BA9\\u0BC6'", - "'\\u0BA9\\u0BCA'", "'\\u0B86'", "'\\u0B88'", "'\\u0B8A'", - "'\\u0B8F'", "'\\u0B90'", "'\\u0B93'", "'\\u0B92\\u0BB3'", - "'\\u0B95\\u0BBE'", "'\\u0B95\\u0BC0'", "'\\u0B95\\u0BC2'", - "'\\u0B95\\u0BC7'", "'\\u0B95\\u0BC8'", "'\\u0B95\\u0BCB'", - "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", "'\\u0B99\\u0BC0'", - "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", "'\\u0B99\\u0BC8'", + "'\\u0BB3\\u0BCD'", "'\\u0B83'", "'\\u0B95\\u0BC8'", + "'\\u0B99\\u0BC8'", "'\\u0B9A\\u0BC8'", "'\\u0B9E\\u0BC8'", + "'\\u0B9F\\u0BC8'", "'\\u0BA3\\u0BC8'", "'\\u0BA4\\u0BC8'", + "'\\u0BA8\\u0BC8'", "'\\u0BAA\\u0BC8'", "'\\u0BAE\\u0BC8'", + "'\\u0BAF\\u0BC8'", "'\\u0BB0\\u0BC8'", "'\\u0BB2\\u0BC8'", + "'\\u0BB5\\u0BC8'", "'\\u0BB4\\u0BC8'", "'\\u0BB3\\u0BC8'", + "'\\u0BB1\\u0BC8'", "'\\u0BA9\\u0BC8'", "'\\u0B85'", + "'\\u0B87'", "'\\u0B89'", "'\\u0B8E'", "'\\u0B92'", + "'\\u0B95'", "'\\u0B95\\u0BBF'", "'\\u0B95\\u0BC1'", + "'\\u0B95\\u0BC6'", "'\\u0B95\\u0BCA'", "'\\u0B99'", + "'\\u0B99\\u0BBF'", "'\\u0B99\\u0BC1'", "'\\u0B99\\u0BC6'", + "'\\u0B99\\u0BCA'", "'\\u0B9A'", "'\\u0B9A\\u0BBF'", + "'\\u0B9A\\u0BC1'", "'\\u0B9A\\u0BC6'", "'\\u0B9A\\u0BCA'", + "'\\u0B9E'", "'\\u0B9E\\u0BBF'", "'\\u0B9E\\u0BC1'", + "'\\u0B9E\\u0BC6'", "'\\u0B9E\\u0BCA'", "'\\u0B9F'", + "'\\u0B9F\\u0BBF'", "'\\u0B9F\\u0BC1'", "'\\u0B9F\\u0BC6'", + "'\\u0B9F\\u0BCA'", "'\\u0BA3'", "'\\u0BA3\\u0BBF'", + "'\\u0BA3\\u0BC1'", "'\\u0BA3\\u0BC6'", "'\\u0BA3\\u0BCA'", + "'\\u0BA4'", "'\\u0BA4\\u0BBF'", "'\\u0BA4\\u0BC1'", + "'\\u0BA4\\u0BC6'", "'\\u0BA4\\u0BCA'", "'\\u0BA8'", + "'\\u0BA8\\u0BBF'", "'\\u0BA8\\u0BC1'", "'\\u0BA8\\u0BC6'", + "'\\u0BA8\\u0BCA'", "'\\u0BAA'", "'\\u0BAA\\u0BBF'", + "'\\u0BAA\\u0BC1'", "'\\u0BAA\\u0BC6'", "'\\u0BAA\\u0BCA'", + "'\\u0BAE'", "'\\u0BAE\\u0BBF'", "'\\u0BAE\\u0BC1'", + "'\\u0BAE\\u0BC6'", "'\\u0BAE\\u0BCA'", "'\\u0BAF'", + "'\\u0BAF\\u0BBF'", "'\\u0BAF\\u0BC1'", "'\\u0BAF\\u0BC6'", + "'\\u0BAF\\u0BCA'", "'\\u0BB0'", "'\\u0BB0\\u0BBF'", + "'\\u0BB0\\u0BC1'", "'\\u0BB0\\u0BC6'", "'\\u0BB0\\u0BCA'", + "'\\u0BB2'", "'\\u0BB2\\u0BBF'", "'\\u0BB2\\u0BC1'", + "'\\u0BB2\\u0BC6'", "'\\u0BB2\\u0BCA'", "'\\u0BB5'", + "'\\u0BB5\\u0BBF'", "'\\u0BB5\\u0BC1'", "'\\u0BB5\\u0BC6'", + "'\\u0BB5\\u0BCA'", "'\\u0BB4'", "'\\u0BB4\\u0BBF'", + "'\\u0BB4\\u0BC1'", "'\\u0BB4\\u0BC6'", "'\\u0BB4\\u0BCA'", + "'\\u0BB3'", "'\\u0BB3\\u0BBF'", "'\\u0BB3\\u0BC1'", + "'\\u0BB3\\u0BC6'", "'\\u0BB3\\u0BCA'", "'\\u0BB1'", + "'\\u0BB1\\u0BBF'", "'\\u0BB1\\u0BC1'", "'\\u0BB1\\u0BC6'", + "'\\u0BB1\\u0BCA'", "'\\u0BA9'", "'\\u0BA9\\u0BBF'", + "'\\u0BA9\\u0BC1'", "'\\u0BA9\\u0BC6'", "'\\u0BA9\\u0BCA'", + "'\\u0B86'", "'\\u0B88'", "'\\u0B8A'", "'\\u0B8F'", + "'\\u0B90'", "'\\u0B93'", "'\\u0B94'", "'\\u0B95\\u0BBE'", + "'\\u0B95\\u0BC0'", "'\\u0B95\\u0BC2'", "'\\u0B95\\u0BC7'", + "'\\u0B95\\u0BCB'", "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", + "'\\u0B99\\u0BC0'", "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", "'\\u0B99\\u0BCB'", "'\\u0B99\\u0BCC'", "'\\u0B9A\\u0BBE'", "'\\u0B9A\\u0BC0'", "'\\u0B9A\\u0BC2'", "'\\u0B9A\\u0BC7'", - "'\\u0B9A\\u0BC8'", "'\\u0B9A\\u0BCB'", "'\\u0B9A\\u0BCC'", - "'\\u0B9E\\u0BBE'", "'\\u0B9E\\u0BC0'", "'\\u0B9E\\u0BC2'", - "'\\u0B9E\\u0BC7'", "'\\u0B9E\\u0BC8'", "'\\u0B9E\\u0BCB'", - "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", "'\\u0B9F\\u0BC0'", - "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", "'\\u0B9F\\u0BC8'", + "'\\u0B9A\\u0BCB'", "'\\u0B9A\\u0BCC'", "'\\u0B9E\\u0BBE'", + "'\\u0B9E\\u0BC0'", "'\\u0B9E\\u0BC2'", "'\\u0B9E\\u0BC7'", + "'\\u0B9E\\u0BCB'", "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", + "'\\u0B9F\\u0BC0'", "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", "'\\u0B9F\\u0BCB'", "'\\u0B9F\\u0BCC'", "'\\u0BA3\\u0BBE'", "'\\u0BA3\\u0BC0'", "'\\u0BA3\\u0BC2'", "'\\u0BA3\\u0BC7'", - "'\\u0BA3\\u0BC8'", "'\\u0BA3\\u0BCB'", "'\\u0BA3\\u0BCC'", - "'\\u0BA4\\u0BBE'", "'\\u0BA4\\u0BC0'", "'\\u0BA4\\u0BC2'", - "'\\u0BA4\\u0BC7'", "'\\u0BA4\\u0BC8'", "'\\u0BA4\\u0BCB'", - "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", "'\\u0BA8\\u0BC0'", - "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", "'\\u0BA8\\u0BC8'", + "'\\u0BA3\\u0BCB'", "'\\u0BA3\\u0BCC'", "'\\u0BA4\\u0BBE'", + "'\\u0BA4\\u0BC0'", "'\\u0BA4\\u0BC2'", "'\\u0BA4\\u0BC7'", + "'\\u0BA4\\u0BCB'", "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", + "'\\u0BA8\\u0BC0'", "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", "'\\u0BA8\\u0BCB'", "'\\u0BA8\\u0BCC'", "'\\u0BAA\\u0BBE'", "'\\u0BAA\\u0BC0'", "'\\u0BAA\\u0BC2'", "'\\u0BAA\\u0BC7'", - "'\\u0BAA\\u0BC8'", "'\\u0BAA\\u0BCB'", "'\\u0BAA\\u0BCC'", - "'\\u0BAE\\u0BBE'", "'\\u0BAE\\u0BC0'", "'\\u0BAE\\u0BC2'", - "'\\u0BAE\\u0BC7'", "'\\u0BAE\\u0BC8'", "'\\u0BAE\\u0BCB'", - "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", "'\\u0BAF\\u0BC0'", - "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", "'\\u0BAF\\u0BC8'", + "'\\u0BAA\\u0BCB'", "'\\u0BAA\\u0BCC'", "'\\u0BAE\\u0BBE'", + "'\\u0BAE\\u0BC0'", "'\\u0BAE\\u0BC2'", "'\\u0BAE\\u0BC7'", + "'\\u0BAE\\u0BCB'", "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", + "'\\u0BAF\\u0BC0'", "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", "'\\u0BAF\\u0BCB'", "'\\u0BAF\\u0BCC'", "'\\u0BB0\\u0BBE'", "'\\u0BB0\\u0BC0'", "'\\u0BB0\\u0BC2'", "'\\u0BB0\\u0BC7'", - "'\\u0BB0\\u0BC8'", "'\\u0BB0\\u0BCB'", "'\\u0BB0\\u0BCC'", - "'\\u0BB2\\u0BBE'", "'\\u0BB2\\u0BC0'", "'\\u0BB2\\u0BC2'", - "'\\u0BB2\\u0BC7'", "'\\u0BB2\\u0BC8'", "'\\u0BB2\\u0BCB'", - "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", "'\\u0BB5\\u0BC0'", - "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", "'\\u0BB5\\u0BC8'", + "'\\u0BB0\\u0BCB'", "'\\u0BB0\\u0BCC'", "'\\u0BB2\\u0BBE'", + "'\\u0BB2\\u0BC0'", "'\\u0BB2\\u0BC2'", "'\\u0BB2\\u0BC7'", + "'\\u0BB2\\u0BCB'", "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", + "'\\u0BB5\\u0BC0'", "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", "'\\u0BB5\\u0BCB'", "'\\u0BB5\\u0BCC'", "'\\u0BB4\\u0BBE'", "'\\u0BB4\\u0BC0'", "'\\u0BB4\\u0BC2'", "'\\u0BB4\\u0BC7'", - "'\\u0BB4\\u0BC8'", "'\\u0BB4\\u0BCB'", "'\\u0BB4\\u0BCC'", - "'\\u0BB3\\u0BBE'", "'\\u0BB3\\u0BC0'", "'\\u0BB3\\u0BC2'", - "'\\u0BB3\\u0BC7'", "'\\u0BB3\\u0BC8'", "'\\u0BB3\\u0BCB'", - "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", "'\\u0BB1\\u0BC0'", - "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", "'\\u0BB1\\u0BC8'", + "'\\u0BB4\\u0BCB'", "'\\u0BB4\\u0BCC'", "'\\u0BB3\\u0BBE'", + "'\\u0BB3\\u0BC0'", "'\\u0BB3\\u0BC2'", "'\\u0BB3\\u0BC7'", + "'\\u0BB3\\u0BCB'", "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", + "'\\u0BB1\\u0BC0'", "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", "'\\u0BB1\\u0BCB'", "'\\u0BB1\\u0BCC'", "'\\u0BA9\\u0BBE'", "'\\u0BA9\\u0BC0'", "'\\u0BA9\\u0BC2'", "'\\u0BA9\\u0BC7'", - "'\\u0BA9\\u0BC8'", "'\\u0BA9\\u0BCB'", "'\\u0BA9\\u0BCC'", - "'\\u0B83'", "' '" ] + "'\\u0BA9\\u0BCB'", "'\\u0BA9\\u0BCC'" ] symbolicNames = [ "", "", "", "", "", "", "", "", @@ -300,7 +301,7 @@ class ஆசிரியப்பாParser ( Parser ): "", "", "", "", "", "", "", "", "", "", "", "", - "", "I" ] + "I", "NL" ] RULE_ஆசிரியப்பா = 0 RULE_நேரிசை_ஆசிரியப்பா = 1 @@ -349,11 +350,13 @@ class ஆசிரியப்பாParser ( Parser ): RULE_கருவிளம் = 44 RULE_கூவிளம் = 45 RULE_நேர் = 46 - RULE_நிரை = 47 - RULE_ஒற்று = 48 - RULE_குறில் = 49 - RULE_நெடில் = 50 - RULE_ஆய்தம் = 51 + RULE_முதல்நிரை = 47 + RULE_நிரை = 48 + RULE_ஒற்று = 49 + RULE_ஆய்தம் = 50 + RULE_ஐகாரக்குறுக்கம் = 51 + RULE_குறில் = 52 + RULE_நெடில் = 53 ruleNames = [ "ஆசிரியப்பா", "நேரிசை_ஆசிரியப்பா", "இணைக்குறள்_ஆசிரியப்பா", "நிலை_மண்டில_ஆசிரியப்பா", "குறளடி", "சிந்தடி", "அளவடி", @@ -366,8 +369,8 @@ class ஆசிரியப்பாParser ( Parser ): "கூவிளநறும்பூ", "கூவிளநறுநிழல்", "தேமாங்காய்", "தேமாங்கனி", "புளிமாங்காய்", "புளிமாங்கனி", "கருவிளங்காய்", "கருவிளங்கனி", "கூவிளங்காய்", "கூவிளங்கனி", "தேமா", "புளிமா", "கருவிளம்", - "கூவிளம்", "நேர்", "நிரை", "ஒற்று", "குறில்", "நெடில்", - "ஆய்தம்" ] + "கூவிளம்", "நேர்", "முதல்நிரை", "நிரை", "ஒற்று", "ஆய்தம்", + "ஐகாரக்குறுக்கம்", "குறில்", "நெடில்" ] EOF = Token.EOF T__0=1 @@ -617,8 +620,8 @@ class ஆசிரியப்பாParser ( Parser ): T__244=245 T__245=246 T__246=247 - T__247=248 - I=249 + I=248 + NL=249 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) @@ -636,6 +639,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def EOF(self): + return self.getToken(ஆசிரியப்பாParser.EOF, 0) + def நேரிசை_ஆசிரியப்பா(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.நேரிசை_ஆசிரியப்பாContext,0) @@ -667,28 +673,28 @@ def ஆசிரியப்பா(self): localctx = ஆசிரியப்பாParser.ஆசிரியப்பாContext(self, self._ctx, self.state) self.enterRule(localctx, 0, self.RULE_ஆசிரியப்பா) try: - self.state = 107 + self.enterOuterAlt(localctx, 1) + self.state = 111 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,0,self._ctx) if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 104 + self.state = 108 self.நேரிசை_ஆசிரியப்பா() pass elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 105 + self.state = 109 self.இணைக்குறள்_ஆசிரியப்பா() pass elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 106 + self.state = 110 self.நிலை_மண்டில_ஆசிரியப்பா() pass + self.state = 113 + self.match(ஆசிரியப்பாParser.EOF) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -736,23 +742,23 @@ def நேரிசை_ஆசிரியப்பா(self): self.enterRule(localctx, 2, self.RULE_நேரிசை_ஆசிரியப்பா) try: self.enterOuterAlt(localctx, 1) - self.state = 110 + self.state = 116 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 109 + self.state = 115 self.அளவடி() else: raise NoViableAltException(self) - self.state = 112 + self.state = 118 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,1,self._ctx) - self.state = 114 + self.state = 120 self.சிந்தடி() - self.state = 115 + self.state = 121 self.அளவடி() except RecognitionException as re: localctx.exception = re @@ -811,23 +817,23 @@ def இணைக்குறள்_ஆசிரியப்பா(self): self.enterRule(localctx, 4, self.RULE_இணைக்குறள்_ஆசிரியப்பா) try: self.enterOuterAlt(localctx, 1) - self.state = 117 + self.state = 123 self.அளவடி() - self.state = 120 + self.state = 126 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 120 + self.state = 126 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,2,self._ctx) if la_ == 1: - self.state = 118 + self.state = 124 self.குறளடி() pass elif la_ == 2: - self.state = 119 + self.state = 125 self.சிந்தடி() pass @@ -835,11 +841,11 @@ def இணைக்குறள்_ஆசிரியப்பா(self): else: raise NoViableAltException(self) - self.state = 122 + self.state = 128 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,3,self._ctx) - self.state = 124 + self.state = 130 self.அளவடி() except RecognitionException as re: localctx.exception = re @@ -884,23 +890,23 @@ def நிலை_மண்டில_ஆசிரியப்பா(self): self.enterRule(localctx, 6, self.RULE_நிலை_மண்டில_ஆசிரியப்பா) try: self.enterOuterAlt(localctx, 1) - self.state = 126 + self.state = 132 self.அளவடி() - self.state = 128 + self.state = 134 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 127 + self.state = 133 self.அளவடி() else: raise NoViableAltException(self) - self.state = 130 + self.state = 136 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,4,self._ctx) - self.state = 132 + self.state = 138 self.அளவடி() except RecognitionException as re: localctx.exception = re @@ -928,6 +934,9 @@ def சீர்(self, i:int=None): def I(self): return self.getToken(ஆசிரியப்பாParser.I, 0) + def NL(self): + return self.getToken(ஆசிரியப்பாParser.NL, 0) + def getRuleIndex(self): return ஆசிரியப்பாParser.RULE_குறளடி @@ -948,14 +957,14 @@ def குறளடி(self): self.enterRule(localctx, 8, self.RULE_குறளடி) try: self.enterOuterAlt(localctx, 1) - self.state = 134 + self.state = 140 self.சீர்() - self.state = 135 + self.state = 141 self.match(ஆசிரியப்பாParser.I) - self.state = 136 + self.state = 142 self.சீர்() - self.state = 137 - self.match(ஆசிரியப்பாParser.T__0) + self.state = 143 + self.match(ஆசிரியப்பாParser.NL) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -985,6 +994,9 @@ def I(self, i:int=None): else: return self.getToken(ஆசிரியப்பாParser.I, i) + def NL(self): + return self.getToken(ஆசிரியப்பாParser.NL, 0) + def getRuleIndex(self): return ஆசிரியப்பாParser.RULE_சிந்தடி @@ -1005,18 +1017,18 @@ def சிந்தடி(self): self.enterRule(localctx, 10, self.RULE_சிந்தடி) try: self.enterOuterAlt(localctx, 1) - self.state = 139 + self.state = 145 self.சீர்() - self.state = 140 + self.state = 146 self.match(ஆசிரியப்பாParser.I) - self.state = 141 + self.state = 147 self.சீர்() - self.state = 142 + self.state = 148 self.match(ஆசிரியப்பாParser.I) - self.state = 143 + self.state = 149 self.சீர்() - self.state = 144 - self.match(ஆசிரியப்பாParser.T__0) + self.state = 150 + self.match(ஆசிரியப்பாParser.NL) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1046,6 +1058,9 @@ def I(self, i:int=None): else: return self.getToken(ஆசிரியப்பாParser.I, i) + def NL(self): + return self.getToken(ஆசிரியப்பாParser.NL, 0) + def getRuleIndex(self): return ஆசிரியப்பாParser.RULE_அளவடி @@ -1067,26 +1082,26 @@ def அளவடி(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 146 + self.state = 152 self.சீர்() - self.state = 147 + self.state = 153 self.match(ஆசிரியப்பாParser.I) - self.state = 148 + self.state = 154 self.சீர்() - self.state = 149 + self.state = 155 self.match(ஆசிரியப்பாParser.I) - self.state = 150 + self.state = 156 self.சீர்() - self.state = 151 + self.state = 157 self.match(ஆசிரியப்பாParser.I) - self.state = 152 + self.state = 158 self.சீர்() - self.state = 154 + self.state = 160 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==1: - self.state = 153 - self.match(ஆசிரியப்பாParser.T__0) + if _la==249: + self.state = 159 + self.match(ஆசிரியப்பாParser.NL) except RecognitionException as re: @@ -1132,18 +1147,18 @@ def சீர்(self): localctx = ஆசிரியப்பாParser.சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 14, self.RULE_சீர்) try: - self.state = 158 + self.state = 164 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,6,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 156 + self.state = 162 self.ஆசிரிய_உரிச்சீர்() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 157 + self.state = 163 self.வெண்பா_உரிச்சீர்() pass @@ -1199,30 +1214,30 @@ def ஆசிரிய_உரிச்சீர்(self): localctx = ஆசிரியப்பாParser.ஆசிரிய_உரிச்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 16, self.RULE_ஆசிரிய_உரிச்சீர்) try: - self.state = 164 + self.state = 170 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,7,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 160 + self.state = 166 self.தேமா() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 161 + self.state = 167 self.புளிமா() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 162 + self.state = 168 self.கருவிளம்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 163 + self.state = 169 self.கூவிளம்() pass @@ -1278,30 +1293,30 @@ def வெண்பா_உரிச்சீர்(self): localctx = ஆசிரியப்பாParser.வெண்பா_உரிச்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 18, self.RULE_வெண்பா_உரிச்சீர்) try: - self.state = 170 + self.state = 176 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,8,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 166 + self.state = 172 self.தேமாங்காய்() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 167 + self.state = 173 self.புளிமாங்காய்() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 168 + self.state = 174 self.கருவிளங்காய்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 169 + self.state = 175 self.கூவிளங்காய்() pass @@ -1357,30 +1372,30 @@ def வஞ்சிச்_சீர்(self): localctx = ஆசிரியப்பாParser.வஞ்சிச்_சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 20, self.RULE_வஞ்சிச்_சீர்) try: - self.state = 176 + self.state = 182 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,9,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 172 + self.state = 178 self.தேமாங்கனி() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 173 + self.state = 179 self.புளிமாங்கனி() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 174 + self.state = 180 self.கருவிளங்கனி() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 175 + self.state = 181 self.கூவிளங்கனி() pass @@ -1436,30 +1451,30 @@ def இயற்சீர்(self): localctx = ஆசிரியப்பாParser.இயற்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 22, self.RULE_இயற்சீர்) try: - self.state = 182 + self.state = 188 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,10,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 178 + self.state = 184 self.தேமா() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 179 + self.state = 185 self.புளிமா() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 180 + self.state = 186 self.கருவிளம்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 181 + self.state = 187 self.கூவிளம்() pass @@ -1507,18 +1522,18 @@ def மாச்சீர்(self): localctx = ஆசிரியப்பாParser.மாச்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 24, self.RULE_மாச்சீர்) try: - self.state = 186 + self.state = 192 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,11,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 184 + self.state = 190 self.தேமா() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 185 + self.state = 191 self.புளிமா() pass @@ -1566,18 +1581,18 @@ def விளச்சீர்(self): localctx = ஆசிரியப்பாParser.விளச்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 26, self.RULE_விளச்சீர்) try: - self.state = 190 + self.state = 196 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,12,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 188 + self.state = 194 self.கருவிளம்() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 189 + self.state = 195 self.கூவிளம்() pass @@ -1633,30 +1648,30 @@ def வெண்சீர்(self): localctx = ஆசிரியப்பாParser.வெண்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 28, self.RULE_வெண்சீர்) try: - self.state = 196 + self.state = 202 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,13,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 192 + self.state = 198 self.தேமாங்காய்() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 193 + self.state = 199 self.புளிமாங்காய்() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 194 + self.state = 200 self.கருவிளங்காய்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 195 + self.state = 201 self.கூவிளங்காய்() pass @@ -1681,60 +1696,60 @@ def தேமாந்தண்பூ(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.தேமாந்தண்பூContext,0) - def தேமாந்தண்ணிழல்(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.தேமாந்தண்ணிழல்Context,0) - - - def தேமாநறும்பூ(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.தேமாநறும்பூContext,0) + def புளிமாந்தண்பூ(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.புளிமாந்தண்பூContext,0) - def தேமாநறுநிழல்(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.தேமாநறுநிழல்Context,0) + def கருவிளந்தண்பூ(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளந்தண்பூContext,0) - def புளிமாந்தண்பூ(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.புளிமாந்தண்பூContext,0) + def கூவிளந்தண்பூ(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.கூவிளந்தண்பூContext,0) - def புளிமாந்தண்ணிழல்(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.புளிமாந்தண்ணிழல்Context,0) + def தேமாநறும்பூ(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.தேமாநறும்பூContext,0) def புளிமாநறும்பூ(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.புளிமாநறும்பூContext,0) - def புளிமாநறுநிழல்(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.புளிமாநறுநிழல்Context,0) - - - def கருவிளந்தண்பூ(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளந்தண்பூContext,0) + def கருவிளநறும்பூ(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளநறும்பூContext,0) - def கருவிளந்தண்ணிழல்(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளந்தண்ணிழல்Context,0) + def கூவிளநறும்பூ(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.கூவிளநறும்பூContext,0) - def கருவிளநறும்பூ(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளநறும்பூContext,0) + def தேமாந்தண்ணிழல்(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.தேமாந்தண்ணிழல்Context,0) - def கருவிளநறுநிழல்(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளநறுநிழல்Context,0) + def புளிமாந்தண்ணிழல்(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.புளிமாந்தண்ணிழல்Context,0) - def கூவிளந்தண்பூ(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.கூவிளந்தண்பூContext,0) + def கருவிளந்தண்ணிழல்(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளந்தண்ணிழல்Context,0) def கூவிளந்தண்ணிழல்(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.கூவிளந்தண்ணிழல்Context,0) - def கூவிளநறும்பூ(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.கூவிளநறும்பூContext,0) + def தேமாநறுநிழல்(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.தேமாநறுநிழல்Context,0) + + + def புளிமாநறுநிழல்(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.புளிமாநறுநிழல்Context,0) + + + def கருவிளநறுநிழல்(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளநறுநிழல்Context,0) def கூவிளநறுநிழல்(self): @@ -1760,102 +1775,102 @@ def நாலசை(self): localctx = ஆசிரியப்பாParser.நாலசைContext(self, self._ctx, self.state) self.enterRule(localctx, 30, self.RULE_நாலசை) try: - self.state = 214 + self.state = 220 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,14,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 198 + self.state = 204 self.தேமாந்தண்பூ() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 199 - self.தேமாந்தண்ணிழல்() + self.state = 205 + self.புளிமாந்தண்பூ() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 200 - self.தேமாநறும்பூ() + self.state = 206 + self.கருவிளந்தண்பூ() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 201 - self.தேமாநறுநிழல்() + self.state = 207 + self.கூவிளந்தண்பூ() pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 202 - self.புளிமாந்தண்பூ() + self.state = 208 + self.தேமாநறும்பூ() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 203 - self.புளிமாந்தண்ணிழல்() + self.state = 209 + self.புளிமாநறும்பூ() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 204 - self.புளிமாநறும்பூ() + self.state = 210 + self.கருவிளநறும்பூ() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 205 - self.புளிமாநறுநிழல்() + self.state = 211 + self.கூவிளநறும்பூ() pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 206 - self.கருவிளந்தண்பூ() + self.state = 212 + self.தேமாந்தண்ணிழல்() pass elif la_ == 10: self.enterOuterAlt(localctx, 10) - self.state = 207 - self.கருவிளந்தண்ணிழல்() + self.state = 213 + self.புளிமாந்தண்ணிழல்() pass elif la_ == 11: self.enterOuterAlt(localctx, 11) - self.state = 208 - self.கருவிளநறும்பூ() + self.state = 214 + self.கருவிளந்தண்ணிழல்() pass elif la_ == 12: self.enterOuterAlt(localctx, 12) - self.state = 209 - self.கருவிளநறுநிழல்() + self.state = 215 + self.கூவிளந்தண்ணிழல்() pass elif la_ == 13: self.enterOuterAlt(localctx, 13) - self.state = 210 - self.கூவிளந்தண்பூ() + self.state = 216 + self.தேமாநறுநிழல்() pass elif la_ == 14: self.enterOuterAlt(localctx, 14) - self.state = 211 - self.கூவிளந்தண்ணிழல்() + self.state = 217 + self.புளிமாநறுநிழல்() pass elif la_ == 15: self.enterOuterAlt(localctx, 15) - self.state = 212 - self.கூவிளநறும்பூ() + self.state = 218 + self.கருவிளநறுநிழல்() pass elif la_ == 16: self.enterOuterAlt(localctx, 16) - self.state = 213 + self.state = 219 self.கூவிளநறுநிழல்() pass @@ -1880,30 +1895,30 @@ def தேமாங்காய்(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.தேமாங்காய்Context,0) - def தேமாங்கனி(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.தேமாங்கனிContext,0) - - def புளிமாங்காய்(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.புளிமாங்காய்Context,0) - def புளிமாங்கனி(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.புளிமாங்கனிContext,0) - - def கருவிளங்காய்(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளங்காய்Context,0) - def கருவிளங்கனி(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளங்கனிContext,0) - - def கூவிளங்காய்(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.கூவிளங்காய்Context,0) + def தேமாங்கனி(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.தேமாங்கனிContext,0) + + + def புளிமாங்கனி(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.புளிமாங்கனிContext,0) + + + def கருவிளங்கனி(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.கருவிளங்கனிContext,0) + + def கூவிளங்கனி(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.கூவிளங்கனிContext,0) @@ -1927,54 +1942,54 @@ def மூவசை(self): localctx = ஆசிரியப்பாParser.மூவசைContext(self, self._ctx, self.state) self.enterRule(localctx, 32, self.RULE_மூவசை) try: - self.state = 224 + self.state = 230 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,15,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 216 + self.state = 222 self.தேமாங்காய்() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 217 - self.தேமாங்கனி() + self.state = 223 + self.புளிமாங்காய்() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 218 - self.புளிமாங்காய்() + self.state = 224 + self.கருவிளங்காய்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 219 - self.புளிமாங்கனி() + self.state = 225 + self.கூவிளங்காய்() pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 220 - self.கருவிளங்காய்() + self.state = 226 + self.தேமாங்கனி() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 221 - self.கருவிளங்கனி() + self.state = 227 + self.புளிமாங்கனி() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 222 - self.கூவிளங்காய்() + self.state = 228 + self.கருவிளங்கனி() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 223 + self.state = 229 self.கூவிளங்கனி() pass @@ -2030,30 +2045,30 @@ def ஈரசை(self): localctx = ஆசிரியப்பாParser.ஈரசைContext(self, self._ctx, self.state) self.enterRule(localctx, 34, self.RULE_ஈரசை) try: - self.state = 230 + self.state = 236 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,16,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 226 + self.state = 232 self.தேமா() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 227 + self.state = 233 self.புளிமா() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 228 + self.state = 234 self.கருவிளம்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 229 + self.state = 235 self.கூவிளம்() pass @@ -2102,9 +2117,9 @@ def தேமாந்தண்பூ(self): self.enterRule(localctx, 36, self.RULE_தேமாந்தண்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 232 + self.state = 238 self.தேமாங்காய்() - self.state = 233 + self.state = 239 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2150,9 +2165,9 @@ def தேமாந்தண்ணிழல்(self): self.enterRule(localctx, 38, self.RULE_தேமாந்தண்ணிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 235 + self.state = 241 self.தேமாங்காய்() - self.state = 236 + self.state = 242 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2198,9 +2213,9 @@ def தேமாநறும்பூ(self): self.enterRule(localctx, 40, self.RULE_தேமாநறும்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 238 + self.state = 244 self.தேமாங்கனி() - self.state = 239 + self.state = 245 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2246,9 +2261,9 @@ def தேமாநறுநிழல்(self): self.enterRule(localctx, 42, self.RULE_தேமாநறுநிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 241 + self.state = 247 self.தேமாங்கனி() - self.state = 242 + self.state = 248 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2294,9 +2309,9 @@ def புளிமாந்தண்பூ(self): self.enterRule(localctx, 44, self.RULE_புளிமாந்தண்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 244 + self.state = 250 self.புளிமாங்காய்() - self.state = 245 + self.state = 251 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2342,9 +2357,9 @@ def புளிமாந்தண்ணிழல்(self): self.enterRule(localctx, 46, self.RULE_புளிமாந்தண்ணிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 247 + self.state = 253 self.புளிமாங்காய்() - self.state = 248 + self.state = 254 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2390,9 +2405,9 @@ def புளிமாநறும்பூ(self): self.enterRule(localctx, 48, self.RULE_புளிமாநறும்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 250 + self.state = 256 self.புளிமாங்கனி() - self.state = 251 + self.state = 257 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2438,9 +2453,9 @@ def புளிமாநறுநிழல்(self): self.enterRule(localctx, 50, self.RULE_புளிமாநறுநிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 253 + self.state = 259 self.புளிமாங்கனி() - self.state = 254 + self.state = 260 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2486,9 +2501,9 @@ def கருவிளந்தண்பூ(self): self.enterRule(localctx, 52, self.RULE_கருவிளந்தண்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 256 + self.state = 262 self.கருவிளங்காய்() - self.state = 257 + self.state = 263 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2534,9 +2549,9 @@ def கருவிளந்தண்ணிழல்(self): self.enterRule(localctx, 54, self.RULE_கருவிளந்தண்ணிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 259 + self.state = 265 self.கருவிளங்காய்() - self.state = 260 + self.state = 266 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2582,9 +2597,9 @@ def கருவிளநறும்பூ(self): self.enterRule(localctx, 56, self.RULE_கருவிளநறும்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 262 + self.state = 268 self.கருவிளங்கனி() - self.state = 263 + self.state = 269 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2630,9 +2645,9 @@ def கருவிளநறுநிழல்(self): self.enterRule(localctx, 58, self.RULE_கருவிளநறுநிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 265 + self.state = 271 self.கருவிளங்கனி() - self.state = 266 + self.state = 272 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2678,9 +2693,9 @@ def கூவிளந்தண்பூ(self): self.enterRule(localctx, 60, self.RULE_கூவிளந்தண்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 268 + self.state = 274 self.கூவிளங்காய்() - self.state = 269 + self.state = 275 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2726,9 +2741,9 @@ def கூவிளந்தண்ணிழல்(self): self.enterRule(localctx, 62, self.RULE_கூவிளந்தண்ணிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 271 + self.state = 277 self.கூவிளங்காய்() - self.state = 272 + self.state = 278 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2774,9 +2789,9 @@ def கூவிளநறும்பூ(self): self.enterRule(localctx, 64, self.RULE_கூவிளநறும்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 274 + self.state = 280 self.கூவிளங்கனி() - self.state = 275 + self.state = 281 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2822,9 +2837,9 @@ def கூவிளநறுநிழல்(self): self.enterRule(localctx, 66, self.RULE_கூவிளநறுநிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 277 + self.state = 283 self.கூவிளங்கனி() - self.state = 278 + self.state = 284 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2870,9 +2885,9 @@ def தேமாங்காய்(self): self.enterRule(localctx, 68, self.RULE_தேமாங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 280 + self.state = 286 self.தேமா() - self.state = 281 + self.state = 287 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2918,9 +2933,9 @@ def தேமாங்கனி(self): self.enterRule(localctx, 70, self.RULE_தேமாங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 283 + self.state = 289 self.தேமா() - self.state = 284 + self.state = 290 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2966,9 +2981,9 @@ def புளிமாங்காய்(self): self.enterRule(localctx, 72, self.RULE_புளிமாங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 286 + self.state = 292 self.புளிமா() - self.state = 287 + self.state = 293 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3014,9 +3029,9 @@ def புளிமாங்கனி(self): self.enterRule(localctx, 74, self.RULE_புளிமாங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 289 + self.state = 295 self.புளிமா() - self.state = 290 + self.state = 296 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3062,9 +3077,9 @@ def கருவிளங்காய்(self): self.enterRule(localctx, 76, self.RULE_கருவிளங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 292 + self.state = 298 self.கருவிளம்() - self.state = 293 + self.state = 299 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3110,9 +3125,9 @@ def கருவிளங்கனி(self): self.enterRule(localctx, 78, self.RULE_கருவிளங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 295 + self.state = 301 self.கருவிளம்() - self.state = 296 + self.state = 302 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3158,9 +3173,9 @@ def கூவிளங்காய்(self): self.enterRule(localctx, 80, self.RULE_கூவிளங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 298 + self.state = 304 self.கூவிளம்() - self.state = 299 + self.state = 305 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3206,9 +3221,9 @@ def கூவிளங்கனி(self): self.enterRule(localctx, 82, self.RULE_கூவிளங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 301 + self.state = 307 self.கூவிளம்() - self.state = 302 + self.state = 308 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3253,9 +3268,9 @@ def தேமா(self): self.enterRule(localctx, 84, self.RULE_தேமா) try: self.enterOuterAlt(localctx, 1) - self.state = 304 + self.state = 310 self.நேர்() - self.state = 305 + self.state = 311 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3273,8 +3288,8 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def நிரை(self): - return self.getTypedRuleContext(ஆசிரியப்பாParser.நிரைContext,0) + def முதல்நிரை(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.முதல்நிரைContext,0) def நேர்(self): @@ -3301,9 +3316,9 @@ def புளிமா(self): self.enterRule(localctx, 86, self.RULE_புளிமா) try: self.enterOuterAlt(localctx, 1) - self.state = 307 - self.நிரை() - self.state = 308 + self.state = 313 + self.முதல்நிரை() + self.state = 314 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3321,11 +3336,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def நிரை(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(ஆசிரியப்பாParser.நிரைContext) - else: - return self.getTypedRuleContext(ஆசிரியப்பாParser.நிரைContext,i) + def முதல்நிரை(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.முதல்நிரைContext,0) + + + def நிரை(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.நிரைContext,0) def getRuleIndex(self): @@ -3348,9 +3364,9 @@ def கருவிளம்(self): self.enterRule(localctx, 88, self.RULE_கருவிளம்) try: self.enterOuterAlt(localctx, 1) - self.state = 310 - self.நிரை() - self.state = 311 + self.state = 316 + self.முதல்நிரை() + self.state = 317 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3396,9 +3412,9 @@ def கூவிளம்(self): self.enterRule(localctx, 90, self.RULE_கூவிளம்) try: self.enterOuterAlt(localctx, 1) - self.state = 313 + self.state = 319 self.நேர்() - self.state = 314 + self.state = 320 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3424,6 +3440,10 @@ def நெடில்(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.நெடில்Context,0) + def ஐகாரக்குறுக்கம்(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.ஐகாரக்குறுக்கம்Context,0) + + def ஆய்தம்(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.ஆய்தம்Context,0) @@ -3455,82 +3475,158 @@ def நேர்(self): self.enterRule(localctx, 92, self.RULE_நேர்) self._la = 0 # Token type try: - self.state = 336 + self.enterOuterAlt(localctx, 1) + self.state = 325 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,21,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 316 + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 322 self.குறில்() pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 317 + elif token in [133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + self.state = 323 self.நெடில்() pass + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 324 + self.ஐகாரக்குறுக்கம்() + pass + else: + raise NoViableAltException(self) - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 318 - self.குறில்() - self.state = 325 + self.state = 333 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [19]: + self.state = 327 + self.ஆய்தம்() + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: + self.state = 329 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [248]: - self.state = 319 - self.ஆய்தம்() - pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]: - self.state = 321 + _la = self._input.LA(1) + while True: + self.state = 328 + self.ஒற்று() + self.state = 331 self._errHandler.sync(self) _la = self._input.LA(1) - while True: - self.state = 320 - self.ஒற்று() - self.state = 323 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 1048572) != 0)): - break - - pass - else: - raise NoViableAltException(self) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): + break pass + elif token in [-1, 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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249]: + pass + else: + pass + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 327 + + class முதல்நிரைContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def குறில்(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ஆசிரியப்பாParser.குறில்Context) + else: + return self.getTypedRuleContext(ஆசிரியப்பாParser.குறில்Context,i) + + + def நெடில்(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.நெடில்Context,0) + + + def ஐகாரக்குறுக்கம்(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.ஐகாரக்குறுக்கம்Context,0) + + + def ஆய்தம்(self): + return self.getTypedRuleContext(ஆசிரியப்பாParser.ஆய்தம்Context,0) + + + def ஒற்று(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ஆசிரியப்பாParser.ஒற்றுContext) + else: + return self.getTypedRuleContext(ஆசிரியப்பாParser.ஒற்றுContext,i) + + + def getRuleIndex(self): + return ஆசிரியப்பாParser.RULE_முதல்நிரை + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterமுதல்நிரை" ): + listener.enterமுதல்நிரை(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitமுதல்நிரை" ): + listener.exitமுதல்நிரை(self) + + + + + def முதல்நிரை(self): + + localctx = ஆசிரியப்பாParser.முதல்நிரைContext(self, self._ctx, self.state) + self.enterRule(localctx, 94, self.RULE_முதல்நிரை) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 335 + self.குறில்() + self.state = 339 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 336 + self.குறில்() + pass + elif token in [133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + self.state = 337 self.நெடில்() - self.state = 334 + pass + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 338 + self.ஐகாரக்குறுக்கம்() + pass + else: + raise NoViableAltException(self) + + self.state = 347 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [19]: + self.state = 341 + self.ஆய்தம்() + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: + self.state = 343 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [248]: - self.state = 328 - self.ஆய்தம்() - pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]: - self.state = 330 + _la = self._input.LA(1) + while True: + self.state = 342 + self.ஒற்று() + self.state = 345 self._errHandler.sync(self) _la = self._input.LA(1) - while True: - self.state = 329 - self.ஒற்று() - self.state = 332 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 1048572) != 0)): - break - - pass - else: - raise NoViableAltException(self) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): + break pass - - + elif token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + pass + else: + pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3554,6 +3650,13 @@ def குறில்(self, i:int=None): return self.getTypedRuleContext(ஆசிரியப்பாParser.குறில்Context,i) + def ஐகாரக்குறுக்கம்(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ஆசிரியப்பாParser.ஐகாரக்குறுக்கம்Context) + else: + return self.getTypedRuleContext(ஆசிரியப்பாParser.ஐகாரக்குறுக்கம்Context,i) + + def நெடில்(self): return self.getTypedRuleContext(ஆசிரியப்பாParser.நெடில்Context,0) @@ -3586,93 +3689,67 @@ def exitRule(self, listener:ParseTreeListener): def நிரை(self): localctx = ஆசிரியப்பாParser.நிரைContext(self, self._ctx, self.state) - self.enterRule(localctx, 94, self.RULE_நிரை) + self.enterRule(localctx, 96, self.RULE_நிரை) self._la = 0 # Token type try: - self.state = 364 + self.enterOuterAlt(localctx, 1) + self.state = 351 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,26,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 338 - self.குறில்() - self.state = 339 + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 349 self.குறில்() pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 341 - self.குறில்() - self.state = 342 - self.நெடில்() + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 350 + self.ஐகாரக்குறுக்கம்() pass + else: + raise NoViableAltException(self) - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 344 - self.குறில்() - self.state = 345 + self.state = 356 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 353 self.குறில்() - self.state = 352 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [248]: - self.state = 346 - self.ஆய்தம்() - pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]: - self.state = 348 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 347 - self.ஒற்று() - self.state = 350 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 1048572) != 0)): - break - - pass - else: - raise NoViableAltException(self) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) + elif token in [133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: self.state = 354 - self.குறில்() - self.state = 355 self.நெடில்() - self.state = 362 + pass + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 355 + self.ஐகாரக்குறுக்கம்() + pass + else: + raise NoViableAltException(self) + + self.state = 364 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [19]: + self.state = 358 + self.ஆய்தம்() + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: + self.state = 360 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [248]: - self.state = 356 - self.ஆய்தம்() - pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]: - self.state = 358 + _la = self._input.LA(1) + while True: + self.state = 359 + self.ஒற்று() + self.state = 362 self._errHandler.sync(self) _la = self._input.LA(1) - while True: - self.state = 357 - self.ஒற்று() - self.state = 360 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 1048572) != 0)): - break - - pass - else: - raise NoViableAltException(self) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): + break pass - - + elif token in [-1, 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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249]: + pass + else: + pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3707,13 +3784,13 @@ def exitRule(self, listener:ParseTreeListener): def ஒற்று(self): localctx = ஆசிரியப்பாParser.ஒற்றுContext(self, self._ctx, self.state) - self.enterRule(localctx, 96, self.RULE_ஒற்று) + self.enterRule(localctx, 98, self.RULE_ஒற்று) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 366 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 1048572) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -3727,7 +3804,7 @@ def ஒற்று(self): return localctx - class குறில்Context(ParserRuleContext): + class ஆய்தம்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -3736,29 +3813,68 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def getRuleIndex(self): - return ஆசிரியப்பாParser.RULE_குறில் + return ஆசிரியப்பாParser.RULE_ஆய்தம் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகுறில்" ): - listener.enterகுறில்(self) + if hasattr( listener, "enterஆய்தம்" ): + listener.enterஆய்தம்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகுறில்" ): - listener.exitகுறில்(self) + if hasattr( listener, "exitஆய்தம்" ): + listener.exitஆய்தம்(self) - def குறில்(self): + def ஆய்தம்(self): - localctx = ஆசிரியப்பாParser.குறில்Context(self, self._ctx, self.state) - self.enterRule(localctx, 98, self.RULE_குறில்) - self._la = 0 # Token type + localctx = ஆசிரியப்பாParser.ஆய்தம்Context(self, self._ctx, self.state) + self.enterRule(localctx, 100, self.RULE_ஆய்தம்) try: self.enterOuterAlt(localctx, 1) self.state = 368 + self.match(ஆசிரியப்பாParser.T__18) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ஐகாரக்குறுக்கம்Context(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return ஆசிரியப்பாParser.RULE_ஐகாரக்குறுக்கம் + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterஐகாரக்குறுக்கம்" ): + listener.enterஐகாரக்குறுக்கம்(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitஐகாரக்குறுக்கம்" ): + listener.exitஐகாரக்குறுக்கம்(self) + + + + + def ஐகாரக்குறுக்கம்(self): + + localctx = ஆசிரியப்பாParser.ஐகாரக்குறுக்கம்Context(self, self._ctx, self.state) + self.enterRule(localctx, 102, self.RULE_ஐகாரக்குறுக்கம்) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 370 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & -1048576) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2251799813685247) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 274876858368) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -3772,7 +3888,7 @@ def குறில்(self): return localctx - class நெடில்Context(ParserRuleContext): + class குறில்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -3781,29 +3897,29 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def getRuleIndex(self): - return ஆசிரியப்பாParser.RULE_நெடில் + return ஆசிரியப்பாParser.RULE_குறில் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterநெடில்" ): - listener.enterநெடில்(self) + if hasattr( listener, "enterகுறில்" ): + listener.enterகுறில்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitநெடில்" ): - listener.exitநெடில்(self) + if hasattr( listener, "exitகுறில்" ): + listener.exitகுறில்(self) - def நெடில்(self): + def குறில்(self): - localctx = ஆசிரியப்பாParser.நெடில்Context(self, self._ctx, self.state) - self.enterRule(localctx, 100, self.RULE_நெடில்) + localctx = ஆசிரியப்பாParser.குறில்Context(self, self._ctx, self.state) + self.enterRule(localctx, 104, self.RULE_குறில்) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 370 + self.state = 372 _la = self._input.LA(1) - if not(((((_la - 115)) & ~0x3f) == 0 and ((1 << (_la - 115)) & -1) != 0) or ((((_la - 179)) & ~0x3f) == 0 and ((1 << (_la - 179)) & -1) != 0) or ((((_la - 243)) & ~0x3f) == 0 and ((1 << (_la - 243)) & 31) != 0)): + if not(((((_la - 38)) & ~0x3f) == 0 and ((1 << (_la - 38)) & -1) != 0) or ((((_la - 102)) & ~0x3f) == 0 and ((1 << (_la - 102)) & 2147483647) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -3817,7 +3933,7 @@ def நெடில்(self): return localctx - class ஆய்தம்Context(ParserRuleContext): + class நெடில்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -3826,27 +3942,33 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def getRuleIndex(self): - return ஆசிரியப்பாParser.RULE_ஆய்தம் + return ஆசிரியப்பாParser.RULE_நெடில் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterஆய்தம்" ): - listener.enterஆய்தம்(self) + if hasattr( listener, "enterநெடில்" ): + listener.enterநெடில்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitஆய்தம்" ): - listener.exitஆய்தம்(self) + if hasattr( listener, "exitநெடில்" ): + listener.exitநெடில்(self) - def ஆய்தம்(self): + def நெடில்(self): - localctx = ஆசிரியப்பாParser.ஆய்தம்Context(self, self._ctx, self.state) - self.enterRule(localctx, 102, self.RULE_ஆய்தம்) + localctx = ஆசிரியப்பாParser.நெடில்Context(self, self._ctx, self.state) + self.enterRule(localctx, 106, self.RULE_நெடில்) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 372 - self.match(ஆசிரியப்பாParser.T__247) + self.state = 374 + _la = self._input.LA(1) + if not(((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & -1) != 0) or ((((_la - 197)) & ~0x3f) == 0 and ((1 << (_la - 197)) & 2251799813685247) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215.interp" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215.interp" index 8c31ffd..68542e6 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215.interp" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215.interp" @@ -18,6 +18,25 @@ null 'வ்' 'ழ்' 'ள்' +'ஃ' +'கை' +'ஙை' +'சை' +'ஞை' +'டை' +'ணை' +'தை' +'நை' +'பை' +'மை' +'யை' +'ரை' +'லை' +'வை' +'ழை' +'ளை' +'றை' +'னை' 'அ' 'இ' 'உ' @@ -119,135 +138,117 @@ null 'ஏ' 'ஐ' 'ஓ' -'ஒள' +'ஔ' 'கா' 'கீ' 'கூ' 'கே' -'கை' 'கோ' 'கௌ' 'ஙா' 'ஙீ' 'ஙூ' 'ஙே' -'ஙை' 'ஙோ' 'ஙௌ' 'சா' 'சீ' 'சூ' 'சே' -'சை' 'சோ' 'சௌ' 'ஞா' 'ஞீ' 'ஞூ' 'ஞே' -'ஞை' 'ஞோ' 'ஞௌ' 'டா' 'டீ' 'டூ' 'டே' -'டை' 'டோ' 'டௌ' 'ணா' 'ணீ' 'ணூ' 'ணே' -'ணை' 'ணோ' 'ணௌ' 'தா' 'தீ' 'தூ' 'தே' -'தை' 'தோ' 'தௌ' 'நா' 'நீ' 'நூ' 'நே' -'நை' 'நோ' 'நௌ' 'பா' 'பீ' 'பூ' 'பே' -'பை' 'போ' 'பௌ' 'மா' 'மீ' 'மூ' 'மே' -'மை' 'மோ' 'மௌ' 'யா' 'யீ' 'யூ' 'யே' -'யை' 'யோ' 'யௌ' 'ரா' 'ரீ' 'ரூ' 'ரே' -'ரை' 'ரோ' 'ரௌ' 'லா' 'லீ' 'லூ' 'லே' -'லை' 'லோ' 'லௌ' 'வா' 'வீ' 'வூ' 'வே' -'வை' 'வோ' 'வௌ' 'ழா' 'ழீ' 'ழூ' 'ழே' -'ழை' 'ழோ' 'ழௌ' 'ளா' 'ளீ' 'ளூ' 'ளே' -'ளை' 'ளோ' 'ளௌ' 'றா' 'றீ' 'றூ' 'றே' -'றை' 'றோ' 'றௌ' 'னா' 'னீ' 'னூ' 'னே' -'னை' 'னோ' 'னௌ' -'ஃ' -' ' +null +null token symbolic names: null @@ -499,6 +500,7 @@ null null null I +NL rule names: சீர் @@ -539,12 +541,14 @@ rule names: கருவிளம் கூவிளம் நேர் +முதல்நிரை நிரை ஒற்று +ஆய்தம் +ஐகாரக்குறுக்கம் குறில் நெடில் -ஆய்தம் atn: -[4, 1, 248, 294, 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, 1, 0, 1, 0, 1, 0, 3, 0, 90, 8, 0, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 96, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 102, 8, 2, 1, 3, 1, 3, 3, 3, 106, 8, 3, 1, 4, 1, 4, 3, 4, 110, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 116, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 134, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 144, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 150, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 4, 37, 241, 8, 37, 11, 37, 12, 37, 242, 3, 37, 245, 8, 37, 1, 37, 1, 37, 1, 37, 4, 37, 250, 8, 37, 11, 37, 12, 37, 251, 3, 37, 254, 8, 37, 3, 37, 256, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 4, 38, 268, 8, 38, 11, 38, 12, 38, 269, 3, 38, 272, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 4, 38, 278, 8, 38, 11, 38, 12, 38, 279, 3, 38, 282, 8, 38, 3, 38, 284, 8, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 0, 0, 43, 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, 0, 3, 1, 0, 1, 18, 1, 0, 19, 113, 1, 0, 114, 246, 302, 0, 89, 1, 0, 0, 0, 2, 95, 1, 0, 0, 0, 4, 101, 1, 0, 0, 0, 6, 105, 1, 0, 0, 0, 8, 109, 1, 0, 0, 0, 10, 115, 1, 0, 0, 0, 12, 133, 1, 0, 0, 0, 14, 143, 1, 0, 0, 0, 16, 149, 1, 0, 0, 0, 18, 151, 1, 0, 0, 0, 20, 154, 1, 0, 0, 0, 22, 157, 1, 0, 0, 0, 24, 160, 1, 0, 0, 0, 26, 163, 1, 0, 0, 0, 28, 166, 1, 0, 0, 0, 30, 169, 1, 0, 0, 0, 32, 172, 1, 0, 0, 0, 34, 175, 1, 0, 0, 0, 36, 178, 1, 0, 0, 0, 38, 181, 1, 0, 0, 0, 40, 184, 1, 0, 0, 0, 42, 187, 1, 0, 0, 0, 44, 190, 1, 0, 0, 0, 46, 193, 1, 0, 0, 0, 48, 196, 1, 0, 0, 0, 50, 199, 1, 0, 0, 0, 52, 202, 1, 0, 0, 0, 54, 205, 1, 0, 0, 0, 56, 208, 1, 0, 0, 0, 58, 211, 1, 0, 0, 0, 60, 214, 1, 0, 0, 0, 62, 217, 1, 0, 0, 0, 64, 220, 1, 0, 0, 0, 66, 223, 1, 0, 0, 0, 68, 226, 1, 0, 0, 0, 70, 229, 1, 0, 0, 0, 72, 232, 1, 0, 0, 0, 74, 255, 1, 0, 0, 0, 76, 283, 1, 0, 0, 0, 78, 285, 1, 0, 0, 0, 80, 287, 1, 0, 0, 0, 82, 289, 1, 0, 0, 0, 84, 291, 1, 0, 0, 0, 86, 90, 3, 16, 8, 0, 87, 90, 3, 14, 7, 0, 88, 90, 3, 12, 6, 0, 89, 86, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 89, 88, 1, 0, 0, 0, 90, 1, 1, 0, 0, 0, 91, 96, 3, 52, 26, 0, 92, 96, 3, 56, 28, 0, 93, 96, 3, 60, 30, 0, 94, 96, 3, 64, 32, 0, 95, 91, 1, 0, 0, 0, 95, 92, 1, 0, 0, 0, 95, 93, 1, 0, 0, 0, 95, 94, 1, 0, 0, 0, 96, 3, 1, 0, 0, 0, 97, 102, 3, 66, 33, 0, 98, 102, 3, 68, 34, 0, 99, 102, 3, 70, 35, 0, 100, 102, 3, 72, 36, 0, 101, 97, 1, 0, 0, 0, 101, 98, 1, 0, 0, 0, 101, 99, 1, 0, 0, 0, 101, 100, 1, 0, 0, 0, 102, 5, 1, 0, 0, 0, 103, 106, 3, 66, 33, 0, 104, 106, 3, 68, 34, 0, 105, 103, 1, 0, 0, 0, 105, 104, 1, 0, 0, 0, 106, 7, 1, 0, 0, 0, 107, 110, 3, 70, 35, 0, 108, 110, 3, 72, 36, 0, 109, 107, 1, 0, 0, 0, 109, 108, 1, 0, 0, 0, 110, 9, 1, 0, 0, 0, 111, 116, 3, 50, 25, 0, 112, 116, 3, 54, 27, 0, 113, 116, 3, 58, 29, 0, 114, 116, 3, 62, 31, 0, 115, 111, 1, 0, 0, 0, 115, 112, 1, 0, 0, 0, 115, 113, 1, 0, 0, 0, 115, 114, 1, 0, 0, 0, 116, 11, 1, 0, 0, 0, 117, 134, 3, 18, 9, 0, 118, 134, 3, 20, 10, 0, 119, 134, 3, 22, 11, 0, 120, 134, 3, 24, 12, 0, 121, 134, 3, 26, 13, 0, 122, 134, 3, 28, 14, 0, 123, 134, 3, 30, 15, 0, 124, 134, 3, 32, 16, 0, 125, 134, 3, 34, 17, 0, 126, 134, 3, 36, 18, 0, 127, 134, 3, 38, 19, 0, 128, 134, 3, 40, 20, 0, 129, 134, 3, 42, 21, 0, 130, 134, 3, 44, 22, 0, 131, 134, 3, 46, 23, 0, 132, 134, 3, 48, 24, 0, 133, 117, 1, 0, 0, 0, 133, 118, 1, 0, 0, 0, 133, 119, 1, 0, 0, 0, 133, 120, 1, 0, 0, 0, 133, 121, 1, 0, 0, 0, 133, 122, 1, 0, 0, 0, 133, 123, 1, 0, 0, 0, 133, 124, 1, 0, 0, 0, 133, 125, 1, 0, 0, 0, 133, 126, 1, 0, 0, 0, 133, 127, 1, 0, 0, 0, 133, 128, 1, 0, 0, 0, 133, 129, 1, 0, 0, 0, 133, 130, 1, 0, 0, 0, 133, 131, 1, 0, 0, 0, 133, 132, 1, 0, 0, 0, 134, 13, 1, 0, 0, 0, 135, 144, 3, 50, 25, 0, 136, 144, 3, 52, 26, 0, 137, 144, 3, 54, 27, 0, 138, 144, 3, 56, 28, 0, 139, 144, 3, 58, 29, 0, 140, 144, 3, 60, 30, 0, 141, 144, 3, 62, 31, 0, 142, 144, 3, 64, 32, 0, 143, 135, 1, 0, 0, 0, 143, 136, 1, 0, 0, 0, 143, 137, 1, 0, 0, 0, 143, 138, 1, 0, 0, 0, 143, 139, 1, 0, 0, 0, 143, 140, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 142, 1, 0, 0, 0, 144, 15, 1, 0, 0, 0, 145, 150, 3, 66, 33, 0, 146, 150, 3, 68, 34, 0, 147, 150, 3, 70, 35, 0, 148, 150, 3, 72, 36, 0, 149, 145, 1, 0, 0, 0, 149, 146, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 149, 148, 1, 0, 0, 0, 150, 17, 1, 0, 0, 0, 151, 152, 3, 50, 25, 0, 152, 153, 3, 74, 37, 0, 153, 19, 1, 0, 0, 0, 154, 155, 3, 50, 25, 0, 155, 156, 3, 76, 38, 0, 156, 21, 1, 0, 0, 0, 157, 158, 3, 52, 26, 0, 158, 159, 3, 74, 37, 0, 159, 23, 1, 0, 0, 0, 160, 161, 3, 52, 26, 0, 161, 162, 3, 76, 38, 0, 162, 25, 1, 0, 0, 0, 163, 164, 3, 54, 27, 0, 164, 165, 3, 74, 37, 0, 165, 27, 1, 0, 0, 0, 166, 167, 3, 54, 27, 0, 167, 168, 3, 76, 38, 0, 168, 29, 1, 0, 0, 0, 169, 170, 3, 56, 28, 0, 170, 171, 3, 74, 37, 0, 171, 31, 1, 0, 0, 0, 172, 173, 3, 56, 28, 0, 173, 174, 3, 76, 38, 0, 174, 33, 1, 0, 0, 0, 175, 176, 3, 58, 29, 0, 176, 177, 3, 74, 37, 0, 177, 35, 1, 0, 0, 0, 178, 179, 3, 58, 29, 0, 179, 180, 3, 76, 38, 0, 180, 37, 1, 0, 0, 0, 181, 182, 3, 60, 30, 0, 182, 183, 3, 74, 37, 0, 183, 39, 1, 0, 0, 0, 184, 185, 3, 60, 30, 0, 185, 186, 3, 76, 38, 0, 186, 41, 1, 0, 0, 0, 187, 188, 3, 62, 31, 0, 188, 189, 3, 74, 37, 0, 189, 43, 1, 0, 0, 0, 190, 191, 3, 62, 31, 0, 191, 192, 3, 76, 38, 0, 192, 45, 1, 0, 0, 0, 193, 194, 3, 64, 32, 0, 194, 195, 3, 74, 37, 0, 195, 47, 1, 0, 0, 0, 196, 197, 3, 64, 32, 0, 197, 198, 3, 76, 38, 0, 198, 49, 1, 0, 0, 0, 199, 200, 3, 66, 33, 0, 200, 201, 3, 74, 37, 0, 201, 51, 1, 0, 0, 0, 202, 203, 3, 66, 33, 0, 203, 204, 3, 76, 38, 0, 204, 53, 1, 0, 0, 0, 205, 206, 3, 68, 34, 0, 206, 207, 3, 74, 37, 0, 207, 55, 1, 0, 0, 0, 208, 209, 3, 68, 34, 0, 209, 210, 3, 76, 38, 0, 210, 57, 1, 0, 0, 0, 211, 212, 3, 70, 35, 0, 212, 213, 3, 74, 37, 0, 213, 59, 1, 0, 0, 0, 214, 215, 3, 70, 35, 0, 215, 216, 3, 76, 38, 0, 216, 61, 1, 0, 0, 0, 217, 218, 3, 72, 36, 0, 218, 219, 3, 74, 37, 0, 219, 63, 1, 0, 0, 0, 220, 221, 3, 72, 36, 0, 221, 222, 3, 76, 38, 0, 222, 65, 1, 0, 0, 0, 223, 224, 3, 74, 37, 0, 224, 225, 3, 74, 37, 0, 225, 67, 1, 0, 0, 0, 226, 227, 3, 76, 38, 0, 227, 228, 3, 74, 37, 0, 228, 69, 1, 0, 0, 0, 229, 230, 3, 76, 38, 0, 230, 231, 3, 76, 38, 0, 231, 71, 1, 0, 0, 0, 232, 233, 3, 74, 37, 0, 233, 234, 3, 76, 38, 0, 234, 73, 1, 0, 0, 0, 235, 256, 3, 80, 40, 0, 236, 256, 3, 82, 41, 0, 237, 244, 3, 80, 40, 0, 238, 245, 3, 84, 42, 0, 239, 241, 3, 78, 39, 0, 240, 239, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 240, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 245, 1, 0, 0, 0, 244, 238, 1, 0, 0, 0, 244, 240, 1, 0, 0, 0, 245, 256, 1, 0, 0, 0, 246, 253, 3, 82, 41, 0, 247, 254, 3, 84, 42, 0, 248, 250, 3, 78, 39, 0, 249, 248, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 251, 252, 1, 0, 0, 0, 252, 254, 1, 0, 0, 0, 253, 247, 1, 0, 0, 0, 253, 249, 1, 0, 0, 0, 254, 256, 1, 0, 0, 0, 255, 235, 1, 0, 0, 0, 255, 236, 1, 0, 0, 0, 255, 237, 1, 0, 0, 0, 255, 246, 1, 0, 0, 0, 256, 75, 1, 0, 0, 0, 257, 258, 3, 80, 40, 0, 258, 259, 3, 80, 40, 0, 259, 284, 1, 0, 0, 0, 260, 261, 3, 80, 40, 0, 261, 262, 3, 82, 41, 0, 262, 284, 1, 0, 0, 0, 263, 264, 3, 80, 40, 0, 264, 271, 3, 80, 40, 0, 265, 272, 3, 84, 42, 0, 266, 268, 3, 78, 39, 0, 267, 266, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 272, 1, 0, 0, 0, 271, 265, 1, 0, 0, 0, 271, 267, 1, 0, 0, 0, 272, 284, 1, 0, 0, 0, 273, 274, 3, 80, 40, 0, 274, 281, 3, 82, 41, 0, 275, 282, 3, 84, 42, 0, 276, 278, 3, 78, 39, 0, 277, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 282, 1, 0, 0, 0, 281, 275, 1, 0, 0, 0, 281, 277, 1, 0, 0, 0, 282, 284, 1, 0, 0, 0, 283, 257, 1, 0, 0, 0, 283, 260, 1, 0, 0, 0, 283, 263, 1, 0, 0, 0, 283, 273, 1, 0, 0, 0, 284, 77, 1, 0, 0, 0, 285, 286, 7, 0, 0, 0, 286, 79, 1, 0, 0, 0, 287, 288, 7, 1, 0, 0, 288, 81, 1, 0, 0, 0, 289, 290, 7, 2, 0, 0, 290, 83, 1, 0, 0, 0, 291, 292, 5, 247, 0, 0, 292, 85, 1, 0, 0, 0, 19, 89, 95, 101, 105, 109, 115, 133, 143, 149, 242, 244, 251, 253, 255, 269, 271, 279, 281, 283] \ No newline at end of file +[4, 1, 249, 296, 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, 1, 0, 1, 0, 1, 0, 3, 0, 94, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 102, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 108, 8, 2, 1, 3, 1, 3, 3, 3, 112, 8, 3, 1, 4, 1, 4, 3, 4, 116, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 122, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 140, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 150, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 156, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 3, 37, 245, 8, 37, 1, 37, 1, 37, 4, 37, 249, 8, 37, 11, 37, 12, 37, 250, 3, 37, 253, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 259, 8, 38, 1, 38, 1, 38, 4, 38, 263, 8, 38, 11, 38, 12, 38, 264, 3, 38, 267, 8, 38, 1, 39, 1, 39, 3, 39, 271, 8, 39, 1, 39, 1, 39, 1, 39, 3, 39, 276, 8, 39, 1, 39, 1, 39, 4, 39, 280, 8, 39, 11, 39, 12, 39, 281, 3, 39, 284, 8, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 0, 0, 45, 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, 0, 4, 1, 0, 1, 18, 1, 0, 20, 37, 1, 0, 38, 132, 1, 0, 133, 247, 304, 0, 93, 1, 0, 0, 0, 2, 101, 1, 0, 0, 0, 4, 107, 1, 0, 0, 0, 6, 111, 1, 0, 0, 0, 8, 115, 1, 0, 0, 0, 10, 121, 1, 0, 0, 0, 12, 139, 1, 0, 0, 0, 14, 149, 1, 0, 0, 0, 16, 155, 1, 0, 0, 0, 18, 157, 1, 0, 0, 0, 20, 160, 1, 0, 0, 0, 22, 163, 1, 0, 0, 0, 24, 166, 1, 0, 0, 0, 26, 169, 1, 0, 0, 0, 28, 172, 1, 0, 0, 0, 30, 175, 1, 0, 0, 0, 32, 178, 1, 0, 0, 0, 34, 181, 1, 0, 0, 0, 36, 184, 1, 0, 0, 0, 38, 187, 1, 0, 0, 0, 40, 190, 1, 0, 0, 0, 42, 193, 1, 0, 0, 0, 44, 196, 1, 0, 0, 0, 46, 199, 1, 0, 0, 0, 48, 202, 1, 0, 0, 0, 50, 205, 1, 0, 0, 0, 52, 208, 1, 0, 0, 0, 54, 211, 1, 0, 0, 0, 56, 214, 1, 0, 0, 0, 58, 217, 1, 0, 0, 0, 60, 220, 1, 0, 0, 0, 62, 223, 1, 0, 0, 0, 64, 226, 1, 0, 0, 0, 66, 229, 1, 0, 0, 0, 68, 232, 1, 0, 0, 0, 70, 235, 1, 0, 0, 0, 72, 238, 1, 0, 0, 0, 74, 244, 1, 0, 0, 0, 76, 254, 1, 0, 0, 0, 78, 270, 1, 0, 0, 0, 80, 285, 1, 0, 0, 0, 82, 287, 1, 0, 0, 0, 84, 289, 1, 0, 0, 0, 86, 291, 1, 0, 0, 0, 88, 293, 1, 0, 0, 0, 90, 94, 3, 16, 8, 0, 91, 94, 3, 14, 7, 0, 92, 94, 3, 12, 6, 0, 93, 90, 1, 0, 0, 0, 93, 91, 1, 0, 0, 0, 93, 92, 1, 0, 0, 0, 94, 95, 1, 0, 0, 0, 95, 96, 5, 0, 0, 1, 96, 1, 1, 0, 0, 0, 97, 102, 3, 52, 26, 0, 98, 102, 3, 56, 28, 0, 99, 102, 3, 60, 30, 0, 100, 102, 3, 64, 32, 0, 101, 97, 1, 0, 0, 0, 101, 98, 1, 0, 0, 0, 101, 99, 1, 0, 0, 0, 101, 100, 1, 0, 0, 0, 102, 3, 1, 0, 0, 0, 103, 108, 3, 66, 33, 0, 104, 108, 3, 68, 34, 0, 105, 108, 3, 70, 35, 0, 106, 108, 3, 72, 36, 0, 107, 103, 1, 0, 0, 0, 107, 104, 1, 0, 0, 0, 107, 105, 1, 0, 0, 0, 107, 106, 1, 0, 0, 0, 108, 5, 1, 0, 0, 0, 109, 112, 3, 66, 33, 0, 110, 112, 3, 68, 34, 0, 111, 109, 1, 0, 0, 0, 111, 110, 1, 0, 0, 0, 112, 7, 1, 0, 0, 0, 113, 116, 3, 70, 35, 0, 114, 116, 3, 72, 36, 0, 115, 113, 1, 0, 0, 0, 115, 114, 1, 0, 0, 0, 116, 9, 1, 0, 0, 0, 117, 122, 3, 50, 25, 0, 118, 122, 3, 54, 27, 0, 119, 122, 3, 58, 29, 0, 120, 122, 3, 62, 31, 0, 121, 117, 1, 0, 0, 0, 121, 118, 1, 0, 0, 0, 121, 119, 1, 0, 0, 0, 121, 120, 1, 0, 0, 0, 122, 11, 1, 0, 0, 0, 123, 140, 3, 18, 9, 0, 124, 140, 3, 26, 13, 0, 125, 140, 3, 34, 17, 0, 126, 140, 3, 42, 21, 0, 127, 140, 3, 22, 11, 0, 128, 140, 3, 30, 15, 0, 129, 140, 3, 38, 19, 0, 130, 140, 3, 46, 23, 0, 131, 140, 3, 20, 10, 0, 132, 140, 3, 28, 14, 0, 133, 140, 3, 36, 18, 0, 134, 140, 3, 44, 22, 0, 135, 140, 3, 24, 12, 0, 136, 140, 3, 32, 16, 0, 137, 140, 3, 40, 20, 0, 138, 140, 3, 48, 24, 0, 139, 123, 1, 0, 0, 0, 139, 124, 1, 0, 0, 0, 139, 125, 1, 0, 0, 0, 139, 126, 1, 0, 0, 0, 139, 127, 1, 0, 0, 0, 139, 128, 1, 0, 0, 0, 139, 129, 1, 0, 0, 0, 139, 130, 1, 0, 0, 0, 139, 131, 1, 0, 0, 0, 139, 132, 1, 0, 0, 0, 139, 133, 1, 0, 0, 0, 139, 134, 1, 0, 0, 0, 139, 135, 1, 0, 0, 0, 139, 136, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 139, 138, 1, 0, 0, 0, 140, 13, 1, 0, 0, 0, 141, 150, 3, 50, 25, 0, 142, 150, 3, 54, 27, 0, 143, 150, 3, 58, 29, 0, 144, 150, 3, 62, 31, 0, 145, 150, 3, 52, 26, 0, 146, 150, 3, 56, 28, 0, 147, 150, 3, 60, 30, 0, 148, 150, 3, 64, 32, 0, 149, 141, 1, 0, 0, 0, 149, 142, 1, 0, 0, 0, 149, 143, 1, 0, 0, 0, 149, 144, 1, 0, 0, 0, 149, 145, 1, 0, 0, 0, 149, 146, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 149, 148, 1, 0, 0, 0, 150, 15, 1, 0, 0, 0, 151, 156, 3, 66, 33, 0, 152, 156, 3, 68, 34, 0, 153, 156, 3, 70, 35, 0, 154, 156, 3, 72, 36, 0, 155, 151, 1, 0, 0, 0, 155, 152, 1, 0, 0, 0, 155, 153, 1, 0, 0, 0, 155, 154, 1, 0, 0, 0, 156, 17, 1, 0, 0, 0, 157, 158, 3, 50, 25, 0, 158, 159, 3, 74, 37, 0, 159, 19, 1, 0, 0, 0, 160, 161, 3, 50, 25, 0, 161, 162, 3, 78, 39, 0, 162, 21, 1, 0, 0, 0, 163, 164, 3, 52, 26, 0, 164, 165, 3, 74, 37, 0, 165, 23, 1, 0, 0, 0, 166, 167, 3, 52, 26, 0, 167, 168, 3, 78, 39, 0, 168, 25, 1, 0, 0, 0, 169, 170, 3, 54, 27, 0, 170, 171, 3, 74, 37, 0, 171, 27, 1, 0, 0, 0, 172, 173, 3, 54, 27, 0, 173, 174, 3, 78, 39, 0, 174, 29, 1, 0, 0, 0, 175, 176, 3, 56, 28, 0, 176, 177, 3, 74, 37, 0, 177, 31, 1, 0, 0, 0, 178, 179, 3, 56, 28, 0, 179, 180, 3, 78, 39, 0, 180, 33, 1, 0, 0, 0, 181, 182, 3, 58, 29, 0, 182, 183, 3, 74, 37, 0, 183, 35, 1, 0, 0, 0, 184, 185, 3, 58, 29, 0, 185, 186, 3, 78, 39, 0, 186, 37, 1, 0, 0, 0, 187, 188, 3, 60, 30, 0, 188, 189, 3, 74, 37, 0, 189, 39, 1, 0, 0, 0, 190, 191, 3, 60, 30, 0, 191, 192, 3, 78, 39, 0, 192, 41, 1, 0, 0, 0, 193, 194, 3, 62, 31, 0, 194, 195, 3, 74, 37, 0, 195, 43, 1, 0, 0, 0, 196, 197, 3, 62, 31, 0, 197, 198, 3, 78, 39, 0, 198, 45, 1, 0, 0, 0, 199, 200, 3, 64, 32, 0, 200, 201, 3, 74, 37, 0, 201, 47, 1, 0, 0, 0, 202, 203, 3, 64, 32, 0, 203, 204, 3, 78, 39, 0, 204, 49, 1, 0, 0, 0, 205, 206, 3, 66, 33, 0, 206, 207, 3, 74, 37, 0, 207, 51, 1, 0, 0, 0, 208, 209, 3, 66, 33, 0, 209, 210, 3, 78, 39, 0, 210, 53, 1, 0, 0, 0, 211, 212, 3, 68, 34, 0, 212, 213, 3, 74, 37, 0, 213, 55, 1, 0, 0, 0, 214, 215, 3, 68, 34, 0, 215, 216, 3, 78, 39, 0, 216, 57, 1, 0, 0, 0, 217, 218, 3, 70, 35, 0, 218, 219, 3, 74, 37, 0, 219, 59, 1, 0, 0, 0, 220, 221, 3, 70, 35, 0, 221, 222, 3, 78, 39, 0, 222, 61, 1, 0, 0, 0, 223, 224, 3, 72, 36, 0, 224, 225, 3, 74, 37, 0, 225, 63, 1, 0, 0, 0, 226, 227, 3, 72, 36, 0, 227, 228, 3, 78, 39, 0, 228, 65, 1, 0, 0, 0, 229, 230, 3, 74, 37, 0, 230, 231, 3, 74, 37, 0, 231, 67, 1, 0, 0, 0, 232, 233, 3, 76, 38, 0, 233, 234, 3, 74, 37, 0, 234, 69, 1, 0, 0, 0, 235, 236, 3, 76, 38, 0, 236, 237, 3, 78, 39, 0, 237, 71, 1, 0, 0, 0, 238, 239, 3, 74, 37, 0, 239, 240, 3, 78, 39, 0, 240, 73, 1, 0, 0, 0, 241, 245, 3, 86, 43, 0, 242, 245, 3, 88, 44, 0, 243, 245, 3, 84, 42, 0, 244, 241, 1, 0, 0, 0, 244, 242, 1, 0, 0, 0, 244, 243, 1, 0, 0, 0, 245, 252, 1, 0, 0, 0, 246, 253, 3, 82, 41, 0, 247, 249, 3, 80, 40, 0, 248, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251, 253, 1, 0, 0, 0, 252, 246, 1, 0, 0, 0, 252, 248, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 75, 1, 0, 0, 0, 254, 258, 3, 86, 43, 0, 255, 259, 3, 86, 43, 0, 256, 259, 3, 88, 44, 0, 257, 259, 3, 84, 42, 0, 258, 255, 1, 0, 0, 0, 258, 256, 1, 0, 0, 0, 258, 257, 1, 0, 0, 0, 259, 266, 1, 0, 0, 0, 260, 267, 3, 82, 41, 0, 261, 263, 3, 80, 40, 0, 262, 261, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 267, 1, 0, 0, 0, 266, 260, 1, 0, 0, 0, 266, 262, 1, 0, 0, 0, 266, 267, 1, 0, 0, 0, 267, 77, 1, 0, 0, 0, 268, 271, 3, 86, 43, 0, 269, 271, 3, 84, 42, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271, 275, 1, 0, 0, 0, 272, 276, 3, 86, 43, 0, 273, 276, 3, 88, 44, 0, 274, 276, 3, 84, 42, 0, 275, 272, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 274, 1, 0, 0, 0, 276, 283, 1, 0, 0, 0, 277, 284, 3, 82, 41, 0, 278, 280, 3, 80, 40, 0, 279, 278, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 284, 1, 0, 0, 0, 283, 277, 1, 0, 0, 0, 283, 279, 1, 0, 0, 0, 283, 284, 1, 0, 0, 0, 284, 79, 1, 0, 0, 0, 285, 286, 7, 0, 0, 0, 286, 81, 1, 0, 0, 0, 287, 288, 5, 19, 0, 0, 288, 83, 1, 0, 0, 0, 289, 290, 7, 1, 0, 0, 290, 85, 1, 0, 0, 0, 291, 292, 7, 2, 0, 0, 292, 87, 1, 0, 0, 0, 293, 294, 7, 3, 0, 0, 294, 89, 1, 0, 0, 0, 19, 93, 101, 107, 111, 115, 121, 139, 149, 155, 244, 250, 252, 258, 264, 266, 270, 275, 281, 283] \ No newline at end of file diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215.tokens" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215.tokens" index b3fa9c6..c562079 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215.tokens" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215.tokens" @@ -246,6 +246,7 @@ T__244=245 T__245=246 T__246=247 I=248 +NL=249 'க்'=1 'ச்'=2 'ட்'=3 @@ -264,233 +265,232 @@ I=248 'வ்'=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 -'ஐ'=118 -'ஓ'=119 -'ஒள'=120 -'கா'=121 -'கீ'=122 -'கூ'=123 -'கே'=124 -'கை'=125 -'கோ'=126 -'கௌ'=127 -'ஙா'=128 -'ஙீ'=129 -'ஙூ'=130 -'ஙே'=131 -'ஙை'=132 -'ஙோ'=133 -'ஙௌ'=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 -'ணௌ'=162 -'தா'=163 -'தீ'=164 -'தூ'=165 -'தே'=166 -'தை'=167 -'தோ'=168 -'தௌ'=169 -'நா'=170 -'நீ'=171 -'நூ'=172 -'நே'=173 -'நை'=174 -'நோ'=175 -'நௌ'=176 -'பா'=177 -'பீ'=178 -'பூ'=179 -'பே'=180 -'பை'=181 -'போ'=182 -'பௌ'=183 -'மா'=184 -'மீ'=185 -'மூ'=186 -'மே'=187 -'மை'=188 -'மோ'=189 -'மௌ'=190 -'யா'=191 -'யீ'=192 -'யூ'=193 -'யே'=194 -'யை'=195 -'யோ'=196 -'யௌ'=197 -'ரா'=198 -'ரீ'=199 -'ரூ'=200 -'ரே'=201 -'ரை'=202 -'ரோ'=203 -'ரௌ'=204 -'லா'=205 -'லீ'=206 -'லூ'=207 -'லே'=208 -'லை'=209 -'லோ'=210 -'லௌ'=211 -'வா'=212 -'வீ'=213 -'வூ'=214 -'வே'=215 -'வை'=216 -'வோ'=217 -'வௌ'=218 -'ழா'=219 -'ழீ'=220 -'ழூ'=221 -'ழே'=222 -'ழை'=223 -'ழோ'=224 -'ழௌ'=225 -'ளா'=226 -'ளீ'=227 -'ளூ'=228 -'ளே'=229 -'ளை'=230 -'ளோ'=231 -'ளௌ'=232 -'றா'=233 -'றீ'=234 -'றூ'=235 -'றே'=236 -'றை'=237 -'றோ'=238 -'றௌ'=239 -'னா'=240 -'னீ'=241 -'னூ'=242 -'னே'=243 -'னை'=244 -'னோ'=245 -'னௌ'=246 -'ஃ'=247 -' '=248 +'ஃ'=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 +'ள'=118 +'ளி'=119 +'ளு'=120 +'ளெ'=121 +'ளொ'=122 +'ற'=123 +'றி'=124 +'று'=125 +'றெ'=126 +'றொ'=127 +'ன'=128 +'னி'=129 +'னு'=130 +'னெ'=131 +'னொ'=132 +'ஆ'=133 +'ஈ'=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 +'ஞோ'=162 +'ஞௌ'=163 +'டா'=164 +'டீ'=165 +'டூ'=166 +'டே'=167 +'டோ'=168 +'டௌ'=169 +'ணா'=170 +'ணீ'=171 +'ணூ'=172 +'ணே'=173 +'ணோ'=174 +'ணௌ'=175 +'தா'=176 +'தீ'=177 +'தூ'=178 +'தே'=179 +'தோ'=180 +'தௌ'=181 +'நா'=182 +'நீ'=183 +'நூ'=184 +'நே'=185 +'நோ'=186 +'நௌ'=187 +'பா'=188 +'பீ'=189 +'பூ'=190 +'பே'=191 +'போ'=192 +'பௌ'=193 +'மா'=194 +'மீ'=195 +'மூ'=196 +'மே'=197 +'மோ'=198 +'மௌ'=199 +'யா'=200 +'யீ'=201 +'யூ'=202 +'யே'=203 +'யோ'=204 +'யௌ'=205 +'ரா'=206 +'ரீ'=207 +'ரூ'=208 +'ரே'=209 +'ரோ'=210 +'ரௌ'=211 +'லா'=212 +'லீ'=213 +'லூ'=214 +'லே'=215 +'லோ'=216 +'லௌ'=217 +'வா'=218 +'வீ'=219 +'வூ'=220 +'வே'=221 +'வோ'=222 +'வௌ'=223 +'ழா'=224 +'ழீ'=225 +'ழூ'=226 +'ழே'=227 +'ழோ'=228 +'ழௌ'=229 +'ளா'=230 +'ளீ'=231 +'ளூ'=232 +'ளே'=233 +'ளோ'=234 +'ளௌ'=235 +'றா'=236 +'றீ'=237 +'றூ'=238 +'றே'=239 +'றோ'=240 +'றௌ'=241 +'னா'=242 +'னீ'=243 +'னூ'=244 +'னே'=245 +'னோ'=246 +'னௌ'=247 diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.interp" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.interp" index ec58628..31428a7 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.interp" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.interp" @@ -18,6 +18,25 @@ null 'வ்' 'ழ்' 'ள்' +'ஃ' +'கை' +'ஙை' +'சை' +'ஞை' +'டை' +'ணை' +'தை' +'நை' +'பை' +'மை' +'யை' +'ரை' +'லை' +'வை' +'ழை' +'ளை' +'றை' +'னை' 'அ' 'இ' 'உ' @@ -119,135 +138,117 @@ null 'ஏ' 'ஐ' 'ஓ' -'ஒள' +'ஔ' 'கா' 'கீ' 'கூ' 'கே' -'கை' 'கோ' 'கௌ' 'ஙா' 'ஙீ' 'ஙூ' 'ஙே' -'ஙை' 'ஙோ' 'ஙௌ' 'சா' 'சீ' 'சூ' 'சே' -'சை' 'சோ' 'சௌ' 'ஞா' 'ஞீ' 'ஞூ' 'ஞே' -'ஞை' 'ஞோ' 'ஞௌ' 'டா' 'டீ' 'டூ' 'டே' -'டை' 'டோ' 'டௌ' 'ணா' 'ணீ' 'ணூ' 'ணே' -'ணை' 'ணோ' 'ணௌ' 'தா' 'தீ' 'தூ' 'தே' -'தை' 'தோ' 'தௌ' 'நா' 'நீ' 'நூ' 'நே' -'நை' 'நோ' 'நௌ' 'பா' 'பீ' 'பூ' 'பே' -'பை' 'போ' 'பௌ' 'மா' 'மீ' 'மூ' 'மே' -'மை' 'மோ' 'மௌ' 'யா' 'யீ' 'யூ' 'யே' -'யை' 'யோ' 'யௌ' 'ரா' 'ரீ' 'ரூ' 'ரே' -'ரை' 'ரோ' 'ரௌ' 'லா' 'லீ' 'லூ' 'லே' -'லை' 'லோ' 'லௌ' 'வா' 'வீ' 'வூ' 'வே' -'வை' 'வோ' 'வௌ' 'ழா' 'ழீ' 'ழூ' 'ழே' -'ழை' 'ழோ' 'ழௌ' 'ளா' 'ளீ' 'ளூ' 'ளே' -'ளை' 'ளோ' 'ளௌ' 'றா' 'றீ' 'றூ' 'றே' -'றை' 'றோ' 'றௌ' 'னா' 'னீ' 'னூ' 'னே' -'னை' 'னோ' 'னௌ' -'ஃ' -' ' +null +null token symbolic names: null @@ -499,6 +500,7 @@ null null null I +NL rule names: T__0 @@ -749,6 +751,7 @@ T__244 T__245 T__246 I +NL channel names: DEFAULT_TOKEN_CHANNEL @@ -758,4 +761,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 248, 1210, 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, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 247, 1, 247, 0, 0, 248, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 1, 0, 0, 1209, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 1, 497, 1, 0, 0, 0, 3, 500, 1, 0, 0, 0, 5, 503, 1, 0, 0, 0, 7, 506, 1, 0, 0, 0, 9, 509, 1, 0, 0, 0, 11, 512, 1, 0, 0, 0, 13, 515, 1, 0, 0, 0, 15, 518, 1, 0, 0, 0, 17, 521, 1, 0, 0, 0, 19, 524, 1, 0, 0, 0, 21, 527, 1, 0, 0, 0, 23, 530, 1, 0, 0, 0, 25, 533, 1, 0, 0, 0, 27, 536, 1, 0, 0, 0, 29, 539, 1, 0, 0, 0, 31, 542, 1, 0, 0, 0, 33, 545, 1, 0, 0, 0, 35, 548, 1, 0, 0, 0, 37, 551, 1, 0, 0, 0, 39, 553, 1, 0, 0, 0, 41, 555, 1, 0, 0, 0, 43, 557, 1, 0, 0, 0, 45, 559, 1, 0, 0, 0, 47, 561, 1, 0, 0, 0, 49, 563, 1, 0, 0, 0, 51, 566, 1, 0, 0, 0, 53, 569, 1, 0, 0, 0, 55, 572, 1, 0, 0, 0, 57, 575, 1, 0, 0, 0, 59, 577, 1, 0, 0, 0, 61, 580, 1, 0, 0, 0, 63, 583, 1, 0, 0, 0, 65, 586, 1, 0, 0, 0, 67, 589, 1, 0, 0, 0, 69, 591, 1, 0, 0, 0, 71, 594, 1, 0, 0, 0, 73, 597, 1, 0, 0, 0, 75, 600, 1, 0, 0, 0, 77, 603, 1, 0, 0, 0, 79, 605, 1, 0, 0, 0, 81, 608, 1, 0, 0, 0, 83, 611, 1, 0, 0, 0, 85, 614, 1, 0, 0, 0, 87, 617, 1, 0, 0, 0, 89, 619, 1, 0, 0, 0, 91, 622, 1, 0, 0, 0, 93, 625, 1, 0, 0, 0, 95, 628, 1, 0, 0, 0, 97, 631, 1, 0, 0, 0, 99, 633, 1, 0, 0, 0, 101, 636, 1, 0, 0, 0, 103, 639, 1, 0, 0, 0, 105, 642, 1, 0, 0, 0, 107, 645, 1, 0, 0, 0, 109, 647, 1, 0, 0, 0, 111, 650, 1, 0, 0, 0, 113, 653, 1, 0, 0, 0, 115, 656, 1, 0, 0, 0, 117, 659, 1, 0, 0, 0, 119, 661, 1, 0, 0, 0, 121, 664, 1, 0, 0, 0, 123, 667, 1, 0, 0, 0, 125, 670, 1, 0, 0, 0, 127, 673, 1, 0, 0, 0, 129, 675, 1, 0, 0, 0, 131, 678, 1, 0, 0, 0, 133, 681, 1, 0, 0, 0, 135, 684, 1, 0, 0, 0, 137, 687, 1, 0, 0, 0, 139, 689, 1, 0, 0, 0, 141, 692, 1, 0, 0, 0, 143, 695, 1, 0, 0, 0, 145, 698, 1, 0, 0, 0, 147, 701, 1, 0, 0, 0, 149, 703, 1, 0, 0, 0, 151, 706, 1, 0, 0, 0, 153, 709, 1, 0, 0, 0, 155, 712, 1, 0, 0, 0, 157, 715, 1, 0, 0, 0, 159, 717, 1, 0, 0, 0, 161, 720, 1, 0, 0, 0, 163, 723, 1, 0, 0, 0, 165, 726, 1, 0, 0, 0, 167, 729, 1, 0, 0, 0, 169, 731, 1, 0, 0, 0, 171, 734, 1, 0, 0, 0, 173, 737, 1, 0, 0, 0, 175, 740, 1, 0, 0, 0, 177, 743, 1, 0, 0, 0, 179, 745, 1, 0, 0, 0, 181, 748, 1, 0, 0, 0, 183, 751, 1, 0, 0, 0, 185, 754, 1, 0, 0, 0, 187, 757, 1, 0, 0, 0, 189, 759, 1, 0, 0, 0, 191, 762, 1, 0, 0, 0, 193, 765, 1, 0, 0, 0, 195, 768, 1, 0, 0, 0, 197, 771, 1, 0, 0, 0, 199, 773, 1, 0, 0, 0, 201, 776, 1, 0, 0, 0, 203, 779, 1, 0, 0, 0, 205, 782, 1, 0, 0, 0, 207, 785, 1, 0, 0, 0, 209, 787, 1, 0, 0, 0, 211, 790, 1, 0, 0, 0, 213, 793, 1, 0, 0, 0, 215, 796, 1, 0, 0, 0, 217, 799, 1, 0, 0, 0, 219, 801, 1, 0, 0, 0, 221, 804, 1, 0, 0, 0, 223, 807, 1, 0, 0, 0, 225, 810, 1, 0, 0, 0, 227, 813, 1, 0, 0, 0, 229, 815, 1, 0, 0, 0, 231, 817, 1, 0, 0, 0, 233, 819, 1, 0, 0, 0, 235, 821, 1, 0, 0, 0, 237, 823, 1, 0, 0, 0, 239, 825, 1, 0, 0, 0, 241, 828, 1, 0, 0, 0, 243, 831, 1, 0, 0, 0, 245, 834, 1, 0, 0, 0, 247, 837, 1, 0, 0, 0, 249, 840, 1, 0, 0, 0, 251, 843, 1, 0, 0, 0, 253, 846, 1, 0, 0, 0, 255, 849, 1, 0, 0, 0, 257, 852, 1, 0, 0, 0, 259, 855, 1, 0, 0, 0, 261, 858, 1, 0, 0, 0, 263, 861, 1, 0, 0, 0, 265, 864, 1, 0, 0, 0, 267, 867, 1, 0, 0, 0, 269, 870, 1, 0, 0, 0, 271, 873, 1, 0, 0, 0, 273, 876, 1, 0, 0, 0, 275, 879, 1, 0, 0, 0, 277, 882, 1, 0, 0, 0, 279, 885, 1, 0, 0, 0, 281, 888, 1, 0, 0, 0, 283, 891, 1, 0, 0, 0, 285, 894, 1, 0, 0, 0, 287, 897, 1, 0, 0, 0, 289, 900, 1, 0, 0, 0, 291, 903, 1, 0, 0, 0, 293, 906, 1, 0, 0, 0, 295, 909, 1, 0, 0, 0, 297, 912, 1, 0, 0, 0, 299, 915, 1, 0, 0, 0, 301, 918, 1, 0, 0, 0, 303, 921, 1, 0, 0, 0, 305, 924, 1, 0, 0, 0, 307, 927, 1, 0, 0, 0, 309, 930, 1, 0, 0, 0, 311, 933, 1, 0, 0, 0, 313, 936, 1, 0, 0, 0, 315, 939, 1, 0, 0, 0, 317, 942, 1, 0, 0, 0, 319, 945, 1, 0, 0, 0, 321, 948, 1, 0, 0, 0, 323, 951, 1, 0, 0, 0, 325, 954, 1, 0, 0, 0, 327, 957, 1, 0, 0, 0, 329, 960, 1, 0, 0, 0, 331, 963, 1, 0, 0, 0, 333, 966, 1, 0, 0, 0, 335, 969, 1, 0, 0, 0, 337, 972, 1, 0, 0, 0, 339, 975, 1, 0, 0, 0, 341, 978, 1, 0, 0, 0, 343, 981, 1, 0, 0, 0, 345, 984, 1, 0, 0, 0, 347, 987, 1, 0, 0, 0, 349, 990, 1, 0, 0, 0, 351, 993, 1, 0, 0, 0, 353, 996, 1, 0, 0, 0, 355, 999, 1, 0, 0, 0, 357, 1002, 1, 0, 0, 0, 359, 1005, 1, 0, 0, 0, 361, 1008, 1, 0, 0, 0, 363, 1011, 1, 0, 0, 0, 365, 1014, 1, 0, 0, 0, 367, 1017, 1, 0, 0, 0, 369, 1020, 1, 0, 0, 0, 371, 1023, 1, 0, 0, 0, 373, 1026, 1, 0, 0, 0, 375, 1029, 1, 0, 0, 0, 377, 1032, 1, 0, 0, 0, 379, 1035, 1, 0, 0, 0, 381, 1038, 1, 0, 0, 0, 383, 1041, 1, 0, 0, 0, 385, 1044, 1, 0, 0, 0, 387, 1047, 1, 0, 0, 0, 389, 1050, 1, 0, 0, 0, 391, 1053, 1, 0, 0, 0, 393, 1056, 1, 0, 0, 0, 395, 1059, 1, 0, 0, 0, 397, 1062, 1, 0, 0, 0, 399, 1065, 1, 0, 0, 0, 401, 1068, 1, 0, 0, 0, 403, 1071, 1, 0, 0, 0, 405, 1074, 1, 0, 0, 0, 407, 1077, 1, 0, 0, 0, 409, 1080, 1, 0, 0, 0, 411, 1083, 1, 0, 0, 0, 413, 1086, 1, 0, 0, 0, 415, 1089, 1, 0, 0, 0, 417, 1092, 1, 0, 0, 0, 419, 1095, 1, 0, 0, 0, 421, 1098, 1, 0, 0, 0, 423, 1101, 1, 0, 0, 0, 425, 1104, 1, 0, 0, 0, 427, 1107, 1, 0, 0, 0, 429, 1110, 1, 0, 0, 0, 431, 1113, 1, 0, 0, 0, 433, 1116, 1, 0, 0, 0, 435, 1119, 1, 0, 0, 0, 437, 1122, 1, 0, 0, 0, 439, 1125, 1, 0, 0, 0, 441, 1128, 1, 0, 0, 0, 443, 1131, 1, 0, 0, 0, 445, 1134, 1, 0, 0, 0, 447, 1137, 1, 0, 0, 0, 449, 1140, 1, 0, 0, 0, 451, 1143, 1, 0, 0, 0, 453, 1146, 1, 0, 0, 0, 455, 1149, 1, 0, 0, 0, 457, 1152, 1, 0, 0, 0, 459, 1155, 1, 0, 0, 0, 461, 1158, 1, 0, 0, 0, 463, 1161, 1, 0, 0, 0, 465, 1164, 1, 0, 0, 0, 467, 1167, 1, 0, 0, 0, 469, 1170, 1, 0, 0, 0, 471, 1173, 1, 0, 0, 0, 473, 1176, 1, 0, 0, 0, 475, 1179, 1, 0, 0, 0, 477, 1182, 1, 0, 0, 0, 479, 1185, 1, 0, 0, 0, 481, 1188, 1, 0, 0, 0, 483, 1191, 1, 0, 0, 0, 485, 1194, 1, 0, 0, 0, 487, 1197, 1, 0, 0, 0, 489, 1200, 1, 0, 0, 0, 491, 1203, 1, 0, 0, 0, 493, 1206, 1, 0, 0, 0, 495, 1208, 1, 0, 0, 0, 497, 498, 5, 2965, 0, 0, 498, 499, 5, 3021, 0, 0, 499, 2, 1, 0, 0, 0, 500, 501, 5, 2970, 0, 0, 501, 502, 5, 3021, 0, 0, 502, 4, 1, 0, 0, 0, 503, 504, 5, 2975, 0, 0, 504, 505, 5, 3021, 0, 0, 505, 6, 1, 0, 0, 0, 506, 507, 5, 2980, 0, 0, 507, 508, 5, 3021, 0, 0, 508, 8, 1, 0, 0, 0, 509, 510, 5, 2986, 0, 0, 510, 511, 5, 3021, 0, 0, 511, 10, 1, 0, 0, 0, 512, 513, 5, 2993, 0, 0, 513, 514, 5, 3021, 0, 0, 514, 12, 1, 0, 0, 0, 515, 516, 5, 2974, 0, 0, 516, 517, 5, 3021, 0, 0, 517, 14, 1, 0, 0, 0, 518, 519, 5, 2969, 0, 0, 519, 520, 5, 3021, 0, 0, 520, 16, 1, 0, 0, 0, 521, 522, 5, 2979, 0, 0, 522, 523, 5, 3021, 0, 0, 523, 18, 1, 0, 0, 0, 524, 525, 5, 2984, 0, 0, 525, 526, 5, 3021, 0, 0, 526, 20, 1, 0, 0, 0, 527, 528, 5, 2990, 0, 0, 528, 529, 5, 3021, 0, 0, 529, 22, 1, 0, 0, 0, 530, 531, 5, 2985, 0, 0, 531, 532, 5, 3021, 0, 0, 532, 24, 1, 0, 0, 0, 533, 534, 5, 2991, 0, 0, 534, 535, 5, 3021, 0, 0, 535, 26, 1, 0, 0, 0, 536, 537, 5, 2992, 0, 0, 537, 538, 5, 3021, 0, 0, 538, 28, 1, 0, 0, 0, 539, 540, 5, 2994, 0, 0, 540, 541, 5, 3021, 0, 0, 541, 30, 1, 0, 0, 0, 542, 543, 5, 2997, 0, 0, 543, 544, 5, 3021, 0, 0, 544, 32, 1, 0, 0, 0, 545, 546, 5, 2996, 0, 0, 546, 547, 5, 3021, 0, 0, 547, 34, 1, 0, 0, 0, 548, 549, 5, 2995, 0, 0, 549, 550, 5, 3021, 0, 0, 550, 36, 1, 0, 0, 0, 551, 552, 5, 2949, 0, 0, 552, 38, 1, 0, 0, 0, 553, 554, 5, 2951, 0, 0, 554, 40, 1, 0, 0, 0, 555, 556, 5, 2953, 0, 0, 556, 42, 1, 0, 0, 0, 557, 558, 5, 2958, 0, 0, 558, 44, 1, 0, 0, 0, 559, 560, 5, 2962, 0, 0, 560, 46, 1, 0, 0, 0, 561, 562, 5, 2965, 0, 0, 562, 48, 1, 0, 0, 0, 563, 564, 5, 2965, 0, 0, 564, 565, 5, 3007, 0, 0, 565, 50, 1, 0, 0, 0, 566, 567, 5, 2965, 0, 0, 567, 568, 5, 3009, 0, 0, 568, 52, 1, 0, 0, 0, 569, 570, 5, 2965, 0, 0, 570, 571, 5, 3014, 0, 0, 571, 54, 1, 0, 0, 0, 572, 573, 5, 2965, 0, 0, 573, 574, 5, 3018, 0, 0, 574, 56, 1, 0, 0, 0, 575, 576, 5, 2969, 0, 0, 576, 58, 1, 0, 0, 0, 577, 578, 5, 2969, 0, 0, 578, 579, 5, 3007, 0, 0, 579, 60, 1, 0, 0, 0, 580, 581, 5, 2969, 0, 0, 581, 582, 5, 3009, 0, 0, 582, 62, 1, 0, 0, 0, 583, 584, 5, 2969, 0, 0, 584, 585, 5, 3014, 0, 0, 585, 64, 1, 0, 0, 0, 586, 587, 5, 2969, 0, 0, 587, 588, 5, 3018, 0, 0, 588, 66, 1, 0, 0, 0, 589, 590, 5, 2970, 0, 0, 590, 68, 1, 0, 0, 0, 591, 592, 5, 2970, 0, 0, 592, 593, 5, 3007, 0, 0, 593, 70, 1, 0, 0, 0, 594, 595, 5, 2970, 0, 0, 595, 596, 5, 3009, 0, 0, 596, 72, 1, 0, 0, 0, 597, 598, 5, 2970, 0, 0, 598, 599, 5, 3014, 0, 0, 599, 74, 1, 0, 0, 0, 600, 601, 5, 2970, 0, 0, 601, 602, 5, 3018, 0, 0, 602, 76, 1, 0, 0, 0, 603, 604, 5, 2974, 0, 0, 604, 78, 1, 0, 0, 0, 605, 606, 5, 2974, 0, 0, 606, 607, 5, 3007, 0, 0, 607, 80, 1, 0, 0, 0, 608, 609, 5, 2974, 0, 0, 609, 610, 5, 3009, 0, 0, 610, 82, 1, 0, 0, 0, 611, 612, 5, 2974, 0, 0, 612, 613, 5, 3014, 0, 0, 613, 84, 1, 0, 0, 0, 614, 615, 5, 2974, 0, 0, 615, 616, 5, 3018, 0, 0, 616, 86, 1, 0, 0, 0, 617, 618, 5, 2975, 0, 0, 618, 88, 1, 0, 0, 0, 619, 620, 5, 2975, 0, 0, 620, 621, 5, 3007, 0, 0, 621, 90, 1, 0, 0, 0, 622, 623, 5, 2975, 0, 0, 623, 624, 5, 3009, 0, 0, 624, 92, 1, 0, 0, 0, 625, 626, 5, 2975, 0, 0, 626, 627, 5, 3014, 0, 0, 627, 94, 1, 0, 0, 0, 628, 629, 5, 2975, 0, 0, 629, 630, 5, 3018, 0, 0, 630, 96, 1, 0, 0, 0, 631, 632, 5, 2979, 0, 0, 632, 98, 1, 0, 0, 0, 633, 634, 5, 2979, 0, 0, 634, 635, 5, 3007, 0, 0, 635, 100, 1, 0, 0, 0, 636, 637, 5, 2979, 0, 0, 637, 638, 5, 3009, 0, 0, 638, 102, 1, 0, 0, 0, 639, 640, 5, 2979, 0, 0, 640, 641, 5, 3014, 0, 0, 641, 104, 1, 0, 0, 0, 642, 643, 5, 2979, 0, 0, 643, 644, 5, 3018, 0, 0, 644, 106, 1, 0, 0, 0, 645, 646, 5, 2980, 0, 0, 646, 108, 1, 0, 0, 0, 647, 648, 5, 2980, 0, 0, 648, 649, 5, 3007, 0, 0, 649, 110, 1, 0, 0, 0, 650, 651, 5, 2980, 0, 0, 651, 652, 5, 3009, 0, 0, 652, 112, 1, 0, 0, 0, 653, 654, 5, 2980, 0, 0, 654, 655, 5, 3014, 0, 0, 655, 114, 1, 0, 0, 0, 656, 657, 5, 2980, 0, 0, 657, 658, 5, 3018, 0, 0, 658, 116, 1, 0, 0, 0, 659, 660, 5, 2984, 0, 0, 660, 118, 1, 0, 0, 0, 661, 662, 5, 2984, 0, 0, 662, 663, 5, 3007, 0, 0, 663, 120, 1, 0, 0, 0, 664, 665, 5, 2984, 0, 0, 665, 666, 5, 3009, 0, 0, 666, 122, 1, 0, 0, 0, 667, 668, 5, 2984, 0, 0, 668, 669, 5, 3014, 0, 0, 669, 124, 1, 0, 0, 0, 670, 671, 5, 2984, 0, 0, 671, 672, 5, 3018, 0, 0, 672, 126, 1, 0, 0, 0, 673, 674, 5, 2986, 0, 0, 674, 128, 1, 0, 0, 0, 675, 676, 5, 2986, 0, 0, 676, 677, 5, 3007, 0, 0, 677, 130, 1, 0, 0, 0, 678, 679, 5, 2986, 0, 0, 679, 680, 5, 3009, 0, 0, 680, 132, 1, 0, 0, 0, 681, 682, 5, 2986, 0, 0, 682, 683, 5, 3014, 0, 0, 683, 134, 1, 0, 0, 0, 684, 685, 5, 2986, 0, 0, 685, 686, 5, 3018, 0, 0, 686, 136, 1, 0, 0, 0, 687, 688, 5, 2990, 0, 0, 688, 138, 1, 0, 0, 0, 689, 690, 5, 2990, 0, 0, 690, 691, 5, 3007, 0, 0, 691, 140, 1, 0, 0, 0, 692, 693, 5, 2990, 0, 0, 693, 694, 5, 3009, 0, 0, 694, 142, 1, 0, 0, 0, 695, 696, 5, 2990, 0, 0, 696, 697, 5, 3014, 0, 0, 697, 144, 1, 0, 0, 0, 698, 699, 5, 2990, 0, 0, 699, 700, 5, 3018, 0, 0, 700, 146, 1, 0, 0, 0, 701, 702, 5, 2991, 0, 0, 702, 148, 1, 0, 0, 0, 703, 704, 5, 2991, 0, 0, 704, 705, 5, 3007, 0, 0, 705, 150, 1, 0, 0, 0, 706, 707, 5, 2991, 0, 0, 707, 708, 5, 3009, 0, 0, 708, 152, 1, 0, 0, 0, 709, 710, 5, 2991, 0, 0, 710, 711, 5, 3014, 0, 0, 711, 154, 1, 0, 0, 0, 712, 713, 5, 2991, 0, 0, 713, 714, 5, 3018, 0, 0, 714, 156, 1, 0, 0, 0, 715, 716, 5, 2992, 0, 0, 716, 158, 1, 0, 0, 0, 717, 718, 5, 2992, 0, 0, 718, 719, 5, 3007, 0, 0, 719, 160, 1, 0, 0, 0, 720, 721, 5, 2992, 0, 0, 721, 722, 5, 3009, 0, 0, 722, 162, 1, 0, 0, 0, 723, 724, 5, 2992, 0, 0, 724, 725, 5, 3014, 0, 0, 725, 164, 1, 0, 0, 0, 726, 727, 5, 2992, 0, 0, 727, 728, 5, 3018, 0, 0, 728, 166, 1, 0, 0, 0, 729, 730, 5, 2994, 0, 0, 730, 168, 1, 0, 0, 0, 731, 732, 5, 2994, 0, 0, 732, 733, 5, 3007, 0, 0, 733, 170, 1, 0, 0, 0, 734, 735, 5, 2994, 0, 0, 735, 736, 5, 3009, 0, 0, 736, 172, 1, 0, 0, 0, 737, 738, 5, 2994, 0, 0, 738, 739, 5, 3014, 0, 0, 739, 174, 1, 0, 0, 0, 740, 741, 5, 2994, 0, 0, 741, 742, 5, 3018, 0, 0, 742, 176, 1, 0, 0, 0, 743, 744, 5, 2997, 0, 0, 744, 178, 1, 0, 0, 0, 745, 746, 5, 2997, 0, 0, 746, 747, 5, 3007, 0, 0, 747, 180, 1, 0, 0, 0, 748, 749, 5, 2997, 0, 0, 749, 750, 5, 3009, 0, 0, 750, 182, 1, 0, 0, 0, 751, 752, 5, 2997, 0, 0, 752, 753, 5, 3014, 0, 0, 753, 184, 1, 0, 0, 0, 754, 755, 5, 2997, 0, 0, 755, 756, 5, 3018, 0, 0, 756, 186, 1, 0, 0, 0, 757, 758, 5, 2996, 0, 0, 758, 188, 1, 0, 0, 0, 759, 760, 5, 2996, 0, 0, 760, 761, 5, 3007, 0, 0, 761, 190, 1, 0, 0, 0, 762, 763, 5, 2996, 0, 0, 763, 764, 5, 3009, 0, 0, 764, 192, 1, 0, 0, 0, 765, 766, 5, 2996, 0, 0, 766, 767, 5, 3014, 0, 0, 767, 194, 1, 0, 0, 0, 768, 769, 5, 2996, 0, 0, 769, 770, 5, 3018, 0, 0, 770, 196, 1, 0, 0, 0, 771, 772, 5, 2995, 0, 0, 772, 198, 1, 0, 0, 0, 773, 774, 5, 2995, 0, 0, 774, 775, 5, 3007, 0, 0, 775, 200, 1, 0, 0, 0, 776, 777, 5, 2995, 0, 0, 777, 778, 5, 3009, 0, 0, 778, 202, 1, 0, 0, 0, 779, 780, 5, 2995, 0, 0, 780, 781, 5, 3014, 0, 0, 781, 204, 1, 0, 0, 0, 782, 783, 5, 2995, 0, 0, 783, 784, 5, 3018, 0, 0, 784, 206, 1, 0, 0, 0, 785, 786, 5, 2993, 0, 0, 786, 208, 1, 0, 0, 0, 787, 788, 5, 2993, 0, 0, 788, 789, 5, 3007, 0, 0, 789, 210, 1, 0, 0, 0, 790, 791, 5, 2993, 0, 0, 791, 792, 5, 3009, 0, 0, 792, 212, 1, 0, 0, 0, 793, 794, 5, 2993, 0, 0, 794, 795, 5, 3014, 0, 0, 795, 214, 1, 0, 0, 0, 796, 797, 5, 2993, 0, 0, 797, 798, 5, 3018, 0, 0, 798, 216, 1, 0, 0, 0, 799, 800, 5, 2985, 0, 0, 800, 218, 1, 0, 0, 0, 801, 802, 5, 2985, 0, 0, 802, 803, 5, 3007, 0, 0, 803, 220, 1, 0, 0, 0, 804, 805, 5, 2985, 0, 0, 805, 806, 5, 3009, 0, 0, 806, 222, 1, 0, 0, 0, 807, 808, 5, 2985, 0, 0, 808, 809, 5, 3014, 0, 0, 809, 224, 1, 0, 0, 0, 810, 811, 5, 2985, 0, 0, 811, 812, 5, 3018, 0, 0, 812, 226, 1, 0, 0, 0, 813, 814, 5, 2950, 0, 0, 814, 228, 1, 0, 0, 0, 815, 816, 5, 2952, 0, 0, 816, 230, 1, 0, 0, 0, 817, 818, 5, 2954, 0, 0, 818, 232, 1, 0, 0, 0, 819, 820, 5, 2959, 0, 0, 820, 234, 1, 0, 0, 0, 821, 822, 5, 2960, 0, 0, 822, 236, 1, 0, 0, 0, 823, 824, 5, 2963, 0, 0, 824, 238, 1, 0, 0, 0, 825, 826, 5, 2962, 0, 0, 826, 827, 5, 2995, 0, 0, 827, 240, 1, 0, 0, 0, 828, 829, 5, 2965, 0, 0, 829, 830, 5, 3006, 0, 0, 830, 242, 1, 0, 0, 0, 831, 832, 5, 2965, 0, 0, 832, 833, 5, 3008, 0, 0, 833, 244, 1, 0, 0, 0, 834, 835, 5, 2965, 0, 0, 835, 836, 5, 3010, 0, 0, 836, 246, 1, 0, 0, 0, 837, 838, 5, 2965, 0, 0, 838, 839, 5, 3015, 0, 0, 839, 248, 1, 0, 0, 0, 840, 841, 5, 2965, 0, 0, 841, 842, 5, 3016, 0, 0, 842, 250, 1, 0, 0, 0, 843, 844, 5, 2965, 0, 0, 844, 845, 5, 3019, 0, 0, 845, 252, 1, 0, 0, 0, 846, 847, 5, 2965, 0, 0, 847, 848, 5, 3020, 0, 0, 848, 254, 1, 0, 0, 0, 849, 850, 5, 2969, 0, 0, 850, 851, 5, 3006, 0, 0, 851, 256, 1, 0, 0, 0, 852, 853, 5, 2969, 0, 0, 853, 854, 5, 3008, 0, 0, 854, 258, 1, 0, 0, 0, 855, 856, 5, 2969, 0, 0, 856, 857, 5, 3010, 0, 0, 857, 260, 1, 0, 0, 0, 858, 859, 5, 2969, 0, 0, 859, 860, 5, 3015, 0, 0, 860, 262, 1, 0, 0, 0, 861, 862, 5, 2969, 0, 0, 862, 863, 5, 3016, 0, 0, 863, 264, 1, 0, 0, 0, 864, 865, 5, 2969, 0, 0, 865, 866, 5, 3019, 0, 0, 866, 266, 1, 0, 0, 0, 867, 868, 5, 2969, 0, 0, 868, 869, 5, 3020, 0, 0, 869, 268, 1, 0, 0, 0, 870, 871, 5, 2970, 0, 0, 871, 872, 5, 3006, 0, 0, 872, 270, 1, 0, 0, 0, 873, 874, 5, 2970, 0, 0, 874, 875, 5, 3008, 0, 0, 875, 272, 1, 0, 0, 0, 876, 877, 5, 2970, 0, 0, 877, 878, 5, 3010, 0, 0, 878, 274, 1, 0, 0, 0, 879, 880, 5, 2970, 0, 0, 880, 881, 5, 3015, 0, 0, 881, 276, 1, 0, 0, 0, 882, 883, 5, 2970, 0, 0, 883, 884, 5, 3016, 0, 0, 884, 278, 1, 0, 0, 0, 885, 886, 5, 2970, 0, 0, 886, 887, 5, 3019, 0, 0, 887, 280, 1, 0, 0, 0, 888, 889, 5, 2970, 0, 0, 889, 890, 5, 3020, 0, 0, 890, 282, 1, 0, 0, 0, 891, 892, 5, 2974, 0, 0, 892, 893, 5, 3006, 0, 0, 893, 284, 1, 0, 0, 0, 894, 895, 5, 2974, 0, 0, 895, 896, 5, 3008, 0, 0, 896, 286, 1, 0, 0, 0, 897, 898, 5, 2974, 0, 0, 898, 899, 5, 3010, 0, 0, 899, 288, 1, 0, 0, 0, 900, 901, 5, 2974, 0, 0, 901, 902, 5, 3015, 0, 0, 902, 290, 1, 0, 0, 0, 903, 904, 5, 2974, 0, 0, 904, 905, 5, 3016, 0, 0, 905, 292, 1, 0, 0, 0, 906, 907, 5, 2974, 0, 0, 907, 908, 5, 3019, 0, 0, 908, 294, 1, 0, 0, 0, 909, 910, 5, 2974, 0, 0, 910, 911, 5, 3020, 0, 0, 911, 296, 1, 0, 0, 0, 912, 913, 5, 2975, 0, 0, 913, 914, 5, 3006, 0, 0, 914, 298, 1, 0, 0, 0, 915, 916, 5, 2975, 0, 0, 916, 917, 5, 3008, 0, 0, 917, 300, 1, 0, 0, 0, 918, 919, 5, 2975, 0, 0, 919, 920, 5, 3010, 0, 0, 920, 302, 1, 0, 0, 0, 921, 922, 5, 2975, 0, 0, 922, 923, 5, 3015, 0, 0, 923, 304, 1, 0, 0, 0, 924, 925, 5, 2975, 0, 0, 925, 926, 5, 3016, 0, 0, 926, 306, 1, 0, 0, 0, 927, 928, 5, 2975, 0, 0, 928, 929, 5, 3019, 0, 0, 929, 308, 1, 0, 0, 0, 930, 931, 5, 2975, 0, 0, 931, 932, 5, 3020, 0, 0, 932, 310, 1, 0, 0, 0, 933, 934, 5, 2979, 0, 0, 934, 935, 5, 3006, 0, 0, 935, 312, 1, 0, 0, 0, 936, 937, 5, 2979, 0, 0, 937, 938, 5, 3008, 0, 0, 938, 314, 1, 0, 0, 0, 939, 940, 5, 2979, 0, 0, 940, 941, 5, 3010, 0, 0, 941, 316, 1, 0, 0, 0, 942, 943, 5, 2979, 0, 0, 943, 944, 5, 3015, 0, 0, 944, 318, 1, 0, 0, 0, 945, 946, 5, 2979, 0, 0, 946, 947, 5, 3016, 0, 0, 947, 320, 1, 0, 0, 0, 948, 949, 5, 2979, 0, 0, 949, 950, 5, 3019, 0, 0, 950, 322, 1, 0, 0, 0, 951, 952, 5, 2979, 0, 0, 952, 953, 5, 3020, 0, 0, 953, 324, 1, 0, 0, 0, 954, 955, 5, 2980, 0, 0, 955, 956, 5, 3006, 0, 0, 956, 326, 1, 0, 0, 0, 957, 958, 5, 2980, 0, 0, 958, 959, 5, 3008, 0, 0, 959, 328, 1, 0, 0, 0, 960, 961, 5, 2980, 0, 0, 961, 962, 5, 3010, 0, 0, 962, 330, 1, 0, 0, 0, 963, 964, 5, 2980, 0, 0, 964, 965, 5, 3015, 0, 0, 965, 332, 1, 0, 0, 0, 966, 967, 5, 2980, 0, 0, 967, 968, 5, 3016, 0, 0, 968, 334, 1, 0, 0, 0, 969, 970, 5, 2980, 0, 0, 970, 971, 5, 3019, 0, 0, 971, 336, 1, 0, 0, 0, 972, 973, 5, 2980, 0, 0, 973, 974, 5, 3020, 0, 0, 974, 338, 1, 0, 0, 0, 975, 976, 5, 2984, 0, 0, 976, 977, 5, 3006, 0, 0, 977, 340, 1, 0, 0, 0, 978, 979, 5, 2984, 0, 0, 979, 980, 5, 3008, 0, 0, 980, 342, 1, 0, 0, 0, 981, 982, 5, 2984, 0, 0, 982, 983, 5, 3010, 0, 0, 983, 344, 1, 0, 0, 0, 984, 985, 5, 2984, 0, 0, 985, 986, 5, 3015, 0, 0, 986, 346, 1, 0, 0, 0, 987, 988, 5, 2984, 0, 0, 988, 989, 5, 3016, 0, 0, 989, 348, 1, 0, 0, 0, 990, 991, 5, 2984, 0, 0, 991, 992, 5, 3019, 0, 0, 992, 350, 1, 0, 0, 0, 993, 994, 5, 2984, 0, 0, 994, 995, 5, 3020, 0, 0, 995, 352, 1, 0, 0, 0, 996, 997, 5, 2986, 0, 0, 997, 998, 5, 3006, 0, 0, 998, 354, 1, 0, 0, 0, 999, 1000, 5, 2986, 0, 0, 1000, 1001, 5, 3008, 0, 0, 1001, 356, 1, 0, 0, 0, 1002, 1003, 5, 2986, 0, 0, 1003, 1004, 5, 3010, 0, 0, 1004, 358, 1, 0, 0, 0, 1005, 1006, 5, 2986, 0, 0, 1006, 1007, 5, 3015, 0, 0, 1007, 360, 1, 0, 0, 0, 1008, 1009, 5, 2986, 0, 0, 1009, 1010, 5, 3016, 0, 0, 1010, 362, 1, 0, 0, 0, 1011, 1012, 5, 2986, 0, 0, 1012, 1013, 5, 3019, 0, 0, 1013, 364, 1, 0, 0, 0, 1014, 1015, 5, 2986, 0, 0, 1015, 1016, 5, 3020, 0, 0, 1016, 366, 1, 0, 0, 0, 1017, 1018, 5, 2990, 0, 0, 1018, 1019, 5, 3006, 0, 0, 1019, 368, 1, 0, 0, 0, 1020, 1021, 5, 2990, 0, 0, 1021, 1022, 5, 3008, 0, 0, 1022, 370, 1, 0, 0, 0, 1023, 1024, 5, 2990, 0, 0, 1024, 1025, 5, 3010, 0, 0, 1025, 372, 1, 0, 0, 0, 1026, 1027, 5, 2990, 0, 0, 1027, 1028, 5, 3015, 0, 0, 1028, 374, 1, 0, 0, 0, 1029, 1030, 5, 2990, 0, 0, 1030, 1031, 5, 3016, 0, 0, 1031, 376, 1, 0, 0, 0, 1032, 1033, 5, 2990, 0, 0, 1033, 1034, 5, 3019, 0, 0, 1034, 378, 1, 0, 0, 0, 1035, 1036, 5, 2990, 0, 0, 1036, 1037, 5, 3020, 0, 0, 1037, 380, 1, 0, 0, 0, 1038, 1039, 5, 2991, 0, 0, 1039, 1040, 5, 3006, 0, 0, 1040, 382, 1, 0, 0, 0, 1041, 1042, 5, 2991, 0, 0, 1042, 1043, 5, 3008, 0, 0, 1043, 384, 1, 0, 0, 0, 1044, 1045, 5, 2991, 0, 0, 1045, 1046, 5, 3010, 0, 0, 1046, 386, 1, 0, 0, 0, 1047, 1048, 5, 2991, 0, 0, 1048, 1049, 5, 3015, 0, 0, 1049, 388, 1, 0, 0, 0, 1050, 1051, 5, 2991, 0, 0, 1051, 1052, 5, 3016, 0, 0, 1052, 390, 1, 0, 0, 0, 1053, 1054, 5, 2991, 0, 0, 1054, 1055, 5, 3019, 0, 0, 1055, 392, 1, 0, 0, 0, 1056, 1057, 5, 2991, 0, 0, 1057, 1058, 5, 3020, 0, 0, 1058, 394, 1, 0, 0, 0, 1059, 1060, 5, 2992, 0, 0, 1060, 1061, 5, 3006, 0, 0, 1061, 396, 1, 0, 0, 0, 1062, 1063, 5, 2992, 0, 0, 1063, 1064, 5, 3008, 0, 0, 1064, 398, 1, 0, 0, 0, 1065, 1066, 5, 2992, 0, 0, 1066, 1067, 5, 3010, 0, 0, 1067, 400, 1, 0, 0, 0, 1068, 1069, 5, 2992, 0, 0, 1069, 1070, 5, 3015, 0, 0, 1070, 402, 1, 0, 0, 0, 1071, 1072, 5, 2992, 0, 0, 1072, 1073, 5, 3016, 0, 0, 1073, 404, 1, 0, 0, 0, 1074, 1075, 5, 2992, 0, 0, 1075, 1076, 5, 3019, 0, 0, 1076, 406, 1, 0, 0, 0, 1077, 1078, 5, 2992, 0, 0, 1078, 1079, 5, 3020, 0, 0, 1079, 408, 1, 0, 0, 0, 1080, 1081, 5, 2994, 0, 0, 1081, 1082, 5, 3006, 0, 0, 1082, 410, 1, 0, 0, 0, 1083, 1084, 5, 2994, 0, 0, 1084, 1085, 5, 3008, 0, 0, 1085, 412, 1, 0, 0, 0, 1086, 1087, 5, 2994, 0, 0, 1087, 1088, 5, 3010, 0, 0, 1088, 414, 1, 0, 0, 0, 1089, 1090, 5, 2994, 0, 0, 1090, 1091, 5, 3015, 0, 0, 1091, 416, 1, 0, 0, 0, 1092, 1093, 5, 2994, 0, 0, 1093, 1094, 5, 3016, 0, 0, 1094, 418, 1, 0, 0, 0, 1095, 1096, 5, 2994, 0, 0, 1096, 1097, 5, 3019, 0, 0, 1097, 420, 1, 0, 0, 0, 1098, 1099, 5, 2994, 0, 0, 1099, 1100, 5, 3020, 0, 0, 1100, 422, 1, 0, 0, 0, 1101, 1102, 5, 2997, 0, 0, 1102, 1103, 5, 3006, 0, 0, 1103, 424, 1, 0, 0, 0, 1104, 1105, 5, 2997, 0, 0, 1105, 1106, 5, 3008, 0, 0, 1106, 426, 1, 0, 0, 0, 1107, 1108, 5, 2997, 0, 0, 1108, 1109, 5, 3010, 0, 0, 1109, 428, 1, 0, 0, 0, 1110, 1111, 5, 2997, 0, 0, 1111, 1112, 5, 3015, 0, 0, 1112, 430, 1, 0, 0, 0, 1113, 1114, 5, 2997, 0, 0, 1114, 1115, 5, 3016, 0, 0, 1115, 432, 1, 0, 0, 0, 1116, 1117, 5, 2997, 0, 0, 1117, 1118, 5, 3019, 0, 0, 1118, 434, 1, 0, 0, 0, 1119, 1120, 5, 2997, 0, 0, 1120, 1121, 5, 3020, 0, 0, 1121, 436, 1, 0, 0, 0, 1122, 1123, 5, 2996, 0, 0, 1123, 1124, 5, 3006, 0, 0, 1124, 438, 1, 0, 0, 0, 1125, 1126, 5, 2996, 0, 0, 1126, 1127, 5, 3008, 0, 0, 1127, 440, 1, 0, 0, 0, 1128, 1129, 5, 2996, 0, 0, 1129, 1130, 5, 3010, 0, 0, 1130, 442, 1, 0, 0, 0, 1131, 1132, 5, 2996, 0, 0, 1132, 1133, 5, 3015, 0, 0, 1133, 444, 1, 0, 0, 0, 1134, 1135, 5, 2996, 0, 0, 1135, 1136, 5, 3016, 0, 0, 1136, 446, 1, 0, 0, 0, 1137, 1138, 5, 2996, 0, 0, 1138, 1139, 5, 3019, 0, 0, 1139, 448, 1, 0, 0, 0, 1140, 1141, 5, 2996, 0, 0, 1141, 1142, 5, 3020, 0, 0, 1142, 450, 1, 0, 0, 0, 1143, 1144, 5, 2995, 0, 0, 1144, 1145, 5, 3006, 0, 0, 1145, 452, 1, 0, 0, 0, 1146, 1147, 5, 2995, 0, 0, 1147, 1148, 5, 3008, 0, 0, 1148, 454, 1, 0, 0, 0, 1149, 1150, 5, 2995, 0, 0, 1150, 1151, 5, 3010, 0, 0, 1151, 456, 1, 0, 0, 0, 1152, 1153, 5, 2995, 0, 0, 1153, 1154, 5, 3015, 0, 0, 1154, 458, 1, 0, 0, 0, 1155, 1156, 5, 2995, 0, 0, 1156, 1157, 5, 3016, 0, 0, 1157, 460, 1, 0, 0, 0, 1158, 1159, 5, 2995, 0, 0, 1159, 1160, 5, 3019, 0, 0, 1160, 462, 1, 0, 0, 0, 1161, 1162, 5, 2995, 0, 0, 1162, 1163, 5, 3020, 0, 0, 1163, 464, 1, 0, 0, 0, 1164, 1165, 5, 2993, 0, 0, 1165, 1166, 5, 3006, 0, 0, 1166, 466, 1, 0, 0, 0, 1167, 1168, 5, 2993, 0, 0, 1168, 1169, 5, 3008, 0, 0, 1169, 468, 1, 0, 0, 0, 1170, 1171, 5, 2993, 0, 0, 1171, 1172, 5, 3010, 0, 0, 1172, 470, 1, 0, 0, 0, 1173, 1174, 5, 2993, 0, 0, 1174, 1175, 5, 3015, 0, 0, 1175, 472, 1, 0, 0, 0, 1176, 1177, 5, 2993, 0, 0, 1177, 1178, 5, 3016, 0, 0, 1178, 474, 1, 0, 0, 0, 1179, 1180, 5, 2993, 0, 0, 1180, 1181, 5, 3019, 0, 0, 1181, 476, 1, 0, 0, 0, 1182, 1183, 5, 2993, 0, 0, 1183, 1184, 5, 3020, 0, 0, 1184, 478, 1, 0, 0, 0, 1185, 1186, 5, 2985, 0, 0, 1186, 1187, 5, 3006, 0, 0, 1187, 480, 1, 0, 0, 0, 1188, 1189, 5, 2985, 0, 0, 1189, 1190, 5, 3008, 0, 0, 1190, 482, 1, 0, 0, 0, 1191, 1192, 5, 2985, 0, 0, 1192, 1193, 5, 3010, 0, 0, 1193, 484, 1, 0, 0, 0, 1194, 1195, 5, 2985, 0, 0, 1195, 1196, 5, 3015, 0, 0, 1196, 486, 1, 0, 0, 0, 1197, 1198, 5, 2985, 0, 0, 1198, 1199, 5, 3016, 0, 0, 1199, 488, 1, 0, 0, 0, 1200, 1201, 5, 2985, 0, 0, 1201, 1202, 5, 3019, 0, 0, 1202, 490, 1, 0, 0, 0, 1203, 1204, 5, 2985, 0, 0, 1204, 1205, 5, 3020, 0, 0, 1205, 492, 1, 0, 0, 0, 1206, 1207, 5, 2947, 0, 0, 1207, 494, 1, 0, 0, 0, 1208, 1209, 5, 32, 0, 0, 1209, 496, 1, 0, 0, 0, 1, 0, 0] \ No newline at end of file +[4, 0, 249, 1219, 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, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 247, 4, 247, 1211, 8, 247, 11, 247, 12, 247, 1212, 1, 248, 3, 248, 1216, 8, 248, 1, 248, 1, 248, 0, 0, 249, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 1, 0, 1, 2, 0, 9, 9, 32, 32, 1220, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 1, 499, 1, 0, 0, 0, 3, 502, 1, 0, 0, 0, 5, 505, 1, 0, 0, 0, 7, 508, 1, 0, 0, 0, 9, 511, 1, 0, 0, 0, 11, 514, 1, 0, 0, 0, 13, 517, 1, 0, 0, 0, 15, 520, 1, 0, 0, 0, 17, 523, 1, 0, 0, 0, 19, 526, 1, 0, 0, 0, 21, 529, 1, 0, 0, 0, 23, 532, 1, 0, 0, 0, 25, 535, 1, 0, 0, 0, 27, 538, 1, 0, 0, 0, 29, 541, 1, 0, 0, 0, 31, 544, 1, 0, 0, 0, 33, 547, 1, 0, 0, 0, 35, 550, 1, 0, 0, 0, 37, 553, 1, 0, 0, 0, 39, 555, 1, 0, 0, 0, 41, 558, 1, 0, 0, 0, 43, 561, 1, 0, 0, 0, 45, 564, 1, 0, 0, 0, 47, 567, 1, 0, 0, 0, 49, 570, 1, 0, 0, 0, 51, 573, 1, 0, 0, 0, 53, 576, 1, 0, 0, 0, 55, 579, 1, 0, 0, 0, 57, 582, 1, 0, 0, 0, 59, 585, 1, 0, 0, 0, 61, 588, 1, 0, 0, 0, 63, 591, 1, 0, 0, 0, 65, 594, 1, 0, 0, 0, 67, 597, 1, 0, 0, 0, 69, 600, 1, 0, 0, 0, 71, 603, 1, 0, 0, 0, 73, 606, 1, 0, 0, 0, 75, 609, 1, 0, 0, 0, 77, 611, 1, 0, 0, 0, 79, 613, 1, 0, 0, 0, 81, 615, 1, 0, 0, 0, 83, 617, 1, 0, 0, 0, 85, 619, 1, 0, 0, 0, 87, 621, 1, 0, 0, 0, 89, 624, 1, 0, 0, 0, 91, 627, 1, 0, 0, 0, 93, 630, 1, 0, 0, 0, 95, 633, 1, 0, 0, 0, 97, 635, 1, 0, 0, 0, 99, 638, 1, 0, 0, 0, 101, 641, 1, 0, 0, 0, 103, 644, 1, 0, 0, 0, 105, 647, 1, 0, 0, 0, 107, 649, 1, 0, 0, 0, 109, 652, 1, 0, 0, 0, 111, 655, 1, 0, 0, 0, 113, 658, 1, 0, 0, 0, 115, 661, 1, 0, 0, 0, 117, 663, 1, 0, 0, 0, 119, 666, 1, 0, 0, 0, 121, 669, 1, 0, 0, 0, 123, 672, 1, 0, 0, 0, 125, 675, 1, 0, 0, 0, 127, 677, 1, 0, 0, 0, 129, 680, 1, 0, 0, 0, 131, 683, 1, 0, 0, 0, 133, 686, 1, 0, 0, 0, 135, 689, 1, 0, 0, 0, 137, 691, 1, 0, 0, 0, 139, 694, 1, 0, 0, 0, 141, 697, 1, 0, 0, 0, 143, 700, 1, 0, 0, 0, 145, 703, 1, 0, 0, 0, 147, 705, 1, 0, 0, 0, 149, 708, 1, 0, 0, 0, 151, 711, 1, 0, 0, 0, 153, 714, 1, 0, 0, 0, 155, 717, 1, 0, 0, 0, 157, 719, 1, 0, 0, 0, 159, 722, 1, 0, 0, 0, 161, 725, 1, 0, 0, 0, 163, 728, 1, 0, 0, 0, 165, 731, 1, 0, 0, 0, 167, 733, 1, 0, 0, 0, 169, 736, 1, 0, 0, 0, 171, 739, 1, 0, 0, 0, 173, 742, 1, 0, 0, 0, 175, 745, 1, 0, 0, 0, 177, 747, 1, 0, 0, 0, 179, 750, 1, 0, 0, 0, 181, 753, 1, 0, 0, 0, 183, 756, 1, 0, 0, 0, 185, 759, 1, 0, 0, 0, 187, 761, 1, 0, 0, 0, 189, 764, 1, 0, 0, 0, 191, 767, 1, 0, 0, 0, 193, 770, 1, 0, 0, 0, 195, 773, 1, 0, 0, 0, 197, 775, 1, 0, 0, 0, 199, 778, 1, 0, 0, 0, 201, 781, 1, 0, 0, 0, 203, 784, 1, 0, 0, 0, 205, 787, 1, 0, 0, 0, 207, 789, 1, 0, 0, 0, 209, 792, 1, 0, 0, 0, 211, 795, 1, 0, 0, 0, 213, 798, 1, 0, 0, 0, 215, 801, 1, 0, 0, 0, 217, 803, 1, 0, 0, 0, 219, 806, 1, 0, 0, 0, 221, 809, 1, 0, 0, 0, 223, 812, 1, 0, 0, 0, 225, 815, 1, 0, 0, 0, 227, 817, 1, 0, 0, 0, 229, 820, 1, 0, 0, 0, 231, 823, 1, 0, 0, 0, 233, 826, 1, 0, 0, 0, 235, 829, 1, 0, 0, 0, 237, 831, 1, 0, 0, 0, 239, 834, 1, 0, 0, 0, 241, 837, 1, 0, 0, 0, 243, 840, 1, 0, 0, 0, 245, 843, 1, 0, 0, 0, 247, 845, 1, 0, 0, 0, 249, 848, 1, 0, 0, 0, 251, 851, 1, 0, 0, 0, 253, 854, 1, 0, 0, 0, 255, 857, 1, 0, 0, 0, 257, 859, 1, 0, 0, 0, 259, 862, 1, 0, 0, 0, 261, 865, 1, 0, 0, 0, 263, 868, 1, 0, 0, 0, 265, 871, 1, 0, 0, 0, 267, 873, 1, 0, 0, 0, 269, 875, 1, 0, 0, 0, 271, 877, 1, 0, 0, 0, 273, 879, 1, 0, 0, 0, 275, 881, 1, 0, 0, 0, 277, 883, 1, 0, 0, 0, 279, 885, 1, 0, 0, 0, 281, 888, 1, 0, 0, 0, 283, 891, 1, 0, 0, 0, 285, 894, 1, 0, 0, 0, 287, 897, 1, 0, 0, 0, 289, 900, 1, 0, 0, 0, 291, 903, 1, 0, 0, 0, 293, 906, 1, 0, 0, 0, 295, 909, 1, 0, 0, 0, 297, 912, 1, 0, 0, 0, 299, 915, 1, 0, 0, 0, 301, 918, 1, 0, 0, 0, 303, 921, 1, 0, 0, 0, 305, 924, 1, 0, 0, 0, 307, 927, 1, 0, 0, 0, 309, 930, 1, 0, 0, 0, 311, 933, 1, 0, 0, 0, 313, 936, 1, 0, 0, 0, 315, 939, 1, 0, 0, 0, 317, 942, 1, 0, 0, 0, 319, 945, 1, 0, 0, 0, 321, 948, 1, 0, 0, 0, 323, 951, 1, 0, 0, 0, 325, 954, 1, 0, 0, 0, 327, 957, 1, 0, 0, 0, 329, 960, 1, 0, 0, 0, 331, 963, 1, 0, 0, 0, 333, 966, 1, 0, 0, 0, 335, 969, 1, 0, 0, 0, 337, 972, 1, 0, 0, 0, 339, 975, 1, 0, 0, 0, 341, 978, 1, 0, 0, 0, 343, 981, 1, 0, 0, 0, 345, 984, 1, 0, 0, 0, 347, 987, 1, 0, 0, 0, 349, 990, 1, 0, 0, 0, 351, 993, 1, 0, 0, 0, 353, 996, 1, 0, 0, 0, 355, 999, 1, 0, 0, 0, 357, 1002, 1, 0, 0, 0, 359, 1005, 1, 0, 0, 0, 361, 1008, 1, 0, 0, 0, 363, 1011, 1, 0, 0, 0, 365, 1014, 1, 0, 0, 0, 367, 1017, 1, 0, 0, 0, 369, 1020, 1, 0, 0, 0, 371, 1023, 1, 0, 0, 0, 373, 1026, 1, 0, 0, 0, 375, 1029, 1, 0, 0, 0, 377, 1032, 1, 0, 0, 0, 379, 1035, 1, 0, 0, 0, 381, 1038, 1, 0, 0, 0, 383, 1041, 1, 0, 0, 0, 385, 1044, 1, 0, 0, 0, 387, 1047, 1, 0, 0, 0, 389, 1050, 1, 0, 0, 0, 391, 1053, 1, 0, 0, 0, 393, 1056, 1, 0, 0, 0, 395, 1059, 1, 0, 0, 0, 397, 1062, 1, 0, 0, 0, 399, 1065, 1, 0, 0, 0, 401, 1068, 1, 0, 0, 0, 403, 1071, 1, 0, 0, 0, 405, 1074, 1, 0, 0, 0, 407, 1077, 1, 0, 0, 0, 409, 1080, 1, 0, 0, 0, 411, 1083, 1, 0, 0, 0, 413, 1086, 1, 0, 0, 0, 415, 1089, 1, 0, 0, 0, 417, 1092, 1, 0, 0, 0, 419, 1095, 1, 0, 0, 0, 421, 1098, 1, 0, 0, 0, 423, 1101, 1, 0, 0, 0, 425, 1104, 1, 0, 0, 0, 427, 1107, 1, 0, 0, 0, 429, 1110, 1, 0, 0, 0, 431, 1113, 1, 0, 0, 0, 433, 1116, 1, 0, 0, 0, 435, 1119, 1, 0, 0, 0, 437, 1122, 1, 0, 0, 0, 439, 1125, 1, 0, 0, 0, 441, 1128, 1, 0, 0, 0, 443, 1131, 1, 0, 0, 0, 445, 1134, 1, 0, 0, 0, 447, 1137, 1, 0, 0, 0, 449, 1140, 1, 0, 0, 0, 451, 1143, 1, 0, 0, 0, 453, 1146, 1, 0, 0, 0, 455, 1149, 1, 0, 0, 0, 457, 1152, 1, 0, 0, 0, 459, 1155, 1, 0, 0, 0, 461, 1158, 1, 0, 0, 0, 463, 1161, 1, 0, 0, 0, 465, 1164, 1, 0, 0, 0, 467, 1167, 1, 0, 0, 0, 469, 1170, 1, 0, 0, 0, 471, 1173, 1, 0, 0, 0, 473, 1176, 1, 0, 0, 0, 475, 1179, 1, 0, 0, 0, 477, 1182, 1, 0, 0, 0, 479, 1185, 1, 0, 0, 0, 481, 1188, 1, 0, 0, 0, 483, 1191, 1, 0, 0, 0, 485, 1194, 1, 0, 0, 0, 487, 1197, 1, 0, 0, 0, 489, 1200, 1, 0, 0, 0, 491, 1203, 1, 0, 0, 0, 493, 1206, 1, 0, 0, 0, 495, 1210, 1, 0, 0, 0, 497, 1215, 1, 0, 0, 0, 499, 500, 5, 2965, 0, 0, 500, 501, 5, 3021, 0, 0, 501, 2, 1, 0, 0, 0, 502, 503, 5, 2970, 0, 0, 503, 504, 5, 3021, 0, 0, 504, 4, 1, 0, 0, 0, 505, 506, 5, 2975, 0, 0, 506, 507, 5, 3021, 0, 0, 507, 6, 1, 0, 0, 0, 508, 509, 5, 2980, 0, 0, 509, 510, 5, 3021, 0, 0, 510, 8, 1, 0, 0, 0, 511, 512, 5, 2986, 0, 0, 512, 513, 5, 3021, 0, 0, 513, 10, 1, 0, 0, 0, 514, 515, 5, 2993, 0, 0, 515, 516, 5, 3021, 0, 0, 516, 12, 1, 0, 0, 0, 517, 518, 5, 2974, 0, 0, 518, 519, 5, 3021, 0, 0, 519, 14, 1, 0, 0, 0, 520, 521, 5, 2969, 0, 0, 521, 522, 5, 3021, 0, 0, 522, 16, 1, 0, 0, 0, 523, 524, 5, 2979, 0, 0, 524, 525, 5, 3021, 0, 0, 525, 18, 1, 0, 0, 0, 526, 527, 5, 2984, 0, 0, 527, 528, 5, 3021, 0, 0, 528, 20, 1, 0, 0, 0, 529, 530, 5, 2990, 0, 0, 530, 531, 5, 3021, 0, 0, 531, 22, 1, 0, 0, 0, 532, 533, 5, 2985, 0, 0, 533, 534, 5, 3021, 0, 0, 534, 24, 1, 0, 0, 0, 535, 536, 5, 2991, 0, 0, 536, 537, 5, 3021, 0, 0, 537, 26, 1, 0, 0, 0, 538, 539, 5, 2992, 0, 0, 539, 540, 5, 3021, 0, 0, 540, 28, 1, 0, 0, 0, 541, 542, 5, 2994, 0, 0, 542, 543, 5, 3021, 0, 0, 543, 30, 1, 0, 0, 0, 544, 545, 5, 2997, 0, 0, 545, 546, 5, 3021, 0, 0, 546, 32, 1, 0, 0, 0, 547, 548, 5, 2996, 0, 0, 548, 549, 5, 3021, 0, 0, 549, 34, 1, 0, 0, 0, 550, 551, 5, 2995, 0, 0, 551, 552, 5, 3021, 0, 0, 552, 36, 1, 0, 0, 0, 553, 554, 5, 2947, 0, 0, 554, 38, 1, 0, 0, 0, 555, 556, 5, 2965, 0, 0, 556, 557, 5, 3016, 0, 0, 557, 40, 1, 0, 0, 0, 558, 559, 5, 2969, 0, 0, 559, 560, 5, 3016, 0, 0, 560, 42, 1, 0, 0, 0, 561, 562, 5, 2970, 0, 0, 562, 563, 5, 3016, 0, 0, 563, 44, 1, 0, 0, 0, 564, 565, 5, 2974, 0, 0, 565, 566, 5, 3016, 0, 0, 566, 46, 1, 0, 0, 0, 567, 568, 5, 2975, 0, 0, 568, 569, 5, 3016, 0, 0, 569, 48, 1, 0, 0, 0, 570, 571, 5, 2979, 0, 0, 571, 572, 5, 3016, 0, 0, 572, 50, 1, 0, 0, 0, 573, 574, 5, 2980, 0, 0, 574, 575, 5, 3016, 0, 0, 575, 52, 1, 0, 0, 0, 576, 577, 5, 2984, 0, 0, 577, 578, 5, 3016, 0, 0, 578, 54, 1, 0, 0, 0, 579, 580, 5, 2986, 0, 0, 580, 581, 5, 3016, 0, 0, 581, 56, 1, 0, 0, 0, 582, 583, 5, 2990, 0, 0, 583, 584, 5, 3016, 0, 0, 584, 58, 1, 0, 0, 0, 585, 586, 5, 2991, 0, 0, 586, 587, 5, 3016, 0, 0, 587, 60, 1, 0, 0, 0, 588, 589, 5, 2992, 0, 0, 589, 590, 5, 3016, 0, 0, 590, 62, 1, 0, 0, 0, 591, 592, 5, 2994, 0, 0, 592, 593, 5, 3016, 0, 0, 593, 64, 1, 0, 0, 0, 594, 595, 5, 2997, 0, 0, 595, 596, 5, 3016, 0, 0, 596, 66, 1, 0, 0, 0, 597, 598, 5, 2996, 0, 0, 598, 599, 5, 3016, 0, 0, 599, 68, 1, 0, 0, 0, 600, 601, 5, 2995, 0, 0, 601, 602, 5, 3016, 0, 0, 602, 70, 1, 0, 0, 0, 603, 604, 5, 2993, 0, 0, 604, 605, 5, 3016, 0, 0, 605, 72, 1, 0, 0, 0, 606, 607, 5, 2985, 0, 0, 607, 608, 5, 3016, 0, 0, 608, 74, 1, 0, 0, 0, 609, 610, 5, 2949, 0, 0, 610, 76, 1, 0, 0, 0, 611, 612, 5, 2951, 0, 0, 612, 78, 1, 0, 0, 0, 613, 614, 5, 2953, 0, 0, 614, 80, 1, 0, 0, 0, 615, 616, 5, 2958, 0, 0, 616, 82, 1, 0, 0, 0, 617, 618, 5, 2962, 0, 0, 618, 84, 1, 0, 0, 0, 619, 620, 5, 2965, 0, 0, 620, 86, 1, 0, 0, 0, 621, 622, 5, 2965, 0, 0, 622, 623, 5, 3007, 0, 0, 623, 88, 1, 0, 0, 0, 624, 625, 5, 2965, 0, 0, 625, 626, 5, 3009, 0, 0, 626, 90, 1, 0, 0, 0, 627, 628, 5, 2965, 0, 0, 628, 629, 5, 3014, 0, 0, 629, 92, 1, 0, 0, 0, 630, 631, 5, 2965, 0, 0, 631, 632, 5, 3018, 0, 0, 632, 94, 1, 0, 0, 0, 633, 634, 5, 2969, 0, 0, 634, 96, 1, 0, 0, 0, 635, 636, 5, 2969, 0, 0, 636, 637, 5, 3007, 0, 0, 637, 98, 1, 0, 0, 0, 638, 639, 5, 2969, 0, 0, 639, 640, 5, 3009, 0, 0, 640, 100, 1, 0, 0, 0, 641, 642, 5, 2969, 0, 0, 642, 643, 5, 3014, 0, 0, 643, 102, 1, 0, 0, 0, 644, 645, 5, 2969, 0, 0, 645, 646, 5, 3018, 0, 0, 646, 104, 1, 0, 0, 0, 647, 648, 5, 2970, 0, 0, 648, 106, 1, 0, 0, 0, 649, 650, 5, 2970, 0, 0, 650, 651, 5, 3007, 0, 0, 651, 108, 1, 0, 0, 0, 652, 653, 5, 2970, 0, 0, 653, 654, 5, 3009, 0, 0, 654, 110, 1, 0, 0, 0, 655, 656, 5, 2970, 0, 0, 656, 657, 5, 3014, 0, 0, 657, 112, 1, 0, 0, 0, 658, 659, 5, 2970, 0, 0, 659, 660, 5, 3018, 0, 0, 660, 114, 1, 0, 0, 0, 661, 662, 5, 2974, 0, 0, 662, 116, 1, 0, 0, 0, 663, 664, 5, 2974, 0, 0, 664, 665, 5, 3007, 0, 0, 665, 118, 1, 0, 0, 0, 666, 667, 5, 2974, 0, 0, 667, 668, 5, 3009, 0, 0, 668, 120, 1, 0, 0, 0, 669, 670, 5, 2974, 0, 0, 670, 671, 5, 3014, 0, 0, 671, 122, 1, 0, 0, 0, 672, 673, 5, 2974, 0, 0, 673, 674, 5, 3018, 0, 0, 674, 124, 1, 0, 0, 0, 675, 676, 5, 2975, 0, 0, 676, 126, 1, 0, 0, 0, 677, 678, 5, 2975, 0, 0, 678, 679, 5, 3007, 0, 0, 679, 128, 1, 0, 0, 0, 680, 681, 5, 2975, 0, 0, 681, 682, 5, 3009, 0, 0, 682, 130, 1, 0, 0, 0, 683, 684, 5, 2975, 0, 0, 684, 685, 5, 3014, 0, 0, 685, 132, 1, 0, 0, 0, 686, 687, 5, 2975, 0, 0, 687, 688, 5, 3018, 0, 0, 688, 134, 1, 0, 0, 0, 689, 690, 5, 2979, 0, 0, 690, 136, 1, 0, 0, 0, 691, 692, 5, 2979, 0, 0, 692, 693, 5, 3007, 0, 0, 693, 138, 1, 0, 0, 0, 694, 695, 5, 2979, 0, 0, 695, 696, 5, 3009, 0, 0, 696, 140, 1, 0, 0, 0, 697, 698, 5, 2979, 0, 0, 698, 699, 5, 3014, 0, 0, 699, 142, 1, 0, 0, 0, 700, 701, 5, 2979, 0, 0, 701, 702, 5, 3018, 0, 0, 702, 144, 1, 0, 0, 0, 703, 704, 5, 2980, 0, 0, 704, 146, 1, 0, 0, 0, 705, 706, 5, 2980, 0, 0, 706, 707, 5, 3007, 0, 0, 707, 148, 1, 0, 0, 0, 708, 709, 5, 2980, 0, 0, 709, 710, 5, 3009, 0, 0, 710, 150, 1, 0, 0, 0, 711, 712, 5, 2980, 0, 0, 712, 713, 5, 3014, 0, 0, 713, 152, 1, 0, 0, 0, 714, 715, 5, 2980, 0, 0, 715, 716, 5, 3018, 0, 0, 716, 154, 1, 0, 0, 0, 717, 718, 5, 2984, 0, 0, 718, 156, 1, 0, 0, 0, 719, 720, 5, 2984, 0, 0, 720, 721, 5, 3007, 0, 0, 721, 158, 1, 0, 0, 0, 722, 723, 5, 2984, 0, 0, 723, 724, 5, 3009, 0, 0, 724, 160, 1, 0, 0, 0, 725, 726, 5, 2984, 0, 0, 726, 727, 5, 3014, 0, 0, 727, 162, 1, 0, 0, 0, 728, 729, 5, 2984, 0, 0, 729, 730, 5, 3018, 0, 0, 730, 164, 1, 0, 0, 0, 731, 732, 5, 2986, 0, 0, 732, 166, 1, 0, 0, 0, 733, 734, 5, 2986, 0, 0, 734, 735, 5, 3007, 0, 0, 735, 168, 1, 0, 0, 0, 736, 737, 5, 2986, 0, 0, 737, 738, 5, 3009, 0, 0, 738, 170, 1, 0, 0, 0, 739, 740, 5, 2986, 0, 0, 740, 741, 5, 3014, 0, 0, 741, 172, 1, 0, 0, 0, 742, 743, 5, 2986, 0, 0, 743, 744, 5, 3018, 0, 0, 744, 174, 1, 0, 0, 0, 745, 746, 5, 2990, 0, 0, 746, 176, 1, 0, 0, 0, 747, 748, 5, 2990, 0, 0, 748, 749, 5, 3007, 0, 0, 749, 178, 1, 0, 0, 0, 750, 751, 5, 2990, 0, 0, 751, 752, 5, 3009, 0, 0, 752, 180, 1, 0, 0, 0, 753, 754, 5, 2990, 0, 0, 754, 755, 5, 3014, 0, 0, 755, 182, 1, 0, 0, 0, 756, 757, 5, 2990, 0, 0, 757, 758, 5, 3018, 0, 0, 758, 184, 1, 0, 0, 0, 759, 760, 5, 2991, 0, 0, 760, 186, 1, 0, 0, 0, 761, 762, 5, 2991, 0, 0, 762, 763, 5, 3007, 0, 0, 763, 188, 1, 0, 0, 0, 764, 765, 5, 2991, 0, 0, 765, 766, 5, 3009, 0, 0, 766, 190, 1, 0, 0, 0, 767, 768, 5, 2991, 0, 0, 768, 769, 5, 3014, 0, 0, 769, 192, 1, 0, 0, 0, 770, 771, 5, 2991, 0, 0, 771, 772, 5, 3018, 0, 0, 772, 194, 1, 0, 0, 0, 773, 774, 5, 2992, 0, 0, 774, 196, 1, 0, 0, 0, 775, 776, 5, 2992, 0, 0, 776, 777, 5, 3007, 0, 0, 777, 198, 1, 0, 0, 0, 778, 779, 5, 2992, 0, 0, 779, 780, 5, 3009, 0, 0, 780, 200, 1, 0, 0, 0, 781, 782, 5, 2992, 0, 0, 782, 783, 5, 3014, 0, 0, 783, 202, 1, 0, 0, 0, 784, 785, 5, 2992, 0, 0, 785, 786, 5, 3018, 0, 0, 786, 204, 1, 0, 0, 0, 787, 788, 5, 2994, 0, 0, 788, 206, 1, 0, 0, 0, 789, 790, 5, 2994, 0, 0, 790, 791, 5, 3007, 0, 0, 791, 208, 1, 0, 0, 0, 792, 793, 5, 2994, 0, 0, 793, 794, 5, 3009, 0, 0, 794, 210, 1, 0, 0, 0, 795, 796, 5, 2994, 0, 0, 796, 797, 5, 3014, 0, 0, 797, 212, 1, 0, 0, 0, 798, 799, 5, 2994, 0, 0, 799, 800, 5, 3018, 0, 0, 800, 214, 1, 0, 0, 0, 801, 802, 5, 2997, 0, 0, 802, 216, 1, 0, 0, 0, 803, 804, 5, 2997, 0, 0, 804, 805, 5, 3007, 0, 0, 805, 218, 1, 0, 0, 0, 806, 807, 5, 2997, 0, 0, 807, 808, 5, 3009, 0, 0, 808, 220, 1, 0, 0, 0, 809, 810, 5, 2997, 0, 0, 810, 811, 5, 3014, 0, 0, 811, 222, 1, 0, 0, 0, 812, 813, 5, 2997, 0, 0, 813, 814, 5, 3018, 0, 0, 814, 224, 1, 0, 0, 0, 815, 816, 5, 2996, 0, 0, 816, 226, 1, 0, 0, 0, 817, 818, 5, 2996, 0, 0, 818, 819, 5, 3007, 0, 0, 819, 228, 1, 0, 0, 0, 820, 821, 5, 2996, 0, 0, 821, 822, 5, 3009, 0, 0, 822, 230, 1, 0, 0, 0, 823, 824, 5, 2996, 0, 0, 824, 825, 5, 3014, 0, 0, 825, 232, 1, 0, 0, 0, 826, 827, 5, 2996, 0, 0, 827, 828, 5, 3018, 0, 0, 828, 234, 1, 0, 0, 0, 829, 830, 5, 2995, 0, 0, 830, 236, 1, 0, 0, 0, 831, 832, 5, 2995, 0, 0, 832, 833, 5, 3007, 0, 0, 833, 238, 1, 0, 0, 0, 834, 835, 5, 2995, 0, 0, 835, 836, 5, 3009, 0, 0, 836, 240, 1, 0, 0, 0, 837, 838, 5, 2995, 0, 0, 838, 839, 5, 3014, 0, 0, 839, 242, 1, 0, 0, 0, 840, 841, 5, 2995, 0, 0, 841, 842, 5, 3018, 0, 0, 842, 244, 1, 0, 0, 0, 843, 844, 5, 2993, 0, 0, 844, 246, 1, 0, 0, 0, 845, 846, 5, 2993, 0, 0, 846, 847, 5, 3007, 0, 0, 847, 248, 1, 0, 0, 0, 848, 849, 5, 2993, 0, 0, 849, 850, 5, 3009, 0, 0, 850, 250, 1, 0, 0, 0, 851, 852, 5, 2993, 0, 0, 852, 853, 5, 3014, 0, 0, 853, 252, 1, 0, 0, 0, 854, 855, 5, 2993, 0, 0, 855, 856, 5, 3018, 0, 0, 856, 254, 1, 0, 0, 0, 857, 858, 5, 2985, 0, 0, 858, 256, 1, 0, 0, 0, 859, 860, 5, 2985, 0, 0, 860, 861, 5, 3007, 0, 0, 861, 258, 1, 0, 0, 0, 862, 863, 5, 2985, 0, 0, 863, 864, 5, 3009, 0, 0, 864, 260, 1, 0, 0, 0, 865, 866, 5, 2985, 0, 0, 866, 867, 5, 3014, 0, 0, 867, 262, 1, 0, 0, 0, 868, 869, 5, 2985, 0, 0, 869, 870, 5, 3018, 0, 0, 870, 264, 1, 0, 0, 0, 871, 872, 5, 2950, 0, 0, 872, 266, 1, 0, 0, 0, 873, 874, 5, 2952, 0, 0, 874, 268, 1, 0, 0, 0, 875, 876, 5, 2954, 0, 0, 876, 270, 1, 0, 0, 0, 877, 878, 5, 2959, 0, 0, 878, 272, 1, 0, 0, 0, 879, 880, 5, 2960, 0, 0, 880, 274, 1, 0, 0, 0, 881, 882, 5, 2963, 0, 0, 882, 276, 1, 0, 0, 0, 883, 884, 5, 2964, 0, 0, 884, 278, 1, 0, 0, 0, 885, 886, 5, 2965, 0, 0, 886, 887, 5, 3006, 0, 0, 887, 280, 1, 0, 0, 0, 888, 889, 5, 2965, 0, 0, 889, 890, 5, 3008, 0, 0, 890, 282, 1, 0, 0, 0, 891, 892, 5, 2965, 0, 0, 892, 893, 5, 3010, 0, 0, 893, 284, 1, 0, 0, 0, 894, 895, 5, 2965, 0, 0, 895, 896, 5, 3015, 0, 0, 896, 286, 1, 0, 0, 0, 897, 898, 5, 2965, 0, 0, 898, 899, 5, 3019, 0, 0, 899, 288, 1, 0, 0, 0, 900, 901, 5, 2965, 0, 0, 901, 902, 5, 3020, 0, 0, 902, 290, 1, 0, 0, 0, 903, 904, 5, 2969, 0, 0, 904, 905, 5, 3006, 0, 0, 905, 292, 1, 0, 0, 0, 906, 907, 5, 2969, 0, 0, 907, 908, 5, 3008, 0, 0, 908, 294, 1, 0, 0, 0, 909, 910, 5, 2969, 0, 0, 910, 911, 5, 3010, 0, 0, 911, 296, 1, 0, 0, 0, 912, 913, 5, 2969, 0, 0, 913, 914, 5, 3015, 0, 0, 914, 298, 1, 0, 0, 0, 915, 916, 5, 2969, 0, 0, 916, 917, 5, 3019, 0, 0, 917, 300, 1, 0, 0, 0, 918, 919, 5, 2969, 0, 0, 919, 920, 5, 3020, 0, 0, 920, 302, 1, 0, 0, 0, 921, 922, 5, 2970, 0, 0, 922, 923, 5, 3006, 0, 0, 923, 304, 1, 0, 0, 0, 924, 925, 5, 2970, 0, 0, 925, 926, 5, 3008, 0, 0, 926, 306, 1, 0, 0, 0, 927, 928, 5, 2970, 0, 0, 928, 929, 5, 3010, 0, 0, 929, 308, 1, 0, 0, 0, 930, 931, 5, 2970, 0, 0, 931, 932, 5, 3015, 0, 0, 932, 310, 1, 0, 0, 0, 933, 934, 5, 2970, 0, 0, 934, 935, 5, 3019, 0, 0, 935, 312, 1, 0, 0, 0, 936, 937, 5, 2970, 0, 0, 937, 938, 5, 3020, 0, 0, 938, 314, 1, 0, 0, 0, 939, 940, 5, 2974, 0, 0, 940, 941, 5, 3006, 0, 0, 941, 316, 1, 0, 0, 0, 942, 943, 5, 2974, 0, 0, 943, 944, 5, 3008, 0, 0, 944, 318, 1, 0, 0, 0, 945, 946, 5, 2974, 0, 0, 946, 947, 5, 3010, 0, 0, 947, 320, 1, 0, 0, 0, 948, 949, 5, 2974, 0, 0, 949, 950, 5, 3015, 0, 0, 950, 322, 1, 0, 0, 0, 951, 952, 5, 2974, 0, 0, 952, 953, 5, 3019, 0, 0, 953, 324, 1, 0, 0, 0, 954, 955, 5, 2974, 0, 0, 955, 956, 5, 3020, 0, 0, 956, 326, 1, 0, 0, 0, 957, 958, 5, 2975, 0, 0, 958, 959, 5, 3006, 0, 0, 959, 328, 1, 0, 0, 0, 960, 961, 5, 2975, 0, 0, 961, 962, 5, 3008, 0, 0, 962, 330, 1, 0, 0, 0, 963, 964, 5, 2975, 0, 0, 964, 965, 5, 3010, 0, 0, 965, 332, 1, 0, 0, 0, 966, 967, 5, 2975, 0, 0, 967, 968, 5, 3015, 0, 0, 968, 334, 1, 0, 0, 0, 969, 970, 5, 2975, 0, 0, 970, 971, 5, 3019, 0, 0, 971, 336, 1, 0, 0, 0, 972, 973, 5, 2975, 0, 0, 973, 974, 5, 3020, 0, 0, 974, 338, 1, 0, 0, 0, 975, 976, 5, 2979, 0, 0, 976, 977, 5, 3006, 0, 0, 977, 340, 1, 0, 0, 0, 978, 979, 5, 2979, 0, 0, 979, 980, 5, 3008, 0, 0, 980, 342, 1, 0, 0, 0, 981, 982, 5, 2979, 0, 0, 982, 983, 5, 3010, 0, 0, 983, 344, 1, 0, 0, 0, 984, 985, 5, 2979, 0, 0, 985, 986, 5, 3015, 0, 0, 986, 346, 1, 0, 0, 0, 987, 988, 5, 2979, 0, 0, 988, 989, 5, 3019, 0, 0, 989, 348, 1, 0, 0, 0, 990, 991, 5, 2979, 0, 0, 991, 992, 5, 3020, 0, 0, 992, 350, 1, 0, 0, 0, 993, 994, 5, 2980, 0, 0, 994, 995, 5, 3006, 0, 0, 995, 352, 1, 0, 0, 0, 996, 997, 5, 2980, 0, 0, 997, 998, 5, 3008, 0, 0, 998, 354, 1, 0, 0, 0, 999, 1000, 5, 2980, 0, 0, 1000, 1001, 5, 3010, 0, 0, 1001, 356, 1, 0, 0, 0, 1002, 1003, 5, 2980, 0, 0, 1003, 1004, 5, 3015, 0, 0, 1004, 358, 1, 0, 0, 0, 1005, 1006, 5, 2980, 0, 0, 1006, 1007, 5, 3019, 0, 0, 1007, 360, 1, 0, 0, 0, 1008, 1009, 5, 2980, 0, 0, 1009, 1010, 5, 3020, 0, 0, 1010, 362, 1, 0, 0, 0, 1011, 1012, 5, 2984, 0, 0, 1012, 1013, 5, 3006, 0, 0, 1013, 364, 1, 0, 0, 0, 1014, 1015, 5, 2984, 0, 0, 1015, 1016, 5, 3008, 0, 0, 1016, 366, 1, 0, 0, 0, 1017, 1018, 5, 2984, 0, 0, 1018, 1019, 5, 3010, 0, 0, 1019, 368, 1, 0, 0, 0, 1020, 1021, 5, 2984, 0, 0, 1021, 1022, 5, 3015, 0, 0, 1022, 370, 1, 0, 0, 0, 1023, 1024, 5, 2984, 0, 0, 1024, 1025, 5, 3019, 0, 0, 1025, 372, 1, 0, 0, 0, 1026, 1027, 5, 2984, 0, 0, 1027, 1028, 5, 3020, 0, 0, 1028, 374, 1, 0, 0, 0, 1029, 1030, 5, 2986, 0, 0, 1030, 1031, 5, 3006, 0, 0, 1031, 376, 1, 0, 0, 0, 1032, 1033, 5, 2986, 0, 0, 1033, 1034, 5, 3008, 0, 0, 1034, 378, 1, 0, 0, 0, 1035, 1036, 5, 2986, 0, 0, 1036, 1037, 5, 3010, 0, 0, 1037, 380, 1, 0, 0, 0, 1038, 1039, 5, 2986, 0, 0, 1039, 1040, 5, 3015, 0, 0, 1040, 382, 1, 0, 0, 0, 1041, 1042, 5, 2986, 0, 0, 1042, 1043, 5, 3019, 0, 0, 1043, 384, 1, 0, 0, 0, 1044, 1045, 5, 2986, 0, 0, 1045, 1046, 5, 3020, 0, 0, 1046, 386, 1, 0, 0, 0, 1047, 1048, 5, 2990, 0, 0, 1048, 1049, 5, 3006, 0, 0, 1049, 388, 1, 0, 0, 0, 1050, 1051, 5, 2990, 0, 0, 1051, 1052, 5, 3008, 0, 0, 1052, 390, 1, 0, 0, 0, 1053, 1054, 5, 2990, 0, 0, 1054, 1055, 5, 3010, 0, 0, 1055, 392, 1, 0, 0, 0, 1056, 1057, 5, 2990, 0, 0, 1057, 1058, 5, 3015, 0, 0, 1058, 394, 1, 0, 0, 0, 1059, 1060, 5, 2990, 0, 0, 1060, 1061, 5, 3019, 0, 0, 1061, 396, 1, 0, 0, 0, 1062, 1063, 5, 2990, 0, 0, 1063, 1064, 5, 3020, 0, 0, 1064, 398, 1, 0, 0, 0, 1065, 1066, 5, 2991, 0, 0, 1066, 1067, 5, 3006, 0, 0, 1067, 400, 1, 0, 0, 0, 1068, 1069, 5, 2991, 0, 0, 1069, 1070, 5, 3008, 0, 0, 1070, 402, 1, 0, 0, 0, 1071, 1072, 5, 2991, 0, 0, 1072, 1073, 5, 3010, 0, 0, 1073, 404, 1, 0, 0, 0, 1074, 1075, 5, 2991, 0, 0, 1075, 1076, 5, 3015, 0, 0, 1076, 406, 1, 0, 0, 0, 1077, 1078, 5, 2991, 0, 0, 1078, 1079, 5, 3019, 0, 0, 1079, 408, 1, 0, 0, 0, 1080, 1081, 5, 2991, 0, 0, 1081, 1082, 5, 3020, 0, 0, 1082, 410, 1, 0, 0, 0, 1083, 1084, 5, 2992, 0, 0, 1084, 1085, 5, 3006, 0, 0, 1085, 412, 1, 0, 0, 0, 1086, 1087, 5, 2992, 0, 0, 1087, 1088, 5, 3008, 0, 0, 1088, 414, 1, 0, 0, 0, 1089, 1090, 5, 2992, 0, 0, 1090, 1091, 5, 3010, 0, 0, 1091, 416, 1, 0, 0, 0, 1092, 1093, 5, 2992, 0, 0, 1093, 1094, 5, 3015, 0, 0, 1094, 418, 1, 0, 0, 0, 1095, 1096, 5, 2992, 0, 0, 1096, 1097, 5, 3019, 0, 0, 1097, 420, 1, 0, 0, 0, 1098, 1099, 5, 2992, 0, 0, 1099, 1100, 5, 3020, 0, 0, 1100, 422, 1, 0, 0, 0, 1101, 1102, 5, 2994, 0, 0, 1102, 1103, 5, 3006, 0, 0, 1103, 424, 1, 0, 0, 0, 1104, 1105, 5, 2994, 0, 0, 1105, 1106, 5, 3008, 0, 0, 1106, 426, 1, 0, 0, 0, 1107, 1108, 5, 2994, 0, 0, 1108, 1109, 5, 3010, 0, 0, 1109, 428, 1, 0, 0, 0, 1110, 1111, 5, 2994, 0, 0, 1111, 1112, 5, 3015, 0, 0, 1112, 430, 1, 0, 0, 0, 1113, 1114, 5, 2994, 0, 0, 1114, 1115, 5, 3019, 0, 0, 1115, 432, 1, 0, 0, 0, 1116, 1117, 5, 2994, 0, 0, 1117, 1118, 5, 3020, 0, 0, 1118, 434, 1, 0, 0, 0, 1119, 1120, 5, 2997, 0, 0, 1120, 1121, 5, 3006, 0, 0, 1121, 436, 1, 0, 0, 0, 1122, 1123, 5, 2997, 0, 0, 1123, 1124, 5, 3008, 0, 0, 1124, 438, 1, 0, 0, 0, 1125, 1126, 5, 2997, 0, 0, 1126, 1127, 5, 3010, 0, 0, 1127, 440, 1, 0, 0, 0, 1128, 1129, 5, 2997, 0, 0, 1129, 1130, 5, 3015, 0, 0, 1130, 442, 1, 0, 0, 0, 1131, 1132, 5, 2997, 0, 0, 1132, 1133, 5, 3019, 0, 0, 1133, 444, 1, 0, 0, 0, 1134, 1135, 5, 2997, 0, 0, 1135, 1136, 5, 3020, 0, 0, 1136, 446, 1, 0, 0, 0, 1137, 1138, 5, 2996, 0, 0, 1138, 1139, 5, 3006, 0, 0, 1139, 448, 1, 0, 0, 0, 1140, 1141, 5, 2996, 0, 0, 1141, 1142, 5, 3008, 0, 0, 1142, 450, 1, 0, 0, 0, 1143, 1144, 5, 2996, 0, 0, 1144, 1145, 5, 3010, 0, 0, 1145, 452, 1, 0, 0, 0, 1146, 1147, 5, 2996, 0, 0, 1147, 1148, 5, 3015, 0, 0, 1148, 454, 1, 0, 0, 0, 1149, 1150, 5, 2996, 0, 0, 1150, 1151, 5, 3019, 0, 0, 1151, 456, 1, 0, 0, 0, 1152, 1153, 5, 2996, 0, 0, 1153, 1154, 5, 3020, 0, 0, 1154, 458, 1, 0, 0, 0, 1155, 1156, 5, 2995, 0, 0, 1156, 1157, 5, 3006, 0, 0, 1157, 460, 1, 0, 0, 0, 1158, 1159, 5, 2995, 0, 0, 1159, 1160, 5, 3008, 0, 0, 1160, 462, 1, 0, 0, 0, 1161, 1162, 5, 2995, 0, 0, 1162, 1163, 5, 3010, 0, 0, 1163, 464, 1, 0, 0, 0, 1164, 1165, 5, 2995, 0, 0, 1165, 1166, 5, 3015, 0, 0, 1166, 466, 1, 0, 0, 0, 1167, 1168, 5, 2995, 0, 0, 1168, 1169, 5, 3019, 0, 0, 1169, 468, 1, 0, 0, 0, 1170, 1171, 5, 2995, 0, 0, 1171, 1172, 5, 3020, 0, 0, 1172, 470, 1, 0, 0, 0, 1173, 1174, 5, 2993, 0, 0, 1174, 1175, 5, 3006, 0, 0, 1175, 472, 1, 0, 0, 0, 1176, 1177, 5, 2993, 0, 0, 1177, 1178, 5, 3008, 0, 0, 1178, 474, 1, 0, 0, 0, 1179, 1180, 5, 2993, 0, 0, 1180, 1181, 5, 3010, 0, 0, 1181, 476, 1, 0, 0, 0, 1182, 1183, 5, 2993, 0, 0, 1183, 1184, 5, 3015, 0, 0, 1184, 478, 1, 0, 0, 0, 1185, 1186, 5, 2993, 0, 0, 1186, 1187, 5, 3019, 0, 0, 1187, 480, 1, 0, 0, 0, 1188, 1189, 5, 2993, 0, 0, 1189, 1190, 5, 3020, 0, 0, 1190, 482, 1, 0, 0, 0, 1191, 1192, 5, 2985, 0, 0, 1192, 1193, 5, 3006, 0, 0, 1193, 484, 1, 0, 0, 0, 1194, 1195, 5, 2985, 0, 0, 1195, 1196, 5, 3008, 0, 0, 1196, 486, 1, 0, 0, 0, 1197, 1198, 5, 2985, 0, 0, 1198, 1199, 5, 3010, 0, 0, 1199, 488, 1, 0, 0, 0, 1200, 1201, 5, 2985, 0, 0, 1201, 1202, 5, 3015, 0, 0, 1202, 490, 1, 0, 0, 0, 1203, 1204, 5, 2985, 0, 0, 1204, 1205, 5, 3019, 0, 0, 1205, 492, 1, 0, 0, 0, 1206, 1207, 5, 2985, 0, 0, 1207, 1208, 5, 3020, 0, 0, 1208, 494, 1, 0, 0, 0, 1209, 1211, 7, 0, 0, 0, 1210, 1209, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1210, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 496, 1, 0, 0, 0, 1214, 1216, 5, 13, 0, 0, 1215, 1214, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1218, 5, 10, 0, 0, 1218, 498, 1, 0, 0, 0, 3, 0, 1212, 1215, 0] \ No newline at end of file diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.py" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.py" index 7bf7d40..bda8e00 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.py" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.py" @@ -10,7 +10,7 @@ def serializedATN(): return [ - 4,0,248,1210,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, + 4,0,249,1219,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, @@ -52,67 +52,68 @@ def serializedATN(): 2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235, 7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240, 2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246, - 7,246,2,247,7,247,1,0,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1,2,1,3,1,3,1, - 3,1,4,1,4,1,4,1,5,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,7,1,8,1,8,1,8,1, - 9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,13,1,13, - 1,13,1,14,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1,17,1,17,1,17, - 1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,24, - 1,24,1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28, - 1,29,1,29,1,29,1,30,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,33, - 1,33,1,34,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1,37,1,37, - 1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,40,1,41,1,41,1,41,1,42,1,42, - 1,42,1,43,1,43,1,44,1,44,1,44,1,45,1,45,1,45,1,46,1,46,1,46,1,47, - 1,47,1,47,1,48,1,48,1,49,1,49,1,49,1,50,1,50,1,50,1,51,1,51,1,51, - 1,52,1,52,1,52,1,53,1,53,1,54,1,54,1,54,1,55,1,55,1,55,1,56,1,56, - 1,56,1,57,1,57,1,57,1,58,1,58,1,59,1,59,1,59,1,60,1,60,1,60,1,61, - 1,61,1,61,1,62,1,62,1,62,1,63,1,63,1,64,1,64,1,64,1,65,1,65,1,65, - 1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,69,1,69,1,69,1,70,1,70, - 1,70,1,71,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,74,1,74,1,74,1,75, - 1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,79,1,79,1,79, - 1,80,1,80,1,80,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1,84,1,84, - 1,84,1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1,88,1,89, - 1,89,1,89,1,90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,1,93,1,93, - 1,94,1,94,1,94,1,95,1,95,1,95,1,96,1,96,1,96,1,97,1,97,1,97,1,98, - 1,98,1,99,1,99,1,99,1,100,1,100,1,100,1,101,1,101,1,101,1,102,1, - 102,1,102,1,103,1,103,1,104,1,104,1,104,1,105,1,105,1,105,1,106, - 1,106,1,106,1,107,1,107,1,107,1,108,1,108,1,109,1,109,1,109,1,110, - 1,110,1,110,1,111,1,111,1,111,1,112,1,112,1,112,1,113,1,113,1,114, - 1,114,1,115,1,115,1,116,1,116,1,117,1,117,1,118,1,118,1,119,1,119, - 1,119,1,120,1,120,1,120,1,121,1,121,1,121,1,122,1,122,1,122,1,123, - 1,123,1,123,1,124,1,124,1,124,1,125,1,125,1,125,1,126,1,126,1,126, - 1,127,1,127,1,127,1,128,1,128,1,128,1,129,1,129,1,129,1,130,1,130, - 1,130,1,131,1,131,1,131,1,132,1,132,1,132,1,133,1,133,1,133,1,134, - 1,134,1,134,1,135,1,135,1,135,1,136,1,136,1,136,1,137,1,137,1,137, - 1,138,1,138,1,138,1,139,1,139,1,139,1,140,1,140,1,140,1,141,1,141, - 1,141,1,142,1,142,1,142,1,143,1,143,1,143,1,144,1,144,1,144,1,145, - 1,145,1,145,1,146,1,146,1,146,1,147,1,147,1,147,1,148,1,148,1,148, - 1,149,1,149,1,149,1,150,1,150,1,150,1,151,1,151,1,151,1,152,1,152, - 1,152,1,153,1,153,1,153,1,154,1,154,1,154,1,155,1,155,1,155,1,156, - 1,156,1,156,1,157,1,157,1,157,1,158,1,158,1,158,1,159,1,159,1,159, - 1,160,1,160,1,160,1,161,1,161,1,161,1,162,1,162,1,162,1,163,1,163, - 1,163,1,164,1,164,1,164,1,165,1,165,1,165,1,166,1,166,1,166,1,167, - 1,167,1,167,1,168,1,168,1,168,1,169,1,169,1,169,1,170,1,170,1,170, - 1,171,1,171,1,171,1,172,1,172,1,172,1,173,1,173,1,173,1,174,1,174, - 1,174,1,175,1,175,1,175,1,176,1,176,1,176,1,177,1,177,1,177,1,178, - 1,178,1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,181,1,181,1,181, - 1,182,1,182,1,182,1,183,1,183,1,183,1,184,1,184,1,184,1,185,1,185, - 1,185,1,186,1,186,1,186,1,187,1,187,1,187,1,188,1,188,1,188,1,189, - 1,189,1,189,1,190,1,190,1,190,1,191,1,191,1,191,1,192,1,192,1,192, - 1,193,1,193,1,193,1,194,1,194,1,194,1,195,1,195,1,195,1,196,1,196, - 1,196,1,197,1,197,1,197,1,198,1,198,1,198,1,199,1,199,1,199,1,200, - 1,200,1,200,1,201,1,201,1,201,1,202,1,202,1,202,1,203,1,203,1,203, - 1,204,1,204,1,204,1,205,1,205,1,205,1,206,1,206,1,206,1,207,1,207, - 1,207,1,208,1,208,1,208,1,209,1,209,1,209,1,210,1,210,1,210,1,211, - 1,211,1,211,1,212,1,212,1,212,1,213,1,213,1,213,1,214,1,214,1,214, - 1,215,1,215,1,215,1,216,1,216,1,216,1,217,1,217,1,217,1,218,1,218, - 1,218,1,219,1,219,1,219,1,220,1,220,1,220,1,221,1,221,1,221,1,222, - 1,222,1,222,1,223,1,223,1,223,1,224,1,224,1,224,1,225,1,225,1,225, - 1,226,1,226,1,226,1,227,1,227,1,227,1,228,1,228,1,228,1,229,1,229, - 1,229,1,230,1,230,1,230,1,231,1,231,1,231,1,232,1,232,1,232,1,233, - 1,233,1,233,1,234,1,234,1,234,1,235,1,235,1,235,1,236,1,236,1,236, - 1,237,1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,239,1,240,1,240, - 1,240,1,241,1,241,1,241,1,242,1,242,1,242,1,243,1,243,1,243,1,244, - 1,244,1,244,1,245,1,245,1,245,1,246,1,246,1,247,1,247,0,0,248,1, + 7,246,2,247,7,247,2,248,7,248,1,0,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1, + 2,1,3,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,7,1, + 8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1, + 12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1, + 17,1,17,1,17,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,20,1,21,1,21,1, + 21,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1, + 26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,28,1,29,1,29,1,29,1,30,1, + 30,1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,33,1,33,1,33,1,34,1,34,1, + 34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1, + 40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,45,1, + 45,1,45,1,46,1,46,1,46,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,49,1, + 50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,53,1,53,1,53,1,54,1,54,1, + 54,1,55,1,55,1,55,1,56,1,56,1,56,1,57,1,57,1,58,1,58,1,58,1,59,1, + 59,1,59,1,60,1,60,1,60,1,61,1,61,1,61,1,62,1,62,1,63,1,63,1,63,1, + 64,1,64,1,64,1,65,1,65,1,65,1,66,1,66,1,66,1,67,1,67,1,68,1,68,1, + 68,1,69,1,69,1,69,1,70,1,70,1,70,1,71,1,71,1,71,1,72,1,72,1,73,1, + 73,1,73,1,74,1,74,1,74,1,75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1, + 78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,81,1,81,1,81,1,82,1, + 82,1,83,1,83,1,83,1,84,1,84,1,84,1,85,1,85,1,85,1,86,1,86,1,86,1, + 87,1,87,1,88,1,88,1,88,1,89,1,89,1,89,1,90,1,90,1,90,1,91,1,91,1, + 91,1,92,1,92,1,93,1,93,1,93,1,94,1,94,1,94,1,95,1,95,1,95,1,96,1, + 96,1,96,1,97,1,97,1,98,1,98,1,98,1,99,1,99,1,99,1,100,1,100,1,100, + 1,101,1,101,1,101,1,102,1,102,1,103,1,103,1,103,1,104,1,104,1,104, + 1,105,1,105,1,105,1,106,1,106,1,106,1,107,1,107,1,108,1,108,1,108, + 1,109,1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,112,1,112, + 1,113,1,113,1,113,1,114,1,114,1,114,1,115,1,115,1,115,1,116,1,116, + 1,116,1,117,1,117,1,118,1,118,1,118,1,119,1,119,1,119,1,120,1,120, + 1,120,1,121,1,121,1,121,1,122,1,122,1,123,1,123,1,123,1,124,1,124, + 1,124,1,125,1,125,1,125,1,126,1,126,1,126,1,127,1,127,1,128,1,128, + 1,128,1,129,1,129,1,129,1,130,1,130,1,130,1,131,1,131,1,131,1,132, + 1,132,1,133,1,133,1,134,1,134,1,135,1,135,1,136,1,136,1,137,1,137, + 1,138,1,138,1,139,1,139,1,139,1,140,1,140,1,140,1,141,1,141,1,141, + 1,142,1,142,1,142,1,143,1,143,1,143,1,144,1,144,1,144,1,145,1,145, + 1,145,1,146,1,146,1,146,1,147,1,147,1,147,1,148,1,148,1,148,1,149, + 1,149,1,149,1,150,1,150,1,150,1,151,1,151,1,151,1,152,1,152,1,152, + 1,153,1,153,1,153,1,154,1,154,1,154,1,155,1,155,1,155,1,156,1,156, + 1,156,1,157,1,157,1,157,1,158,1,158,1,158,1,159,1,159,1,159,1,160, + 1,160,1,160,1,161,1,161,1,161,1,162,1,162,1,162,1,163,1,163,1,163, + 1,164,1,164,1,164,1,165,1,165,1,165,1,166,1,166,1,166,1,167,1,167, + 1,167,1,168,1,168,1,168,1,169,1,169,1,169,1,170,1,170,1,170,1,171, + 1,171,1,171,1,172,1,172,1,172,1,173,1,173,1,173,1,174,1,174,1,174, + 1,175,1,175,1,175,1,176,1,176,1,176,1,177,1,177,1,177,1,178,1,178, + 1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,181,1,181,1,181,1,182, + 1,182,1,182,1,183,1,183,1,183,1,184,1,184,1,184,1,185,1,185,1,185, + 1,186,1,186,1,186,1,187,1,187,1,187,1,188,1,188,1,188,1,189,1,189, + 1,189,1,190,1,190,1,190,1,191,1,191,1,191,1,192,1,192,1,192,1,193, + 1,193,1,193,1,194,1,194,1,194,1,195,1,195,1,195,1,196,1,196,1,196, + 1,197,1,197,1,197,1,198,1,198,1,198,1,199,1,199,1,199,1,200,1,200, + 1,200,1,201,1,201,1,201,1,202,1,202,1,202,1,203,1,203,1,203,1,204, + 1,204,1,204,1,205,1,205,1,205,1,206,1,206,1,206,1,207,1,207,1,207, + 1,208,1,208,1,208,1,209,1,209,1,209,1,210,1,210,1,210,1,211,1,211, + 1,211,1,212,1,212,1,212,1,213,1,213,1,213,1,214,1,214,1,214,1,215, + 1,215,1,215,1,216,1,216,1,216,1,217,1,217,1,217,1,218,1,218,1,218, + 1,219,1,219,1,219,1,220,1,220,1,220,1,221,1,221,1,221,1,222,1,222, + 1,222,1,223,1,223,1,223,1,224,1,224,1,224,1,225,1,225,1,225,1,226, + 1,226,1,226,1,227,1,227,1,227,1,228,1,228,1,228,1,229,1,229,1,229, + 1,230,1,230,1,230,1,231,1,231,1,231,1,232,1,232,1,232,1,233,1,233, + 1,233,1,234,1,234,1,234,1,235,1,235,1,235,1,236,1,236,1,236,1,237, + 1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,239,1,240,1,240,1,240, + 1,241,1,241,1,241,1,242,1,242,1,242,1,243,1,243,1,243,1,244,1,244, + 1,244,1,245,1,245,1,245,1,246,1,246,1,246,1,247,4,247,1211,8,247, + 11,247,12,247,1212,1,248,3,248,1216,8,248,1,248,1,248,0,0,249,1, 1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27, 14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49, 25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71, @@ -141,322 +142,325 @@ def serializedATN(): 224,449,225,451,226,453,227,455,228,457,229,459,230,461,231,463, 232,465,233,467,234,469,235,471,236,473,237,475,238,477,239,479, 240,481,241,483,242,485,243,487,244,489,245,491,246,493,247,495, - 248,1,0,0,1209,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0, - 9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0, - 19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0, - 29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0, - 39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0, - 49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0, - 59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0, - 69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0, - 79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0, - 89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0, - 99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0, - 0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117, - 1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0, - 0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1, - 0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0, - 145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0, - 0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163, - 1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0, - 0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1, - 0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0, - 191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0, - 0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209, - 1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0, - 0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1, - 0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0, - 237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0, - 0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255, - 1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0, - 0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1, - 0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0, - 283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0, - 0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301, - 1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0, - 0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1, - 0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0, - 329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0, - 0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347, - 1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0, - 0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1, - 0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0, - 375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0, - 0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393, - 1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0, - 0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1, - 0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0, - 421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0, - 0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439, - 1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0, - 0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0,455,1,0,0,0,0,457,1, - 0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0, - 467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0, - 0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485, - 1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0, - 0,495,1,0,0,0,1,497,1,0,0,0,3,500,1,0,0,0,5,503,1,0,0,0,7,506,1, - 0,0,0,9,509,1,0,0,0,11,512,1,0,0,0,13,515,1,0,0,0,15,518,1,0,0,0, - 17,521,1,0,0,0,19,524,1,0,0,0,21,527,1,0,0,0,23,530,1,0,0,0,25,533, - 1,0,0,0,27,536,1,0,0,0,29,539,1,0,0,0,31,542,1,0,0,0,33,545,1,0, - 0,0,35,548,1,0,0,0,37,551,1,0,0,0,39,553,1,0,0,0,41,555,1,0,0,0, - 43,557,1,0,0,0,45,559,1,0,0,0,47,561,1,0,0,0,49,563,1,0,0,0,51,566, - 1,0,0,0,53,569,1,0,0,0,55,572,1,0,0,0,57,575,1,0,0,0,59,577,1,0, - 0,0,61,580,1,0,0,0,63,583,1,0,0,0,65,586,1,0,0,0,67,589,1,0,0,0, - 69,591,1,0,0,0,71,594,1,0,0,0,73,597,1,0,0,0,75,600,1,0,0,0,77,603, - 1,0,0,0,79,605,1,0,0,0,81,608,1,0,0,0,83,611,1,0,0,0,85,614,1,0, - 0,0,87,617,1,0,0,0,89,619,1,0,0,0,91,622,1,0,0,0,93,625,1,0,0,0, - 95,628,1,0,0,0,97,631,1,0,0,0,99,633,1,0,0,0,101,636,1,0,0,0,103, - 639,1,0,0,0,105,642,1,0,0,0,107,645,1,0,0,0,109,647,1,0,0,0,111, - 650,1,0,0,0,113,653,1,0,0,0,115,656,1,0,0,0,117,659,1,0,0,0,119, - 661,1,0,0,0,121,664,1,0,0,0,123,667,1,0,0,0,125,670,1,0,0,0,127, - 673,1,0,0,0,129,675,1,0,0,0,131,678,1,0,0,0,133,681,1,0,0,0,135, - 684,1,0,0,0,137,687,1,0,0,0,139,689,1,0,0,0,141,692,1,0,0,0,143, - 695,1,0,0,0,145,698,1,0,0,0,147,701,1,0,0,0,149,703,1,0,0,0,151, - 706,1,0,0,0,153,709,1,0,0,0,155,712,1,0,0,0,157,715,1,0,0,0,159, - 717,1,0,0,0,161,720,1,0,0,0,163,723,1,0,0,0,165,726,1,0,0,0,167, - 729,1,0,0,0,169,731,1,0,0,0,171,734,1,0,0,0,173,737,1,0,0,0,175, - 740,1,0,0,0,177,743,1,0,0,0,179,745,1,0,0,0,181,748,1,0,0,0,183, - 751,1,0,0,0,185,754,1,0,0,0,187,757,1,0,0,0,189,759,1,0,0,0,191, - 762,1,0,0,0,193,765,1,0,0,0,195,768,1,0,0,0,197,771,1,0,0,0,199, - 773,1,0,0,0,201,776,1,0,0,0,203,779,1,0,0,0,205,782,1,0,0,0,207, - 785,1,0,0,0,209,787,1,0,0,0,211,790,1,0,0,0,213,793,1,0,0,0,215, - 796,1,0,0,0,217,799,1,0,0,0,219,801,1,0,0,0,221,804,1,0,0,0,223, - 807,1,0,0,0,225,810,1,0,0,0,227,813,1,0,0,0,229,815,1,0,0,0,231, - 817,1,0,0,0,233,819,1,0,0,0,235,821,1,0,0,0,237,823,1,0,0,0,239, - 825,1,0,0,0,241,828,1,0,0,0,243,831,1,0,0,0,245,834,1,0,0,0,247, - 837,1,0,0,0,249,840,1,0,0,0,251,843,1,0,0,0,253,846,1,0,0,0,255, - 849,1,0,0,0,257,852,1,0,0,0,259,855,1,0,0,0,261,858,1,0,0,0,263, - 861,1,0,0,0,265,864,1,0,0,0,267,867,1,0,0,0,269,870,1,0,0,0,271, - 873,1,0,0,0,273,876,1,0,0,0,275,879,1,0,0,0,277,882,1,0,0,0,279, - 885,1,0,0,0,281,888,1,0,0,0,283,891,1,0,0,0,285,894,1,0,0,0,287, - 897,1,0,0,0,289,900,1,0,0,0,291,903,1,0,0,0,293,906,1,0,0,0,295, - 909,1,0,0,0,297,912,1,0,0,0,299,915,1,0,0,0,301,918,1,0,0,0,303, - 921,1,0,0,0,305,924,1,0,0,0,307,927,1,0,0,0,309,930,1,0,0,0,311, - 933,1,0,0,0,313,936,1,0,0,0,315,939,1,0,0,0,317,942,1,0,0,0,319, - 945,1,0,0,0,321,948,1,0,0,0,323,951,1,0,0,0,325,954,1,0,0,0,327, - 957,1,0,0,0,329,960,1,0,0,0,331,963,1,0,0,0,333,966,1,0,0,0,335, - 969,1,0,0,0,337,972,1,0,0,0,339,975,1,0,0,0,341,978,1,0,0,0,343, - 981,1,0,0,0,345,984,1,0,0,0,347,987,1,0,0,0,349,990,1,0,0,0,351, - 993,1,0,0,0,353,996,1,0,0,0,355,999,1,0,0,0,357,1002,1,0,0,0,359, - 1005,1,0,0,0,361,1008,1,0,0,0,363,1011,1,0,0,0,365,1014,1,0,0,0, - 367,1017,1,0,0,0,369,1020,1,0,0,0,371,1023,1,0,0,0,373,1026,1,0, - 0,0,375,1029,1,0,0,0,377,1032,1,0,0,0,379,1035,1,0,0,0,381,1038, - 1,0,0,0,383,1041,1,0,0,0,385,1044,1,0,0,0,387,1047,1,0,0,0,389,1050, - 1,0,0,0,391,1053,1,0,0,0,393,1056,1,0,0,0,395,1059,1,0,0,0,397,1062, - 1,0,0,0,399,1065,1,0,0,0,401,1068,1,0,0,0,403,1071,1,0,0,0,405,1074, - 1,0,0,0,407,1077,1,0,0,0,409,1080,1,0,0,0,411,1083,1,0,0,0,413,1086, - 1,0,0,0,415,1089,1,0,0,0,417,1092,1,0,0,0,419,1095,1,0,0,0,421,1098, - 1,0,0,0,423,1101,1,0,0,0,425,1104,1,0,0,0,427,1107,1,0,0,0,429,1110, - 1,0,0,0,431,1113,1,0,0,0,433,1116,1,0,0,0,435,1119,1,0,0,0,437,1122, - 1,0,0,0,439,1125,1,0,0,0,441,1128,1,0,0,0,443,1131,1,0,0,0,445,1134, - 1,0,0,0,447,1137,1,0,0,0,449,1140,1,0,0,0,451,1143,1,0,0,0,453,1146, - 1,0,0,0,455,1149,1,0,0,0,457,1152,1,0,0,0,459,1155,1,0,0,0,461,1158, - 1,0,0,0,463,1161,1,0,0,0,465,1164,1,0,0,0,467,1167,1,0,0,0,469,1170, - 1,0,0,0,471,1173,1,0,0,0,473,1176,1,0,0,0,475,1179,1,0,0,0,477,1182, - 1,0,0,0,479,1185,1,0,0,0,481,1188,1,0,0,0,483,1191,1,0,0,0,485,1194, - 1,0,0,0,487,1197,1,0,0,0,489,1200,1,0,0,0,491,1203,1,0,0,0,493,1206, - 1,0,0,0,495,1208,1,0,0,0,497,498,5,2965,0,0,498,499,5,3021,0,0,499, - 2,1,0,0,0,500,501,5,2970,0,0,501,502,5,3021,0,0,502,4,1,0,0,0,503, - 504,5,2975,0,0,504,505,5,3021,0,0,505,6,1,0,0,0,506,507,5,2980,0, - 0,507,508,5,3021,0,0,508,8,1,0,0,0,509,510,5,2986,0,0,510,511,5, - 3021,0,0,511,10,1,0,0,0,512,513,5,2993,0,0,513,514,5,3021,0,0,514, - 12,1,0,0,0,515,516,5,2974,0,0,516,517,5,3021,0,0,517,14,1,0,0,0, - 518,519,5,2969,0,0,519,520,5,3021,0,0,520,16,1,0,0,0,521,522,5,2979, - 0,0,522,523,5,3021,0,0,523,18,1,0,0,0,524,525,5,2984,0,0,525,526, - 5,3021,0,0,526,20,1,0,0,0,527,528,5,2990,0,0,528,529,5,3021,0,0, - 529,22,1,0,0,0,530,531,5,2985,0,0,531,532,5,3021,0,0,532,24,1,0, - 0,0,533,534,5,2991,0,0,534,535,5,3021,0,0,535,26,1,0,0,0,536,537, - 5,2992,0,0,537,538,5,3021,0,0,538,28,1,0,0,0,539,540,5,2994,0,0, - 540,541,5,3021,0,0,541,30,1,0,0,0,542,543,5,2997,0,0,543,544,5,3021, - 0,0,544,32,1,0,0,0,545,546,5,2996,0,0,546,547,5,3021,0,0,547,34, - 1,0,0,0,548,549,5,2995,0,0,549,550,5,3021,0,0,550,36,1,0,0,0,551, - 552,5,2949,0,0,552,38,1,0,0,0,553,554,5,2951,0,0,554,40,1,0,0,0, - 555,556,5,2953,0,0,556,42,1,0,0,0,557,558,5,2958,0,0,558,44,1,0, - 0,0,559,560,5,2962,0,0,560,46,1,0,0,0,561,562,5,2965,0,0,562,48, - 1,0,0,0,563,564,5,2965,0,0,564,565,5,3007,0,0,565,50,1,0,0,0,566, - 567,5,2965,0,0,567,568,5,3009,0,0,568,52,1,0,0,0,569,570,5,2965, - 0,0,570,571,5,3014,0,0,571,54,1,0,0,0,572,573,5,2965,0,0,573,574, - 5,3018,0,0,574,56,1,0,0,0,575,576,5,2969,0,0,576,58,1,0,0,0,577, - 578,5,2969,0,0,578,579,5,3007,0,0,579,60,1,0,0,0,580,581,5,2969, - 0,0,581,582,5,3009,0,0,582,62,1,0,0,0,583,584,5,2969,0,0,584,585, - 5,3014,0,0,585,64,1,0,0,0,586,587,5,2969,0,0,587,588,5,3018,0,0, - 588,66,1,0,0,0,589,590,5,2970,0,0,590,68,1,0,0,0,591,592,5,2970, - 0,0,592,593,5,3007,0,0,593,70,1,0,0,0,594,595,5,2970,0,0,595,596, - 5,3009,0,0,596,72,1,0,0,0,597,598,5,2970,0,0,598,599,5,3014,0,0, - 599,74,1,0,0,0,600,601,5,2970,0,0,601,602,5,3018,0,0,602,76,1,0, - 0,0,603,604,5,2974,0,0,604,78,1,0,0,0,605,606,5,2974,0,0,606,607, - 5,3007,0,0,607,80,1,0,0,0,608,609,5,2974,0,0,609,610,5,3009,0,0, - 610,82,1,0,0,0,611,612,5,2974,0,0,612,613,5,3014,0,0,613,84,1,0, - 0,0,614,615,5,2974,0,0,615,616,5,3018,0,0,616,86,1,0,0,0,617,618, - 5,2975,0,0,618,88,1,0,0,0,619,620,5,2975,0,0,620,621,5,3007,0,0, - 621,90,1,0,0,0,622,623,5,2975,0,0,623,624,5,3009,0,0,624,92,1,0, - 0,0,625,626,5,2975,0,0,626,627,5,3014,0,0,627,94,1,0,0,0,628,629, - 5,2975,0,0,629,630,5,3018,0,0,630,96,1,0,0,0,631,632,5,2979,0,0, - 632,98,1,0,0,0,633,634,5,2979,0,0,634,635,5,3007,0,0,635,100,1,0, - 0,0,636,637,5,2979,0,0,637,638,5,3009,0,0,638,102,1,0,0,0,639,640, - 5,2979,0,0,640,641,5,3014,0,0,641,104,1,0,0,0,642,643,5,2979,0,0, - 643,644,5,3018,0,0,644,106,1,0,0,0,645,646,5,2980,0,0,646,108,1, - 0,0,0,647,648,5,2980,0,0,648,649,5,3007,0,0,649,110,1,0,0,0,650, - 651,5,2980,0,0,651,652,5,3009,0,0,652,112,1,0,0,0,653,654,5,2980, - 0,0,654,655,5,3014,0,0,655,114,1,0,0,0,656,657,5,2980,0,0,657,658, - 5,3018,0,0,658,116,1,0,0,0,659,660,5,2984,0,0,660,118,1,0,0,0,661, - 662,5,2984,0,0,662,663,5,3007,0,0,663,120,1,0,0,0,664,665,5,2984, - 0,0,665,666,5,3009,0,0,666,122,1,0,0,0,667,668,5,2984,0,0,668,669, - 5,3014,0,0,669,124,1,0,0,0,670,671,5,2984,0,0,671,672,5,3018,0,0, - 672,126,1,0,0,0,673,674,5,2986,0,0,674,128,1,0,0,0,675,676,5,2986, - 0,0,676,677,5,3007,0,0,677,130,1,0,0,0,678,679,5,2986,0,0,679,680, - 5,3009,0,0,680,132,1,0,0,0,681,682,5,2986,0,0,682,683,5,3014,0,0, - 683,134,1,0,0,0,684,685,5,2986,0,0,685,686,5,3018,0,0,686,136,1, - 0,0,0,687,688,5,2990,0,0,688,138,1,0,0,0,689,690,5,2990,0,0,690, - 691,5,3007,0,0,691,140,1,0,0,0,692,693,5,2990,0,0,693,694,5,3009, - 0,0,694,142,1,0,0,0,695,696,5,2990,0,0,696,697,5,3014,0,0,697,144, - 1,0,0,0,698,699,5,2990,0,0,699,700,5,3018,0,0,700,146,1,0,0,0,701, - 702,5,2991,0,0,702,148,1,0,0,0,703,704,5,2991,0,0,704,705,5,3007, - 0,0,705,150,1,0,0,0,706,707,5,2991,0,0,707,708,5,3009,0,0,708,152, - 1,0,0,0,709,710,5,2991,0,0,710,711,5,3014,0,0,711,154,1,0,0,0,712, - 713,5,2991,0,0,713,714,5,3018,0,0,714,156,1,0,0,0,715,716,5,2992, - 0,0,716,158,1,0,0,0,717,718,5,2992,0,0,718,719,5,3007,0,0,719,160, - 1,0,0,0,720,721,5,2992,0,0,721,722,5,3009,0,0,722,162,1,0,0,0,723, - 724,5,2992,0,0,724,725,5,3014,0,0,725,164,1,0,0,0,726,727,5,2992, - 0,0,727,728,5,3018,0,0,728,166,1,0,0,0,729,730,5,2994,0,0,730,168, - 1,0,0,0,731,732,5,2994,0,0,732,733,5,3007,0,0,733,170,1,0,0,0,734, - 735,5,2994,0,0,735,736,5,3009,0,0,736,172,1,0,0,0,737,738,5,2994, - 0,0,738,739,5,3014,0,0,739,174,1,0,0,0,740,741,5,2994,0,0,741,742, - 5,3018,0,0,742,176,1,0,0,0,743,744,5,2997,0,0,744,178,1,0,0,0,745, - 746,5,2997,0,0,746,747,5,3007,0,0,747,180,1,0,0,0,748,749,5,2997, - 0,0,749,750,5,3009,0,0,750,182,1,0,0,0,751,752,5,2997,0,0,752,753, - 5,3014,0,0,753,184,1,0,0,0,754,755,5,2997,0,0,755,756,5,3018,0,0, - 756,186,1,0,0,0,757,758,5,2996,0,0,758,188,1,0,0,0,759,760,5,2996, - 0,0,760,761,5,3007,0,0,761,190,1,0,0,0,762,763,5,2996,0,0,763,764, - 5,3009,0,0,764,192,1,0,0,0,765,766,5,2996,0,0,766,767,5,3014,0,0, - 767,194,1,0,0,0,768,769,5,2996,0,0,769,770,5,3018,0,0,770,196,1, - 0,0,0,771,772,5,2995,0,0,772,198,1,0,0,0,773,774,5,2995,0,0,774, - 775,5,3007,0,0,775,200,1,0,0,0,776,777,5,2995,0,0,777,778,5,3009, - 0,0,778,202,1,0,0,0,779,780,5,2995,0,0,780,781,5,3014,0,0,781,204, - 1,0,0,0,782,783,5,2995,0,0,783,784,5,3018,0,0,784,206,1,0,0,0,785, - 786,5,2993,0,0,786,208,1,0,0,0,787,788,5,2993,0,0,788,789,5,3007, - 0,0,789,210,1,0,0,0,790,791,5,2993,0,0,791,792,5,3009,0,0,792,212, - 1,0,0,0,793,794,5,2993,0,0,794,795,5,3014,0,0,795,214,1,0,0,0,796, - 797,5,2993,0,0,797,798,5,3018,0,0,798,216,1,0,0,0,799,800,5,2985, - 0,0,800,218,1,0,0,0,801,802,5,2985,0,0,802,803,5,3007,0,0,803,220, - 1,0,0,0,804,805,5,2985,0,0,805,806,5,3009,0,0,806,222,1,0,0,0,807, - 808,5,2985,0,0,808,809,5,3014,0,0,809,224,1,0,0,0,810,811,5,2985, - 0,0,811,812,5,3018,0,0,812,226,1,0,0,0,813,814,5,2950,0,0,814,228, - 1,0,0,0,815,816,5,2952,0,0,816,230,1,0,0,0,817,818,5,2954,0,0,818, - 232,1,0,0,0,819,820,5,2959,0,0,820,234,1,0,0,0,821,822,5,2960,0, - 0,822,236,1,0,0,0,823,824,5,2963,0,0,824,238,1,0,0,0,825,826,5,2962, - 0,0,826,827,5,2995,0,0,827,240,1,0,0,0,828,829,5,2965,0,0,829,830, - 5,3006,0,0,830,242,1,0,0,0,831,832,5,2965,0,0,832,833,5,3008,0,0, - 833,244,1,0,0,0,834,835,5,2965,0,0,835,836,5,3010,0,0,836,246,1, - 0,0,0,837,838,5,2965,0,0,838,839,5,3015,0,0,839,248,1,0,0,0,840, - 841,5,2965,0,0,841,842,5,3016,0,0,842,250,1,0,0,0,843,844,5,2965, - 0,0,844,845,5,3019,0,0,845,252,1,0,0,0,846,847,5,2965,0,0,847,848, - 5,3020,0,0,848,254,1,0,0,0,849,850,5,2969,0,0,850,851,5,3006,0,0, - 851,256,1,0,0,0,852,853,5,2969,0,0,853,854,5,3008,0,0,854,258,1, - 0,0,0,855,856,5,2969,0,0,856,857,5,3010,0,0,857,260,1,0,0,0,858, - 859,5,2969,0,0,859,860,5,3015,0,0,860,262,1,0,0,0,861,862,5,2969, - 0,0,862,863,5,3016,0,0,863,264,1,0,0,0,864,865,5,2969,0,0,865,866, - 5,3019,0,0,866,266,1,0,0,0,867,868,5,2969,0,0,868,869,5,3020,0,0, - 869,268,1,0,0,0,870,871,5,2970,0,0,871,872,5,3006,0,0,872,270,1, - 0,0,0,873,874,5,2970,0,0,874,875,5,3008,0,0,875,272,1,0,0,0,876, - 877,5,2970,0,0,877,878,5,3010,0,0,878,274,1,0,0,0,879,880,5,2970, - 0,0,880,881,5,3015,0,0,881,276,1,0,0,0,882,883,5,2970,0,0,883,884, - 5,3016,0,0,884,278,1,0,0,0,885,886,5,2970,0,0,886,887,5,3019,0,0, - 887,280,1,0,0,0,888,889,5,2970,0,0,889,890,5,3020,0,0,890,282,1, - 0,0,0,891,892,5,2974,0,0,892,893,5,3006,0,0,893,284,1,0,0,0,894, - 895,5,2974,0,0,895,896,5,3008,0,0,896,286,1,0,0,0,897,898,5,2974, - 0,0,898,899,5,3010,0,0,899,288,1,0,0,0,900,901,5,2974,0,0,901,902, - 5,3015,0,0,902,290,1,0,0,0,903,904,5,2974,0,0,904,905,5,3016,0,0, - 905,292,1,0,0,0,906,907,5,2974,0,0,907,908,5,3019,0,0,908,294,1, - 0,0,0,909,910,5,2974,0,0,910,911,5,3020,0,0,911,296,1,0,0,0,912, - 913,5,2975,0,0,913,914,5,3006,0,0,914,298,1,0,0,0,915,916,5,2975, - 0,0,916,917,5,3008,0,0,917,300,1,0,0,0,918,919,5,2975,0,0,919,920, - 5,3010,0,0,920,302,1,0,0,0,921,922,5,2975,0,0,922,923,5,3015,0,0, - 923,304,1,0,0,0,924,925,5,2975,0,0,925,926,5,3016,0,0,926,306,1, - 0,0,0,927,928,5,2975,0,0,928,929,5,3019,0,0,929,308,1,0,0,0,930, - 931,5,2975,0,0,931,932,5,3020,0,0,932,310,1,0,0,0,933,934,5,2979, - 0,0,934,935,5,3006,0,0,935,312,1,0,0,0,936,937,5,2979,0,0,937,938, - 5,3008,0,0,938,314,1,0,0,0,939,940,5,2979,0,0,940,941,5,3010,0,0, - 941,316,1,0,0,0,942,943,5,2979,0,0,943,944,5,3015,0,0,944,318,1, - 0,0,0,945,946,5,2979,0,0,946,947,5,3016,0,0,947,320,1,0,0,0,948, - 949,5,2979,0,0,949,950,5,3019,0,0,950,322,1,0,0,0,951,952,5,2979, - 0,0,952,953,5,3020,0,0,953,324,1,0,0,0,954,955,5,2980,0,0,955,956, - 5,3006,0,0,956,326,1,0,0,0,957,958,5,2980,0,0,958,959,5,3008,0,0, - 959,328,1,0,0,0,960,961,5,2980,0,0,961,962,5,3010,0,0,962,330,1, - 0,0,0,963,964,5,2980,0,0,964,965,5,3015,0,0,965,332,1,0,0,0,966, - 967,5,2980,0,0,967,968,5,3016,0,0,968,334,1,0,0,0,969,970,5,2980, - 0,0,970,971,5,3019,0,0,971,336,1,0,0,0,972,973,5,2980,0,0,973,974, - 5,3020,0,0,974,338,1,0,0,0,975,976,5,2984,0,0,976,977,5,3006,0,0, - 977,340,1,0,0,0,978,979,5,2984,0,0,979,980,5,3008,0,0,980,342,1, - 0,0,0,981,982,5,2984,0,0,982,983,5,3010,0,0,983,344,1,0,0,0,984, - 985,5,2984,0,0,985,986,5,3015,0,0,986,346,1,0,0,0,987,988,5,2984, - 0,0,988,989,5,3016,0,0,989,348,1,0,0,0,990,991,5,2984,0,0,991,992, - 5,3019,0,0,992,350,1,0,0,0,993,994,5,2984,0,0,994,995,5,3020,0,0, - 995,352,1,0,0,0,996,997,5,2986,0,0,997,998,5,3006,0,0,998,354,1, - 0,0,0,999,1000,5,2986,0,0,1000,1001,5,3008,0,0,1001,356,1,0,0,0, - 1002,1003,5,2986,0,0,1003,1004,5,3010,0,0,1004,358,1,0,0,0,1005, - 1006,5,2986,0,0,1006,1007,5,3015,0,0,1007,360,1,0,0,0,1008,1009, - 5,2986,0,0,1009,1010,5,3016,0,0,1010,362,1,0,0,0,1011,1012,5,2986, - 0,0,1012,1013,5,3019,0,0,1013,364,1,0,0,0,1014,1015,5,2986,0,0,1015, - 1016,5,3020,0,0,1016,366,1,0,0,0,1017,1018,5,2990,0,0,1018,1019, - 5,3006,0,0,1019,368,1,0,0,0,1020,1021,5,2990,0,0,1021,1022,5,3008, - 0,0,1022,370,1,0,0,0,1023,1024,5,2990,0,0,1024,1025,5,3010,0,0,1025, - 372,1,0,0,0,1026,1027,5,2990,0,0,1027,1028,5,3015,0,0,1028,374,1, - 0,0,0,1029,1030,5,2990,0,0,1030,1031,5,3016,0,0,1031,376,1,0,0,0, - 1032,1033,5,2990,0,0,1033,1034,5,3019,0,0,1034,378,1,0,0,0,1035, - 1036,5,2990,0,0,1036,1037,5,3020,0,0,1037,380,1,0,0,0,1038,1039, - 5,2991,0,0,1039,1040,5,3006,0,0,1040,382,1,0,0,0,1041,1042,5,2991, - 0,0,1042,1043,5,3008,0,0,1043,384,1,0,0,0,1044,1045,5,2991,0,0,1045, - 1046,5,3010,0,0,1046,386,1,0,0,0,1047,1048,5,2991,0,0,1048,1049, - 5,3015,0,0,1049,388,1,0,0,0,1050,1051,5,2991,0,0,1051,1052,5,3016, - 0,0,1052,390,1,0,0,0,1053,1054,5,2991,0,0,1054,1055,5,3019,0,0,1055, - 392,1,0,0,0,1056,1057,5,2991,0,0,1057,1058,5,3020,0,0,1058,394,1, - 0,0,0,1059,1060,5,2992,0,0,1060,1061,5,3006,0,0,1061,396,1,0,0,0, - 1062,1063,5,2992,0,0,1063,1064,5,3008,0,0,1064,398,1,0,0,0,1065, - 1066,5,2992,0,0,1066,1067,5,3010,0,0,1067,400,1,0,0,0,1068,1069, - 5,2992,0,0,1069,1070,5,3015,0,0,1070,402,1,0,0,0,1071,1072,5,2992, - 0,0,1072,1073,5,3016,0,0,1073,404,1,0,0,0,1074,1075,5,2992,0,0,1075, - 1076,5,3019,0,0,1076,406,1,0,0,0,1077,1078,5,2992,0,0,1078,1079, - 5,3020,0,0,1079,408,1,0,0,0,1080,1081,5,2994,0,0,1081,1082,5,3006, - 0,0,1082,410,1,0,0,0,1083,1084,5,2994,0,0,1084,1085,5,3008,0,0,1085, - 412,1,0,0,0,1086,1087,5,2994,0,0,1087,1088,5,3010,0,0,1088,414,1, - 0,0,0,1089,1090,5,2994,0,0,1090,1091,5,3015,0,0,1091,416,1,0,0,0, - 1092,1093,5,2994,0,0,1093,1094,5,3016,0,0,1094,418,1,0,0,0,1095, - 1096,5,2994,0,0,1096,1097,5,3019,0,0,1097,420,1,0,0,0,1098,1099, - 5,2994,0,0,1099,1100,5,3020,0,0,1100,422,1,0,0,0,1101,1102,5,2997, - 0,0,1102,1103,5,3006,0,0,1103,424,1,0,0,0,1104,1105,5,2997,0,0,1105, - 1106,5,3008,0,0,1106,426,1,0,0,0,1107,1108,5,2997,0,0,1108,1109, - 5,3010,0,0,1109,428,1,0,0,0,1110,1111,5,2997,0,0,1111,1112,5,3015, - 0,0,1112,430,1,0,0,0,1113,1114,5,2997,0,0,1114,1115,5,3016,0,0,1115, - 432,1,0,0,0,1116,1117,5,2997,0,0,1117,1118,5,3019,0,0,1118,434,1, - 0,0,0,1119,1120,5,2997,0,0,1120,1121,5,3020,0,0,1121,436,1,0,0,0, - 1122,1123,5,2996,0,0,1123,1124,5,3006,0,0,1124,438,1,0,0,0,1125, - 1126,5,2996,0,0,1126,1127,5,3008,0,0,1127,440,1,0,0,0,1128,1129, - 5,2996,0,0,1129,1130,5,3010,0,0,1130,442,1,0,0,0,1131,1132,5,2996, - 0,0,1132,1133,5,3015,0,0,1133,444,1,0,0,0,1134,1135,5,2996,0,0,1135, - 1136,5,3016,0,0,1136,446,1,0,0,0,1137,1138,5,2996,0,0,1138,1139, - 5,3019,0,0,1139,448,1,0,0,0,1140,1141,5,2996,0,0,1141,1142,5,3020, - 0,0,1142,450,1,0,0,0,1143,1144,5,2995,0,0,1144,1145,5,3006,0,0,1145, - 452,1,0,0,0,1146,1147,5,2995,0,0,1147,1148,5,3008,0,0,1148,454,1, - 0,0,0,1149,1150,5,2995,0,0,1150,1151,5,3010,0,0,1151,456,1,0,0,0, - 1152,1153,5,2995,0,0,1153,1154,5,3015,0,0,1154,458,1,0,0,0,1155, - 1156,5,2995,0,0,1156,1157,5,3016,0,0,1157,460,1,0,0,0,1158,1159, - 5,2995,0,0,1159,1160,5,3019,0,0,1160,462,1,0,0,0,1161,1162,5,2995, - 0,0,1162,1163,5,3020,0,0,1163,464,1,0,0,0,1164,1165,5,2993,0,0,1165, - 1166,5,3006,0,0,1166,466,1,0,0,0,1167,1168,5,2993,0,0,1168,1169, - 5,3008,0,0,1169,468,1,0,0,0,1170,1171,5,2993,0,0,1171,1172,5,3010, - 0,0,1172,470,1,0,0,0,1173,1174,5,2993,0,0,1174,1175,5,3015,0,0,1175, - 472,1,0,0,0,1176,1177,5,2993,0,0,1177,1178,5,3016,0,0,1178,474,1, - 0,0,0,1179,1180,5,2993,0,0,1180,1181,5,3019,0,0,1181,476,1,0,0,0, - 1182,1183,5,2993,0,0,1183,1184,5,3020,0,0,1184,478,1,0,0,0,1185, - 1186,5,2985,0,0,1186,1187,5,3006,0,0,1187,480,1,0,0,0,1188,1189, - 5,2985,0,0,1189,1190,5,3008,0,0,1190,482,1,0,0,0,1191,1192,5,2985, - 0,0,1192,1193,5,3010,0,0,1193,484,1,0,0,0,1194,1195,5,2985,0,0,1195, - 1196,5,3015,0,0,1196,486,1,0,0,0,1197,1198,5,2985,0,0,1198,1199, - 5,3016,0,0,1199,488,1,0,0,0,1200,1201,5,2985,0,0,1201,1202,5,3019, - 0,0,1202,490,1,0,0,0,1203,1204,5,2985,0,0,1204,1205,5,3020,0,0,1205, - 492,1,0,0,0,1206,1207,5,2947,0,0,1207,494,1,0,0,0,1208,1209,5,32, - 0,0,1209,496,1,0,0,0,1,0,0 + 248,497,249,1,0,1,2,0,9,9,32,32,1220,0,1,1,0,0,0,0,3,1,0,0,0,0,5, + 1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1, + 0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1, + 0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1, + 0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1, + 0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1, + 0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1, + 0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1, + 0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1, + 0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1, + 0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105, + 1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0, + 0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1, + 0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0, + 133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0, + 0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151, + 1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0, + 0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1, + 0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0, + 179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0, + 0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197, + 1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0, + 0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1, + 0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0, + 225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0, + 0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243, + 1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0, + 0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1, + 0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0, + 271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0, + 0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289, + 1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0, + 0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1, + 0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0, + 317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0, + 0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335, + 1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0, + 0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1, + 0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0, + 363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0, + 0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381, + 1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0, + 0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1, + 0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0, + 409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0, + 0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427, + 1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0, + 0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1, + 0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0, + 455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0, + 0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473, + 1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0, + 0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1, + 0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,1,499,1,0,0,0,3, + 502,1,0,0,0,5,505,1,0,0,0,7,508,1,0,0,0,9,511,1,0,0,0,11,514,1,0, + 0,0,13,517,1,0,0,0,15,520,1,0,0,0,17,523,1,0,0,0,19,526,1,0,0,0, + 21,529,1,0,0,0,23,532,1,0,0,0,25,535,1,0,0,0,27,538,1,0,0,0,29,541, + 1,0,0,0,31,544,1,0,0,0,33,547,1,0,0,0,35,550,1,0,0,0,37,553,1,0, + 0,0,39,555,1,0,0,0,41,558,1,0,0,0,43,561,1,0,0,0,45,564,1,0,0,0, + 47,567,1,0,0,0,49,570,1,0,0,0,51,573,1,0,0,0,53,576,1,0,0,0,55,579, + 1,0,0,0,57,582,1,0,0,0,59,585,1,0,0,0,61,588,1,0,0,0,63,591,1,0, + 0,0,65,594,1,0,0,0,67,597,1,0,0,0,69,600,1,0,0,0,71,603,1,0,0,0, + 73,606,1,0,0,0,75,609,1,0,0,0,77,611,1,0,0,0,79,613,1,0,0,0,81,615, + 1,0,0,0,83,617,1,0,0,0,85,619,1,0,0,0,87,621,1,0,0,0,89,624,1,0, + 0,0,91,627,1,0,0,0,93,630,1,0,0,0,95,633,1,0,0,0,97,635,1,0,0,0, + 99,638,1,0,0,0,101,641,1,0,0,0,103,644,1,0,0,0,105,647,1,0,0,0,107, + 649,1,0,0,0,109,652,1,0,0,0,111,655,1,0,0,0,113,658,1,0,0,0,115, + 661,1,0,0,0,117,663,1,0,0,0,119,666,1,0,0,0,121,669,1,0,0,0,123, + 672,1,0,0,0,125,675,1,0,0,0,127,677,1,0,0,0,129,680,1,0,0,0,131, + 683,1,0,0,0,133,686,1,0,0,0,135,689,1,0,0,0,137,691,1,0,0,0,139, + 694,1,0,0,0,141,697,1,0,0,0,143,700,1,0,0,0,145,703,1,0,0,0,147, + 705,1,0,0,0,149,708,1,0,0,0,151,711,1,0,0,0,153,714,1,0,0,0,155, + 717,1,0,0,0,157,719,1,0,0,0,159,722,1,0,0,0,161,725,1,0,0,0,163, + 728,1,0,0,0,165,731,1,0,0,0,167,733,1,0,0,0,169,736,1,0,0,0,171, + 739,1,0,0,0,173,742,1,0,0,0,175,745,1,0,0,0,177,747,1,0,0,0,179, + 750,1,0,0,0,181,753,1,0,0,0,183,756,1,0,0,0,185,759,1,0,0,0,187, + 761,1,0,0,0,189,764,1,0,0,0,191,767,1,0,0,0,193,770,1,0,0,0,195, + 773,1,0,0,0,197,775,1,0,0,0,199,778,1,0,0,0,201,781,1,0,0,0,203, + 784,1,0,0,0,205,787,1,0,0,0,207,789,1,0,0,0,209,792,1,0,0,0,211, + 795,1,0,0,0,213,798,1,0,0,0,215,801,1,0,0,0,217,803,1,0,0,0,219, + 806,1,0,0,0,221,809,1,0,0,0,223,812,1,0,0,0,225,815,1,0,0,0,227, + 817,1,0,0,0,229,820,1,0,0,0,231,823,1,0,0,0,233,826,1,0,0,0,235, + 829,1,0,0,0,237,831,1,0,0,0,239,834,1,0,0,0,241,837,1,0,0,0,243, + 840,1,0,0,0,245,843,1,0,0,0,247,845,1,0,0,0,249,848,1,0,0,0,251, + 851,1,0,0,0,253,854,1,0,0,0,255,857,1,0,0,0,257,859,1,0,0,0,259, + 862,1,0,0,0,261,865,1,0,0,0,263,868,1,0,0,0,265,871,1,0,0,0,267, + 873,1,0,0,0,269,875,1,0,0,0,271,877,1,0,0,0,273,879,1,0,0,0,275, + 881,1,0,0,0,277,883,1,0,0,0,279,885,1,0,0,0,281,888,1,0,0,0,283, + 891,1,0,0,0,285,894,1,0,0,0,287,897,1,0,0,0,289,900,1,0,0,0,291, + 903,1,0,0,0,293,906,1,0,0,0,295,909,1,0,0,0,297,912,1,0,0,0,299, + 915,1,0,0,0,301,918,1,0,0,0,303,921,1,0,0,0,305,924,1,0,0,0,307, + 927,1,0,0,0,309,930,1,0,0,0,311,933,1,0,0,0,313,936,1,0,0,0,315, + 939,1,0,0,0,317,942,1,0,0,0,319,945,1,0,0,0,321,948,1,0,0,0,323, + 951,1,0,0,0,325,954,1,0,0,0,327,957,1,0,0,0,329,960,1,0,0,0,331, + 963,1,0,0,0,333,966,1,0,0,0,335,969,1,0,0,0,337,972,1,0,0,0,339, + 975,1,0,0,0,341,978,1,0,0,0,343,981,1,0,0,0,345,984,1,0,0,0,347, + 987,1,0,0,0,349,990,1,0,0,0,351,993,1,0,0,0,353,996,1,0,0,0,355, + 999,1,0,0,0,357,1002,1,0,0,0,359,1005,1,0,0,0,361,1008,1,0,0,0,363, + 1011,1,0,0,0,365,1014,1,0,0,0,367,1017,1,0,0,0,369,1020,1,0,0,0, + 371,1023,1,0,0,0,373,1026,1,0,0,0,375,1029,1,0,0,0,377,1032,1,0, + 0,0,379,1035,1,0,0,0,381,1038,1,0,0,0,383,1041,1,0,0,0,385,1044, + 1,0,0,0,387,1047,1,0,0,0,389,1050,1,0,0,0,391,1053,1,0,0,0,393,1056, + 1,0,0,0,395,1059,1,0,0,0,397,1062,1,0,0,0,399,1065,1,0,0,0,401,1068, + 1,0,0,0,403,1071,1,0,0,0,405,1074,1,0,0,0,407,1077,1,0,0,0,409,1080, + 1,0,0,0,411,1083,1,0,0,0,413,1086,1,0,0,0,415,1089,1,0,0,0,417,1092, + 1,0,0,0,419,1095,1,0,0,0,421,1098,1,0,0,0,423,1101,1,0,0,0,425,1104, + 1,0,0,0,427,1107,1,0,0,0,429,1110,1,0,0,0,431,1113,1,0,0,0,433,1116, + 1,0,0,0,435,1119,1,0,0,0,437,1122,1,0,0,0,439,1125,1,0,0,0,441,1128, + 1,0,0,0,443,1131,1,0,0,0,445,1134,1,0,0,0,447,1137,1,0,0,0,449,1140, + 1,0,0,0,451,1143,1,0,0,0,453,1146,1,0,0,0,455,1149,1,0,0,0,457,1152, + 1,0,0,0,459,1155,1,0,0,0,461,1158,1,0,0,0,463,1161,1,0,0,0,465,1164, + 1,0,0,0,467,1167,1,0,0,0,469,1170,1,0,0,0,471,1173,1,0,0,0,473,1176, + 1,0,0,0,475,1179,1,0,0,0,477,1182,1,0,0,0,479,1185,1,0,0,0,481,1188, + 1,0,0,0,483,1191,1,0,0,0,485,1194,1,0,0,0,487,1197,1,0,0,0,489,1200, + 1,0,0,0,491,1203,1,0,0,0,493,1206,1,0,0,0,495,1210,1,0,0,0,497,1215, + 1,0,0,0,499,500,5,2965,0,0,500,501,5,3021,0,0,501,2,1,0,0,0,502, + 503,5,2970,0,0,503,504,5,3021,0,0,504,4,1,0,0,0,505,506,5,2975,0, + 0,506,507,5,3021,0,0,507,6,1,0,0,0,508,509,5,2980,0,0,509,510,5, + 3021,0,0,510,8,1,0,0,0,511,512,5,2986,0,0,512,513,5,3021,0,0,513, + 10,1,0,0,0,514,515,5,2993,0,0,515,516,5,3021,0,0,516,12,1,0,0,0, + 517,518,5,2974,0,0,518,519,5,3021,0,0,519,14,1,0,0,0,520,521,5,2969, + 0,0,521,522,5,3021,0,0,522,16,1,0,0,0,523,524,5,2979,0,0,524,525, + 5,3021,0,0,525,18,1,0,0,0,526,527,5,2984,0,0,527,528,5,3021,0,0, + 528,20,1,0,0,0,529,530,5,2990,0,0,530,531,5,3021,0,0,531,22,1,0, + 0,0,532,533,5,2985,0,0,533,534,5,3021,0,0,534,24,1,0,0,0,535,536, + 5,2991,0,0,536,537,5,3021,0,0,537,26,1,0,0,0,538,539,5,2992,0,0, + 539,540,5,3021,0,0,540,28,1,0,0,0,541,542,5,2994,0,0,542,543,5,3021, + 0,0,543,30,1,0,0,0,544,545,5,2997,0,0,545,546,5,3021,0,0,546,32, + 1,0,0,0,547,548,5,2996,0,0,548,549,5,3021,0,0,549,34,1,0,0,0,550, + 551,5,2995,0,0,551,552,5,3021,0,0,552,36,1,0,0,0,553,554,5,2947, + 0,0,554,38,1,0,0,0,555,556,5,2965,0,0,556,557,5,3016,0,0,557,40, + 1,0,0,0,558,559,5,2969,0,0,559,560,5,3016,0,0,560,42,1,0,0,0,561, + 562,5,2970,0,0,562,563,5,3016,0,0,563,44,1,0,0,0,564,565,5,2974, + 0,0,565,566,5,3016,0,0,566,46,1,0,0,0,567,568,5,2975,0,0,568,569, + 5,3016,0,0,569,48,1,0,0,0,570,571,5,2979,0,0,571,572,5,3016,0,0, + 572,50,1,0,0,0,573,574,5,2980,0,0,574,575,5,3016,0,0,575,52,1,0, + 0,0,576,577,5,2984,0,0,577,578,5,3016,0,0,578,54,1,0,0,0,579,580, + 5,2986,0,0,580,581,5,3016,0,0,581,56,1,0,0,0,582,583,5,2990,0,0, + 583,584,5,3016,0,0,584,58,1,0,0,0,585,586,5,2991,0,0,586,587,5,3016, + 0,0,587,60,1,0,0,0,588,589,5,2992,0,0,589,590,5,3016,0,0,590,62, + 1,0,0,0,591,592,5,2994,0,0,592,593,5,3016,0,0,593,64,1,0,0,0,594, + 595,5,2997,0,0,595,596,5,3016,0,0,596,66,1,0,0,0,597,598,5,2996, + 0,0,598,599,5,3016,0,0,599,68,1,0,0,0,600,601,5,2995,0,0,601,602, + 5,3016,0,0,602,70,1,0,0,0,603,604,5,2993,0,0,604,605,5,3016,0,0, + 605,72,1,0,0,0,606,607,5,2985,0,0,607,608,5,3016,0,0,608,74,1,0, + 0,0,609,610,5,2949,0,0,610,76,1,0,0,0,611,612,5,2951,0,0,612,78, + 1,0,0,0,613,614,5,2953,0,0,614,80,1,0,0,0,615,616,5,2958,0,0,616, + 82,1,0,0,0,617,618,5,2962,0,0,618,84,1,0,0,0,619,620,5,2965,0,0, + 620,86,1,0,0,0,621,622,5,2965,0,0,622,623,5,3007,0,0,623,88,1,0, + 0,0,624,625,5,2965,0,0,625,626,5,3009,0,0,626,90,1,0,0,0,627,628, + 5,2965,0,0,628,629,5,3014,0,0,629,92,1,0,0,0,630,631,5,2965,0,0, + 631,632,5,3018,0,0,632,94,1,0,0,0,633,634,5,2969,0,0,634,96,1,0, + 0,0,635,636,5,2969,0,0,636,637,5,3007,0,0,637,98,1,0,0,0,638,639, + 5,2969,0,0,639,640,5,3009,0,0,640,100,1,0,0,0,641,642,5,2969,0,0, + 642,643,5,3014,0,0,643,102,1,0,0,0,644,645,5,2969,0,0,645,646,5, + 3018,0,0,646,104,1,0,0,0,647,648,5,2970,0,0,648,106,1,0,0,0,649, + 650,5,2970,0,0,650,651,5,3007,0,0,651,108,1,0,0,0,652,653,5,2970, + 0,0,653,654,5,3009,0,0,654,110,1,0,0,0,655,656,5,2970,0,0,656,657, + 5,3014,0,0,657,112,1,0,0,0,658,659,5,2970,0,0,659,660,5,3018,0,0, + 660,114,1,0,0,0,661,662,5,2974,0,0,662,116,1,0,0,0,663,664,5,2974, + 0,0,664,665,5,3007,0,0,665,118,1,0,0,0,666,667,5,2974,0,0,667,668, + 5,3009,0,0,668,120,1,0,0,0,669,670,5,2974,0,0,670,671,5,3014,0,0, + 671,122,1,0,0,0,672,673,5,2974,0,0,673,674,5,3018,0,0,674,124,1, + 0,0,0,675,676,5,2975,0,0,676,126,1,0,0,0,677,678,5,2975,0,0,678, + 679,5,3007,0,0,679,128,1,0,0,0,680,681,5,2975,0,0,681,682,5,3009, + 0,0,682,130,1,0,0,0,683,684,5,2975,0,0,684,685,5,3014,0,0,685,132, + 1,0,0,0,686,687,5,2975,0,0,687,688,5,3018,0,0,688,134,1,0,0,0,689, + 690,5,2979,0,0,690,136,1,0,0,0,691,692,5,2979,0,0,692,693,5,3007, + 0,0,693,138,1,0,0,0,694,695,5,2979,0,0,695,696,5,3009,0,0,696,140, + 1,0,0,0,697,698,5,2979,0,0,698,699,5,3014,0,0,699,142,1,0,0,0,700, + 701,5,2979,0,0,701,702,5,3018,0,0,702,144,1,0,0,0,703,704,5,2980, + 0,0,704,146,1,0,0,0,705,706,5,2980,0,0,706,707,5,3007,0,0,707,148, + 1,0,0,0,708,709,5,2980,0,0,709,710,5,3009,0,0,710,150,1,0,0,0,711, + 712,5,2980,0,0,712,713,5,3014,0,0,713,152,1,0,0,0,714,715,5,2980, + 0,0,715,716,5,3018,0,0,716,154,1,0,0,0,717,718,5,2984,0,0,718,156, + 1,0,0,0,719,720,5,2984,0,0,720,721,5,3007,0,0,721,158,1,0,0,0,722, + 723,5,2984,0,0,723,724,5,3009,0,0,724,160,1,0,0,0,725,726,5,2984, + 0,0,726,727,5,3014,0,0,727,162,1,0,0,0,728,729,5,2984,0,0,729,730, + 5,3018,0,0,730,164,1,0,0,0,731,732,5,2986,0,0,732,166,1,0,0,0,733, + 734,5,2986,0,0,734,735,5,3007,0,0,735,168,1,0,0,0,736,737,5,2986, + 0,0,737,738,5,3009,0,0,738,170,1,0,0,0,739,740,5,2986,0,0,740,741, + 5,3014,0,0,741,172,1,0,0,0,742,743,5,2986,0,0,743,744,5,3018,0,0, + 744,174,1,0,0,0,745,746,5,2990,0,0,746,176,1,0,0,0,747,748,5,2990, + 0,0,748,749,5,3007,0,0,749,178,1,0,0,0,750,751,5,2990,0,0,751,752, + 5,3009,0,0,752,180,1,0,0,0,753,754,5,2990,0,0,754,755,5,3014,0,0, + 755,182,1,0,0,0,756,757,5,2990,0,0,757,758,5,3018,0,0,758,184,1, + 0,0,0,759,760,5,2991,0,0,760,186,1,0,0,0,761,762,5,2991,0,0,762, + 763,5,3007,0,0,763,188,1,0,0,0,764,765,5,2991,0,0,765,766,5,3009, + 0,0,766,190,1,0,0,0,767,768,5,2991,0,0,768,769,5,3014,0,0,769,192, + 1,0,0,0,770,771,5,2991,0,0,771,772,5,3018,0,0,772,194,1,0,0,0,773, + 774,5,2992,0,0,774,196,1,0,0,0,775,776,5,2992,0,0,776,777,5,3007, + 0,0,777,198,1,0,0,0,778,779,5,2992,0,0,779,780,5,3009,0,0,780,200, + 1,0,0,0,781,782,5,2992,0,0,782,783,5,3014,0,0,783,202,1,0,0,0,784, + 785,5,2992,0,0,785,786,5,3018,0,0,786,204,1,0,0,0,787,788,5,2994, + 0,0,788,206,1,0,0,0,789,790,5,2994,0,0,790,791,5,3007,0,0,791,208, + 1,0,0,0,792,793,5,2994,0,0,793,794,5,3009,0,0,794,210,1,0,0,0,795, + 796,5,2994,0,0,796,797,5,3014,0,0,797,212,1,0,0,0,798,799,5,2994, + 0,0,799,800,5,3018,0,0,800,214,1,0,0,0,801,802,5,2997,0,0,802,216, + 1,0,0,0,803,804,5,2997,0,0,804,805,5,3007,0,0,805,218,1,0,0,0,806, + 807,5,2997,0,0,807,808,5,3009,0,0,808,220,1,0,0,0,809,810,5,2997, + 0,0,810,811,5,3014,0,0,811,222,1,0,0,0,812,813,5,2997,0,0,813,814, + 5,3018,0,0,814,224,1,0,0,0,815,816,5,2996,0,0,816,226,1,0,0,0,817, + 818,5,2996,0,0,818,819,5,3007,0,0,819,228,1,0,0,0,820,821,5,2996, + 0,0,821,822,5,3009,0,0,822,230,1,0,0,0,823,824,5,2996,0,0,824,825, + 5,3014,0,0,825,232,1,0,0,0,826,827,5,2996,0,0,827,828,5,3018,0,0, + 828,234,1,0,0,0,829,830,5,2995,0,0,830,236,1,0,0,0,831,832,5,2995, + 0,0,832,833,5,3007,0,0,833,238,1,0,0,0,834,835,5,2995,0,0,835,836, + 5,3009,0,0,836,240,1,0,0,0,837,838,5,2995,0,0,838,839,5,3014,0,0, + 839,242,1,0,0,0,840,841,5,2995,0,0,841,842,5,3018,0,0,842,244,1, + 0,0,0,843,844,5,2993,0,0,844,246,1,0,0,0,845,846,5,2993,0,0,846, + 847,5,3007,0,0,847,248,1,0,0,0,848,849,5,2993,0,0,849,850,5,3009, + 0,0,850,250,1,0,0,0,851,852,5,2993,0,0,852,853,5,3014,0,0,853,252, + 1,0,0,0,854,855,5,2993,0,0,855,856,5,3018,0,0,856,254,1,0,0,0,857, + 858,5,2985,0,0,858,256,1,0,0,0,859,860,5,2985,0,0,860,861,5,3007, + 0,0,861,258,1,0,0,0,862,863,5,2985,0,0,863,864,5,3009,0,0,864,260, + 1,0,0,0,865,866,5,2985,0,0,866,867,5,3014,0,0,867,262,1,0,0,0,868, + 869,5,2985,0,0,869,870,5,3018,0,0,870,264,1,0,0,0,871,872,5,2950, + 0,0,872,266,1,0,0,0,873,874,5,2952,0,0,874,268,1,0,0,0,875,876,5, + 2954,0,0,876,270,1,0,0,0,877,878,5,2959,0,0,878,272,1,0,0,0,879, + 880,5,2960,0,0,880,274,1,0,0,0,881,882,5,2963,0,0,882,276,1,0,0, + 0,883,884,5,2964,0,0,884,278,1,0,0,0,885,886,5,2965,0,0,886,887, + 5,3006,0,0,887,280,1,0,0,0,888,889,5,2965,0,0,889,890,5,3008,0,0, + 890,282,1,0,0,0,891,892,5,2965,0,0,892,893,5,3010,0,0,893,284,1, + 0,0,0,894,895,5,2965,0,0,895,896,5,3015,0,0,896,286,1,0,0,0,897, + 898,5,2965,0,0,898,899,5,3019,0,0,899,288,1,0,0,0,900,901,5,2965, + 0,0,901,902,5,3020,0,0,902,290,1,0,0,0,903,904,5,2969,0,0,904,905, + 5,3006,0,0,905,292,1,0,0,0,906,907,5,2969,0,0,907,908,5,3008,0,0, + 908,294,1,0,0,0,909,910,5,2969,0,0,910,911,5,3010,0,0,911,296,1, + 0,0,0,912,913,5,2969,0,0,913,914,5,3015,0,0,914,298,1,0,0,0,915, + 916,5,2969,0,0,916,917,5,3019,0,0,917,300,1,0,0,0,918,919,5,2969, + 0,0,919,920,5,3020,0,0,920,302,1,0,0,0,921,922,5,2970,0,0,922,923, + 5,3006,0,0,923,304,1,0,0,0,924,925,5,2970,0,0,925,926,5,3008,0,0, + 926,306,1,0,0,0,927,928,5,2970,0,0,928,929,5,3010,0,0,929,308,1, + 0,0,0,930,931,5,2970,0,0,931,932,5,3015,0,0,932,310,1,0,0,0,933, + 934,5,2970,0,0,934,935,5,3019,0,0,935,312,1,0,0,0,936,937,5,2970, + 0,0,937,938,5,3020,0,0,938,314,1,0,0,0,939,940,5,2974,0,0,940,941, + 5,3006,0,0,941,316,1,0,0,0,942,943,5,2974,0,0,943,944,5,3008,0,0, + 944,318,1,0,0,0,945,946,5,2974,0,0,946,947,5,3010,0,0,947,320,1, + 0,0,0,948,949,5,2974,0,0,949,950,5,3015,0,0,950,322,1,0,0,0,951, + 952,5,2974,0,0,952,953,5,3019,0,0,953,324,1,0,0,0,954,955,5,2974, + 0,0,955,956,5,3020,0,0,956,326,1,0,0,0,957,958,5,2975,0,0,958,959, + 5,3006,0,0,959,328,1,0,0,0,960,961,5,2975,0,0,961,962,5,3008,0,0, + 962,330,1,0,0,0,963,964,5,2975,0,0,964,965,5,3010,0,0,965,332,1, + 0,0,0,966,967,5,2975,0,0,967,968,5,3015,0,0,968,334,1,0,0,0,969, + 970,5,2975,0,0,970,971,5,3019,0,0,971,336,1,0,0,0,972,973,5,2975, + 0,0,973,974,5,3020,0,0,974,338,1,0,0,0,975,976,5,2979,0,0,976,977, + 5,3006,0,0,977,340,1,0,0,0,978,979,5,2979,0,0,979,980,5,3008,0,0, + 980,342,1,0,0,0,981,982,5,2979,0,0,982,983,5,3010,0,0,983,344,1, + 0,0,0,984,985,5,2979,0,0,985,986,5,3015,0,0,986,346,1,0,0,0,987, + 988,5,2979,0,0,988,989,5,3019,0,0,989,348,1,0,0,0,990,991,5,2979, + 0,0,991,992,5,3020,0,0,992,350,1,0,0,0,993,994,5,2980,0,0,994,995, + 5,3006,0,0,995,352,1,0,0,0,996,997,5,2980,0,0,997,998,5,3008,0,0, + 998,354,1,0,0,0,999,1000,5,2980,0,0,1000,1001,5,3010,0,0,1001,356, + 1,0,0,0,1002,1003,5,2980,0,0,1003,1004,5,3015,0,0,1004,358,1,0,0, + 0,1005,1006,5,2980,0,0,1006,1007,5,3019,0,0,1007,360,1,0,0,0,1008, + 1009,5,2980,0,0,1009,1010,5,3020,0,0,1010,362,1,0,0,0,1011,1012, + 5,2984,0,0,1012,1013,5,3006,0,0,1013,364,1,0,0,0,1014,1015,5,2984, + 0,0,1015,1016,5,3008,0,0,1016,366,1,0,0,0,1017,1018,5,2984,0,0,1018, + 1019,5,3010,0,0,1019,368,1,0,0,0,1020,1021,5,2984,0,0,1021,1022, + 5,3015,0,0,1022,370,1,0,0,0,1023,1024,5,2984,0,0,1024,1025,5,3019, + 0,0,1025,372,1,0,0,0,1026,1027,5,2984,0,0,1027,1028,5,3020,0,0,1028, + 374,1,0,0,0,1029,1030,5,2986,0,0,1030,1031,5,3006,0,0,1031,376,1, + 0,0,0,1032,1033,5,2986,0,0,1033,1034,5,3008,0,0,1034,378,1,0,0,0, + 1035,1036,5,2986,0,0,1036,1037,5,3010,0,0,1037,380,1,0,0,0,1038, + 1039,5,2986,0,0,1039,1040,5,3015,0,0,1040,382,1,0,0,0,1041,1042, + 5,2986,0,0,1042,1043,5,3019,0,0,1043,384,1,0,0,0,1044,1045,5,2986, + 0,0,1045,1046,5,3020,0,0,1046,386,1,0,0,0,1047,1048,5,2990,0,0,1048, + 1049,5,3006,0,0,1049,388,1,0,0,0,1050,1051,5,2990,0,0,1051,1052, + 5,3008,0,0,1052,390,1,0,0,0,1053,1054,5,2990,0,0,1054,1055,5,3010, + 0,0,1055,392,1,0,0,0,1056,1057,5,2990,0,0,1057,1058,5,3015,0,0,1058, + 394,1,0,0,0,1059,1060,5,2990,0,0,1060,1061,5,3019,0,0,1061,396,1, + 0,0,0,1062,1063,5,2990,0,0,1063,1064,5,3020,0,0,1064,398,1,0,0,0, + 1065,1066,5,2991,0,0,1066,1067,5,3006,0,0,1067,400,1,0,0,0,1068, + 1069,5,2991,0,0,1069,1070,5,3008,0,0,1070,402,1,0,0,0,1071,1072, + 5,2991,0,0,1072,1073,5,3010,0,0,1073,404,1,0,0,0,1074,1075,5,2991, + 0,0,1075,1076,5,3015,0,0,1076,406,1,0,0,0,1077,1078,5,2991,0,0,1078, + 1079,5,3019,0,0,1079,408,1,0,0,0,1080,1081,5,2991,0,0,1081,1082, + 5,3020,0,0,1082,410,1,0,0,0,1083,1084,5,2992,0,0,1084,1085,5,3006, + 0,0,1085,412,1,0,0,0,1086,1087,5,2992,0,0,1087,1088,5,3008,0,0,1088, + 414,1,0,0,0,1089,1090,5,2992,0,0,1090,1091,5,3010,0,0,1091,416,1, + 0,0,0,1092,1093,5,2992,0,0,1093,1094,5,3015,0,0,1094,418,1,0,0,0, + 1095,1096,5,2992,0,0,1096,1097,5,3019,0,0,1097,420,1,0,0,0,1098, + 1099,5,2992,0,0,1099,1100,5,3020,0,0,1100,422,1,0,0,0,1101,1102, + 5,2994,0,0,1102,1103,5,3006,0,0,1103,424,1,0,0,0,1104,1105,5,2994, + 0,0,1105,1106,5,3008,0,0,1106,426,1,0,0,0,1107,1108,5,2994,0,0,1108, + 1109,5,3010,0,0,1109,428,1,0,0,0,1110,1111,5,2994,0,0,1111,1112, + 5,3015,0,0,1112,430,1,0,0,0,1113,1114,5,2994,0,0,1114,1115,5,3019, + 0,0,1115,432,1,0,0,0,1116,1117,5,2994,0,0,1117,1118,5,3020,0,0,1118, + 434,1,0,0,0,1119,1120,5,2997,0,0,1120,1121,5,3006,0,0,1121,436,1, + 0,0,0,1122,1123,5,2997,0,0,1123,1124,5,3008,0,0,1124,438,1,0,0,0, + 1125,1126,5,2997,0,0,1126,1127,5,3010,0,0,1127,440,1,0,0,0,1128, + 1129,5,2997,0,0,1129,1130,5,3015,0,0,1130,442,1,0,0,0,1131,1132, + 5,2997,0,0,1132,1133,5,3019,0,0,1133,444,1,0,0,0,1134,1135,5,2997, + 0,0,1135,1136,5,3020,0,0,1136,446,1,0,0,0,1137,1138,5,2996,0,0,1138, + 1139,5,3006,0,0,1139,448,1,0,0,0,1140,1141,5,2996,0,0,1141,1142, + 5,3008,0,0,1142,450,1,0,0,0,1143,1144,5,2996,0,0,1144,1145,5,3010, + 0,0,1145,452,1,0,0,0,1146,1147,5,2996,0,0,1147,1148,5,3015,0,0,1148, + 454,1,0,0,0,1149,1150,5,2996,0,0,1150,1151,5,3019,0,0,1151,456,1, + 0,0,0,1152,1153,5,2996,0,0,1153,1154,5,3020,0,0,1154,458,1,0,0,0, + 1155,1156,5,2995,0,0,1156,1157,5,3006,0,0,1157,460,1,0,0,0,1158, + 1159,5,2995,0,0,1159,1160,5,3008,0,0,1160,462,1,0,0,0,1161,1162, + 5,2995,0,0,1162,1163,5,3010,0,0,1163,464,1,0,0,0,1164,1165,5,2995, + 0,0,1165,1166,5,3015,0,0,1166,466,1,0,0,0,1167,1168,5,2995,0,0,1168, + 1169,5,3019,0,0,1169,468,1,0,0,0,1170,1171,5,2995,0,0,1171,1172, + 5,3020,0,0,1172,470,1,0,0,0,1173,1174,5,2993,0,0,1174,1175,5,3006, + 0,0,1175,472,1,0,0,0,1176,1177,5,2993,0,0,1177,1178,5,3008,0,0,1178, + 474,1,0,0,0,1179,1180,5,2993,0,0,1180,1181,5,3010,0,0,1181,476,1, + 0,0,0,1182,1183,5,2993,0,0,1183,1184,5,3015,0,0,1184,478,1,0,0,0, + 1185,1186,5,2993,0,0,1186,1187,5,3019,0,0,1187,480,1,0,0,0,1188, + 1189,5,2993,0,0,1189,1190,5,3020,0,0,1190,482,1,0,0,0,1191,1192, + 5,2985,0,0,1192,1193,5,3006,0,0,1193,484,1,0,0,0,1194,1195,5,2985, + 0,0,1195,1196,5,3008,0,0,1196,486,1,0,0,0,1197,1198,5,2985,0,0,1198, + 1199,5,3010,0,0,1199,488,1,0,0,0,1200,1201,5,2985,0,0,1201,1202, + 5,3015,0,0,1202,490,1,0,0,0,1203,1204,5,2985,0,0,1204,1205,5,3019, + 0,0,1205,492,1,0,0,0,1206,1207,5,2985,0,0,1207,1208,5,3020,0,0,1208, + 494,1,0,0,0,1209,1211,7,0,0,0,1210,1209,1,0,0,0,1211,1212,1,0,0, + 0,1212,1210,1,0,0,0,1212,1213,1,0,0,0,1213,496,1,0,0,0,1214,1216, + 5,13,0,0,1215,1214,1,0,0,0,1215,1216,1,0,0,0,1216,1217,1,0,0,0,1217, + 1218,5,10,0,0,1218,498,1,0,0,0,3,0,1212,1215,0 ] class சீர்Lexer(Lexer): @@ -713,6 +717,7 @@ class சீர்Lexer(Lexer): T__245 = 246 T__246 = 247 I = 248 + NL = 249 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] @@ -725,6 +730,12 @@ class சீர்Lexer(Lexer): "'\\u0BA8\\u0BCD'", "'\\u0BAE\\u0BCD'", "'\\u0BA9\\u0BCD'", "'\\u0BAF\\u0BCD'", "'\\u0BB0\\u0BCD'", "'\\u0BB2\\u0BCD'", "'\\u0BB5\\u0BCD'", "'\\u0BB4\\u0BCD'", "'\\u0BB3\\u0BCD'", + "'\\u0B83'", "'\\u0B95\\u0BC8'", "'\\u0B99\\u0BC8'", "'\\u0B9A\\u0BC8'", + "'\\u0B9E\\u0BC8'", "'\\u0B9F\\u0BC8'", "'\\u0BA3\\u0BC8'", + "'\\u0BA4\\u0BC8'", "'\\u0BA8\\u0BC8'", "'\\u0BAA\\u0BC8'", + "'\\u0BAE\\u0BC8'", "'\\u0BAF\\u0BC8'", "'\\u0BB0\\u0BC8'", + "'\\u0BB2\\u0BC8'", "'\\u0BB5\\u0BC8'", "'\\u0BB4\\u0BC8'", + "'\\u0BB3\\u0BC8'", "'\\u0BB1\\u0BC8'", "'\\u0BA9\\u0BC8'", "'\\u0B85'", "'\\u0B87'", "'\\u0B89'", "'\\u0B8E'", "'\\u0B92'", "'\\u0B95'", "'\\u0B95\\u0BBF'", "'\\u0B95\\u0BC1'", "'\\u0B95\\u0BC6'", "'\\u0B95\\u0BCA'", "'\\u0B99'", "'\\u0B99\\u0BBF'", "'\\u0B99\\u0BC1'", @@ -751,52 +762,46 @@ class சீர்Lexer(Lexer): "'\\u0BB1\\u0BC6'", "'\\u0BB1\\u0BCA'", "'\\u0BA9'", "'\\u0BA9\\u0BBF'", "'\\u0BA9\\u0BC1'", "'\\u0BA9\\u0BC6'", "'\\u0BA9\\u0BCA'", "'\\u0B86'", "'\\u0B88'", "'\\u0B8A'", "'\\u0B8F'", "'\\u0B90'", - "'\\u0B93'", "'\\u0B92\\u0BB3'", "'\\u0B95\\u0BBE'", "'\\u0B95\\u0BC0'", - "'\\u0B95\\u0BC2'", "'\\u0B95\\u0BC7'", "'\\u0B95\\u0BC8'", - "'\\u0B95\\u0BCB'", "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", - "'\\u0B99\\u0BC0'", "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", - "'\\u0B99\\u0BC8'", "'\\u0B99\\u0BCB'", "'\\u0B99\\u0BCC'", - "'\\u0B9A\\u0BBE'", "'\\u0B9A\\u0BC0'", "'\\u0B9A\\u0BC2'", - "'\\u0B9A\\u0BC7'", "'\\u0B9A\\u0BC8'", "'\\u0B9A\\u0BCB'", + "'\\u0B93'", "'\\u0B94'", "'\\u0B95\\u0BBE'", "'\\u0B95\\u0BC0'", + "'\\u0B95\\u0BC2'", "'\\u0B95\\u0BC7'", "'\\u0B95\\u0BCB'", + "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", "'\\u0B99\\u0BC0'", + "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", "'\\u0B99\\u0BCB'", + "'\\u0B99\\u0BCC'", "'\\u0B9A\\u0BBE'", "'\\u0B9A\\u0BC0'", + "'\\u0B9A\\u0BC2'", "'\\u0B9A\\u0BC7'", "'\\u0B9A\\u0BCB'", "'\\u0B9A\\u0BCC'", "'\\u0B9E\\u0BBE'", "'\\u0B9E\\u0BC0'", - "'\\u0B9E\\u0BC2'", "'\\u0B9E\\u0BC7'", "'\\u0B9E\\u0BC8'", - "'\\u0B9E\\u0BCB'", "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", - "'\\u0B9F\\u0BC0'", "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", - "'\\u0B9F\\u0BC8'", "'\\u0B9F\\u0BCB'", "'\\u0B9F\\u0BCC'", - "'\\u0BA3\\u0BBE'", "'\\u0BA3\\u0BC0'", "'\\u0BA3\\u0BC2'", - "'\\u0BA3\\u0BC7'", "'\\u0BA3\\u0BC8'", "'\\u0BA3\\u0BCB'", + "'\\u0B9E\\u0BC2'", "'\\u0B9E\\u0BC7'", "'\\u0B9E\\u0BCB'", + "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", "'\\u0B9F\\u0BC0'", + "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", "'\\u0B9F\\u0BCB'", + "'\\u0B9F\\u0BCC'", "'\\u0BA3\\u0BBE'", "'\\u0BA3\\u0BC0'", + "'\\u0BA3\\u0BC2'", "'\\u0BA3\\u0BC7'", "'\\u0BA3\\u0BCB'", "'\\u0BA3\\u0BCC'", "'\\u0BA4\\u0BBE'", "'\\u0BA4\\u0BC0'", - "'\\u0BA4\\u0BC2'", "'\\u0BA4\\u0BC7'", "'\\u0BA4\\u0BC8'", - "'\\u0BA4\\u0BCB'", "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", - "'\\u0BA8\\u0BC0'", "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", - "'\\u0BA8\\u0BC8'", "'\\u0BA8\\u0BCB'", "'\\u0BA8\\u0BCC'", - "'\\u0BAA\\u0BBE'", "'\\u0BAA\\u0BC0'", "'\\u0BAA\\u0BC2'", - "'\\u0BAA\\u0BC7'", "'\\u0BAA\\u0BC8'", "'\\u0BAA\\u0BCB'", + "'\\u0BA4\\u0BC2'", "'\\u0BA4\\u0BC7'", "'\\u0BA4\\u0BCB'", + "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", "'\\u0BA8\\u0BC0'", + "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", "'\\u0BA8\\u0BCB'", + "'\\u0BA8\\u0BCC'", "'\\u0BAA\\u0BBE'", "'\\u0BAA\\u0BC0'", + "'\\u0BAA\\u0BC2'", "'\\u0BAA\\u0BC7'", "'\\u0BAA\\u0BCB'", "'\\u0BAA\\u0BCC'", "'\\u0BAE\\u0BBE'", "'\\u0BAE\\u0BC0'", - "'\\u0BAE\\u0BC2'", "'\\u0BAE\\u0BC7'", "'\\u0BAE\\u0BC8'", - "'\\u0BAE\\u0BCB'", "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", - "'\\u0BAF\\u0BC0'", "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", - "'\\u0BAF\\u0BC8'", "'\\u0BAF\\u0BCB'", "'\\u0BAF\\u0BCC'", - "'\\u0BB0\\u0BBE'", "'\\u0BB0\\u0BC0'", "'\\u0BB0\\u0BC2'", - "'\\u0BB0\\u0BC7'", "'\\u0BB0\\u0BC8'", "'\\u0BB0\\u0BCB'", + "'\\u0BAE\\u0BC2'", "'\\u0BAE\\u0BC7'", "'\\u0BAE\\u0BCB'", + "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", "'\\u0BAF\\u0BC0'", + "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", "'\\u0BAF\\u0BCB'", + "'\\u0BAF\\u0BCC'", "'\\u0BB0\\u0BBE'", "'\\u0BB0\\u0BC0'", + "'\\u0BB0\\u0BC2'", "'\\u0BB0\\u0BC7'", "'\\u0BB0\\u0BCB'", "'\\u0BB0\\u0BCC'", "'\\u0BB2\\u0BBE'", "'\\u0BB2\\u0BC0'", - "'\\u0BB2\\u0BC2'", "'\\u0BB2\\u0BC7'", "'\\u0BB2\\u0BC8'", - "'\\u0BB2\\u0BCB'", "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", - "'\\u0BB5\\u0BC0'", "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", - "'\\u0BB5\\u0BC8'", "'\\u0BB5\\u0BCB'", "'\\u0BB5\\u0BCC'", - "'\\u0BB4\\u0BBE'", "'\\u0BB4\\u0BC0'", "'\\u0BB4\\u0BC2'", - "'\\u0BB4\\u0BC7'", "'\\u0BB4\\u0BC8'", "'\\u0BB4\\u0BCB'", + "'\\u0BB2\\u0BC2'", "'\\u0BB2\\u0BC7'", "'\\u0BB2\\u0BCB'", + "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", "'\\u0BB5\\u0BC0'", + "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", "'\\u0BB5\\u0BCB'", + "'\\u0BB5\\u0BCC'", "'\\u0BB4\\u0BBE'", "'\\u0BB4\\u0BC0'", + "'\\u0BB4\\u0BC2'", "'\\u0BB4\\u0BC7'", "'\\u0BB4\\u0BCB'", "'\\u0BB4\\u0BCC'", "'\\u0BB3\\u0BBE'", "'\\u0BB3\\u0BC0'", - "'\\u0BB3\\u0BC2'", "'\\u0BB3\\u0BC7'", "'\\u0BB3\\u0BC8'", - "'\\u0BB3\\u0BCB'", "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", - "'\\u0BB1\\u0BC0'", "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", - "'\\u0BB1\\u0BC8'", "'\\u0BB1\\u0BCB'", "'\\u0BB1\\u0BCC'", - "'\\u0BA9\\u0BBE'", "'\\u0BA9\\u0BC0'", "'\\u0BA9\\u0BC2'", - "'\\u0BA9\\u0BC7'", "'\\u0BA9\\u0BC8'", "'\\u0BA9\\u0BCB'", - "'\\u0BA9\\u0BCC'", "'\\u0B83'", "' '" ] + "'\\u0BB3\\u0BC2'", "'\\u0BB3\\u0BC7'", "'\\u0BB3\\u0BCB'", + "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", "'\\u0BB1\\u0BC0'", + "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", "'\\u0BB1\\u0BCB'", + "'\\u0BB1\\u0BCC'", "'\\u0BA9\\u0BBE'", "'\\u0BA9\\u0BC0'", + "'\\u0BA9\\u0BC2'", "'\\u0BA9\\u0BC7'", "'\\u0BA9\\u0BCB'", + "'\\u0BA9\\u0BCC'" ] symbolicNames = [ "", - "I" ] + "I", "NL" ] ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", @@ -838,7 +843,8 @@ class சீர்Lexer(Lexer): "T__224", "T__225", "T__226", "T__227", "T__228", "T__229", "T__230", "T__231", "T__232", "T__233", "T__234", "T__235", "T__236", "T__237", "T__238", "T__239", "T__240", "T__241", - "T__242", "T__243", "T__244", "T__245", "T__246", "I" ] + "T__242", "T__243", "T__244", "T__245", "T__246", "I", + "NL" ] grammarFileName = "சீர்.g4" diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.tokens" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.tokens" index b3fa9c6..c562079 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.tokens" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Lexer.tokens" @@ -246,6 +246,7 @@ T__244=245 T__245=246 T__246=247 I=248 +NL=249 'க்'=1 'ச்'=2 'ட்'=3 @@ -264,233 +265,232 @@ I=248 'வ்'=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 -'ஐ'=118 -'ஓ'=119 -'ஒள'=120 -'கா'=121 -'கீ'=122 -'கூ'=123 -'கே'=124 -'கை'=125 -'கோ'=126 -'கௌ'=127 -'ஙா'=128 -'ஙீ'=129 -'ஙூ'=130 -'ஙே'=131 -'ஙை'=132 -'ஙோ'=133 -'ஙௌ'=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 -'ணௌ'=162 -'தா'=163 -'தீ'=164 -'தூ'=165 -'தே'=166 -'தை'=167 -'தோ'=168 -'தௌ'=169 -'நா'=170 -'நீ'=171 -'நூ'=172 -'நே'=173 -'நை'=174 -'நோ'=175 -'நௌ'=176 -'பா'=177 -'பீ'=178 -'பூ'=179 -'பே'=180 -'பை'=181 -'போ'=182 -'பௌ'=183 -'மா'=184 -'மீ'=185 -'மூ'=186 -'மே'=187 -'மை'=188 -'மோ'=189 -'மௌ'=190 -'யா'=191 -'யீ'=192 -'யூ'=193 -'யே'=194 -'யை'=195 -'யோ'=196 -'யௌ'=197 -'ரா'=198 -'ரீ'=199 -'ரூ'=200 -'ரே'=201 -'ரை'=202 -'ரோ'=203 -'ரௌ'=204 -'லா'=205 -'லீ'=206 -'லூ'=207 -'லே'=208 -'லை'=209 -'லோ'=210 -'லௌ'=211 -'வா'=212 -'வீ'=213 -'வூ'=214 -'வே'=215 -'வை'=216 -'வோ'=217 -'வௌ'=218 -'ழா'=219 -'ழீ'=220 -'ழூ'=221 -'ழே'=222 -'ழை'=223 -'ழோ'=224 -'ழௌ'=225 -'ளா'=226 -'ளீ'=227 -'ளூ'=228 -'ளே'=229 -'ளை'=230 -'ளோ'=231 -'ளௌ'=232 -'றா'=233 -'றீ'=234 -'றூ'=235 -'றே'=236 -'றை'=237 -'றோ'=238 -'றௌ'=239 -'னா'=240 -'னீ'=241 -'னூ'=242 -'னே'=243 -'னை'=244 -'னோ'=245 -'னௌ'=246 -'ஃ'=247 -' '=248 +'ஃ'=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 +'ள'=118 +'ளி'=119 +'ளு'=120 +'ளெ'=121 +'ளொ'=122 +'ற'=123 +'றி'=124 +'று'=125 +'றெ'=126 +'றொ'=127 +'ன'=128 +'னி'=129 +'னு'=130 +'னெ'=131 +'னொ'=132 +'ஆ'=133 +'ஈ'=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 +'ஞோ'=162 +'ஞௌ'=163 +'டா'=164 +'டீ'=165 +'டூ'=166 +'டே'=167 +'டோ'=168 +'டௌ'=169 +'ணா'=170 +'ணீ'=171 +'ணூ'=172 +'ணே'=173 +'ணோ'=174 +'ணௌ'=175 +'தா'=176 +'தீ'=177 +'தூ'=178 +'தே'=179 +'தோ'=180 +'தௌ'=181 +'நா'=182 +'நீ'=183 +'நூ'=184 +'நே'=185 +'நோ'=186 +'நௌ'=187 +'பா'=188 +'பீ'=189 +'பூ'=190 +'பே'=191 +'போ'=192 +'பௌ'=193 +'மா'=194 +'மீ'=195 +'மூ'=196 +'மே'=197 +'மோ'=198 +'மௌ'=199 +'யா'=200 +'யீ'=201 +'யூ'=202 +'யே'=203 +'யோ'=204 +'யௌ'=205 +'ரா'=206 +'ரீ'=207 +'ரூ'=208 +'ரே'=209 +'ரோ'=210 +'ரௌ'=211 +'லா'=212 +'லீ'=213 +'லூ'=214 +'லே'=215 +'லோ'=216 +'லௌ'=217 +'வா'=218 +'வீ'=219 +'வூ'=220 +'வே'=221 +'வோ'=222 +'வௌ'=223 +'ழா'=224 +'ழீ'=225 +'ழூ'=226 +'ழே'=227 +'ழோ'=228 +'ழௌ'=229 +'ளா'=230 +'ளீ'=231 +'ளூ'=232 +'ளே'=233 +'ளோ'=234 +'ளௌ'=235 +'றா'=236 +'றீ'=237 +'றூ'=238 +'றே'=239 +'றோ'=240 +'றௌ'=241 +'னா'=242 +'னீ'=243 +'னூ'=244 +'னே'=245 +'னோ'=246 +'னௌ'=247 diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Listener.py" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Listener.py" index cb830d0..1372483 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Listener.py" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Listener.py" @@ -350,6 +350,15 @@ def exitநேர்(self, ctx:சீர்Parser.நேர்Context): pass + # Enter a parse tree produced by சீர்Parser#முதல்நிரை. + def enterமுதல்நிரை(self, ctx:சீர்Parser.முதல்நிரைContext): + pass + + # Exit a parse tree produced by சீர்Parser#முதல்நிரை. + def exitமுதல்நிரை(self, ctx:சீர்Parser.முதல்நிரைContext): + pass + + # Enter a parse tree produced by சீர்Parser#நிரை. def enterநிரை(self, ctx:சீர்Parser.நிரைContext): pass @@ -368,6 +377,24 @@ def exitஒற்று(self, ctx:சீர்Parser.ஒற்றுContext): pass + # Enter a parse tree produced by சீர்Parser#ஆய்தம். + def enterஆய்தம்(self, ctx:சீர்Parser.ஆய்தம்Context): + pass + + # Exit a parse tree produced by சீர்Parser#ஆய்தம். + def exitஆய்தம்(self, ctx:சீர்Parser.ஆய்தம்Context): + pass + + + # Enter a parse tree produced by சீர்Parser#ஐகாரக்குறுக்கம். + def enterஐகாரக்குறுக்கம்(self, ctx:சீர்Parser.ஐகாரக்குறுக்கம்Context): + pass + + # Exit a parse tree produced by சீர்Parser#ஐகாரக்குறுக்கம். + def exitஐகாரக்குறுக்கம்(self, ctx:சீர்Parser.ஐகாரக்குறுக்கம்Context): + pass + + # Enter a parse tree produced by சீர்Parser#குறில். def enterகுறில்(self, ctx:சீர்Parser.குறில்Context): pass @@ -386,14 +413,5 @@ def exitநெடில்(self, ctx:சீர்Parser.நெடில்Contex pass - # Enter a parse tree produced by சீர்Parser#ஆய்தம். - def enterஆய்தம்(self, ctx:சீர்Parser.ஆய்தம்Context): - pass - - # Exit a parse tree produced by சீர்Parser#ஆய்தம். - def exitஆய்தம்(self, ctx:சீர்Parser.ஆய்தம்Context): - pass - - del சீர்Parser \ No newline at end of file diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Parser.py" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Parser.py" index 59bd11c..dd232b4 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Parser.py" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\232\340\257\200\340\256\260\340\257\215Parser.py" @@ -10,110 +10,110 @@ def serializedATN(): return [ - 4,1,248,294,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, + 4,1,249,296,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,1,0,1,0,1,0,3,0,90,8,0,1,1,1,1, - 1,1,1,1,3,1,96,8,1,1,2,1,2,1,2,1,2,3,2,102,8,2,1,3,1,3,3,3,106,8, - 3,1,4,1,4,3,4,110,8,4,1,5,1,5,1,5,1,5,3,5,116,8,5,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,134,8,6,1, - 7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,144,8,7,1,8,1,8,1,8,1,8,3,8,150, - 8,8,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,13, - 1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1,17,1,17, - 1,17,1,18,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,20,1,21,1,21,1,21, - 1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1,26, - 1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,28,1,29,1,29,1,29,1,30,1,30, - 1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,33,1,33,1,33,1,34,1,34,1,34, - 1,35,1,35,1,35,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,4,37,241, - 8,37,11,37,12,37,242,3,37,245,8,37,1,37,1,37,1,37,4,37,250,8,37, - 11,37,12,37,251,3,37,254,8,37,3,37,256,8,37,1,38,1,38,1,38,1,38, - 1,38,1,38,1,38,1,38,1,38,1,38,4,38,268,8,38,11,38,12,38,269,3,38, - 272,8,38,1,38,1,38,1,38,1,38,4,38,278,8,38,11,38,12,38,279,3,38, - 282,8,38,3,38,284,8,38,1,39,1,39,1,40,1,40,1,41,1,41,1,42,1,42,1, - 42,0,0,43,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,0,3,1,0,1,18,1,0,19,113,1,0,114,246,302,0,89,1,0,0,0,2,95,1,0, - 0,0,4,101,1,0,0,0,6,105,1,0,0,0,8,109,1,0,0,0,10,115,1,0,0,0,12, - 133,1,0,0,0,14,143,1,0,0,0,16,149,1,0,0,0,18,151,1,0,0,0,20,154, - 1,0,0,0,22,157,1,0,0,0,24,160,1,0,0,0,26,163,1,0,0,0,28,166,1,0, - 0,0,30,169,1,0,0,0,32,172,1,0,0,0,34,175,1,0,0,0,36,178,1,0,0,0, - 38,181,1,0,0,0,40,184,1,0,0,0,42,187,1,0,0,0,44,190,1,0,0,0,46,193, - 1,0,0,0,48,196,1,0,0,0,50,199,1,0,0,0,52,202,1,0,0,0,54,205,1,0, - 0,0,56,208,1,0,0,0,58,211,1,0,0,0,60,214,1,0,0,0,62,217,1,0,0,0, - 64,220,1,0,0,0,66,223,1,0,0,0,68,226,1,0,0,0,70,229,1,0,0,0,72,232, - 1,0,0,0,74,255,1,0,0,0,76,283,1,0,0,0,78,285,1,0,0,0,80,287,1,0, - 0,0,82,289,1,0,0,0,84,291,1,0,0,0,86,90,3,16,8,0,87,90,3,14,7,0, - 88,90,3,12,6,0,89,86,1,0,0,0,89,87,1,0,0,0,89,88,1,0,0,0,90,1,1, - 0,0,0,91,96,3,52,26,0,92,96,3,56,28,0,93,96,3,60,30,0,94,96,3,64, - 32,0,95,91,1,0,0,0,95,92,1,0,0,0,95,93,1,0,0,0,95,94,1,0,0,0,96, - 3,1,0,0,0,97,102,3,66,33,0,98,102,3,68,34,0,99,102,3,70,35,0,100, - 102,3,72,36,0,101,97,1,0,0,0,101,98,1,0,0,0,101,99,1,0,0,0,101,100, - 1,0,0,0,102,5,1,0,0,0,103,106,3,66,33,0,104,106,3,68,34,0,105,103, - 1,0,0,0,105,104,1,0,0,0,106,7,1,0,0,0,107,110,3,70,35,0,108,110, - 3,72,36,0,109,107,1,0,0,0,109,108,1,0,0,0,110,9,1,0,0,0,111,116, - 3,50,25,0,112,116,3,54,27,0,113,116,3,58,29,0,114,116,3,62,31,0, - 115,111,1,0,0,0,115,112,1,0,0,0,115,113,1,0,0,0,115,114,1,0,0,0, - 116,11,1,0,0,0,117,134,3,18,9,0,118,134,3,20,10,0,119,134,3,22,11, - 0,120,134,3,24,12,0,121,134,3,26,13,0,122,134,3,28,14,0,123,134, - 3,30,15,0,124,134,3,32,16,0,125,134,3,34,17,0,126,134,3,36,18,0, - 127,134,3,38,19,0,128,134,3,40,20,0,129,134,3,42,21,0,130,134,3, - 44,22,0,131,134,3,46,23,0,132,134,3,48,24,0,133,117,1,0,0,0,133, - 118,1,0,0,0,133,119,1,0,0,0,133,120,1,0,0,0,133,121,1,0,0,0,133, - 122,1,0,0,0,133,123,1,0,0,0,133,124,1,0,0,0,133,125,1,0,0,0,133, - 126,1,0,0,0,133,127,1,0,0,0,133,128,1,0,0,0,133,129,1,0,0,0,133, - 130,1,0,0,0,133,131,1,0,0,0,133,132,1,0,0,0,134,13,1,0,0,0,135,144, - 3,50,25,0,136,144,3,52,26,0,137,144,3,54,27,0,138,144,3,56,28,0, - 139,144,3,58,29,0,140,144,3,60,30,0,141,144,3,62,31,0,142,144,3, - 64,32,0,143,135,1,0,0,0,143,136,1,0,0,0,143,137,1,0,0,0,143,138, - 1,0,0,0,143,139,1,0,0,0,143,140,1,0,0,0,143,141,1,0,0,0,143,142, - 1,0,0,0,144,15,1,0,0,0,145,150,3,66,33,0,146,150,3,68,34,0,147,150, - 3,70,35,0,148,150,3,72,36,0,149,145,1,0,0,0,149,146,1,0,0,0,149, - 147,1,0,0,0,149,148,1,0,0,0,150,17,1,0,0,0,151,152,3,50,25,0,152, - 153,3,74,37,0,153,19,1,0,0,0,154,155,3,50,25,0,155,156,3,76,38,0, - 156,21,1,0,0,0,157,158,3,52,26,0,158,159,3,74,37,0,159,23,1,0,0, - 0,160,161,3,52,26,0,161,162,3,76,38,0,162,25,1,0,0,0,163,164,3,54, - 27,0,164,165,3,74,37,0,165,27,1,0,0,0,166,167,3,54,27,0,167,168, - 3,76,38,0,168,29,1,0,0,0,169,170,3,56,28,0,170,171,3,74,37,0,171, - 31,1,0,0,0,172,173,3,56,28,0,173,174,3,76,38,0,174,33,1,0,0,0,175, - 176,3,58,29,0,176,177,3,74,37,0,177,35,1,0,0,0,178,179,3,58,29,0, - 179,180,3,76,38,0,180,37,1,0,0,0,181,182,3,60,30,0,182,183,3,74, - 37,0,183,39,1,0,0,0,184,185,3,60,30,0,185,186,3,76,38,0,186,41,1, - 0,0,0,187,188,3,62,31,0,188,189,3,74,37,0,189,43,1,0,0,0,190,191, - 3,62,31,0,191,192,3,76,38,0,192,45,1,0,0,0,193,194,3,64,32,0,194, - 195,3,74,37,0,195,47,1,0,0,0,196,197,3,64,32,0,197,198,3,76,38,0, - 198,49,1,0,0,0,199,200,3,66,33,0,200,201,3,74,37,0,201,51,1,0,0, - 0,202,203,3,66,33,0,203,204,3,76,38,0,204,53,1,0,0,0,205,206,3,68, - 34,0,206,207,3,74,37,0,207,55,1,0,0,0,208,209,3,68,34,0,209,210, - 3,76,38,0,210,57,1,0,0,0,211,212,3,70,35,0,212,213,3,74,37,0,213, - 59,1,0,0,0,214,215,3,70,35,0,215,216,3,76,38,0,216,61,1,0,0,0,217, - 218,3,72,36,0,218,219,3,74,37,0,219,63,1,0,0,0,220,221,3,72,36,0, - 221,222,3,76,38,0,222,65,1,0,0,0,223,224,3,74,37,0,224,225,3,74, - 37,0,225,67,1,0,0,0,226,227,3,76,38,0,227,228,3,74,37,0,228,69,1, - 0,0,0,229,230,3,76,38,0,230,231,3,76,38,0,231,71,1,0,0,0,232,233, - 3,74,37,0,233,234,3,76,38,0,234,73,1,0,0,0,235,256,3,80,40,0,236, - 256,3,82,41,0,237,244,3,80,40,0,238,245,3,84,42,0,239,241,3,78,39, - 0,240,239,1,0,0,0,241,242,1,0,0,0,242,240,1,0,0,0,242,243,1,0,0, - 0,243,245,1,0,0,0,244,238,1,0,0,0,244,240,1,0,0,0,245,256,1,0,0, - 0,246,253,3,82,41,0,247,254,3,84,42,0,248,250,3,78,39,0,249,248, - 1,0,0,0,250,251,1,0,0,0,251,249,1,0,0,0,251,252,1,0,0,0,252,254, - 1,0,0,0,253,247,1,0,0,0,253,249,1,0,0,0,254,256,1,0,0,0,255,235, - 1,0,0,0,255,236,1,0,0,0,255,237,1,0,0,0,255,246,1,0,0,0,256,75,1, - 0,0,0,257,258,3,80,40,0,258,259,3,80,40,0,259,284,1,0,0,0,260,261, - 3,80,40,0,261,262,3,82,41,0,262,284,1,0,0,0,263,264,3,80,40,0,264, - 271,3,80,40,0,265,272,3,84,42,0,266,268,3,78,39,0,267,266,1,0,0, - 0,268,269,1,0,0,0,269,267,1,0,0,0,269,270,1,0,0,0,270,272,1,0,0, - 0,271,265,1,0,0,0,271,267,1,0,0,0,272,284,1,0,0,0,273,274,3,80,40, - 0,274,281,3,82,41,0,275,282,3,84,42,0,276,278,3,78,39,0,277,276, - 1,0,0,0,278,279,1,0,0,0,279,277,1,0,0,0,279,280,1,0,0,0,280,282, - 1,0,0,0,281,275,1,0,0,0,281,277,1,0,0,0,282,284,1,0,0,0,283,257, - 1,0,0,0,283,260,1,0,0,0,283,263,1,0,0,0,283,273,1,0,0,0,284,77,1, - 0,0,0,285,286,7,0,0,0,286,79,1,0,0,0,287,288,7,1,0,0,288,81,1,0, - 0,0,289,290,7,2,0,0,290,83,1,0,0,0,291,292,5,247,0,0,292,85,1,0, - 0,0,19,89,95,101,105,109,115,133,143,149,242,244,251,253,255,269, - 271,279,281,283 + 39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,1,0,1,0,1,0, + 3,0,94,8,0,1,0,1,0,1,1,1,1,1,1,1,1,3,1,102,8,1,1,2,1,2,1,2,1,2,3, + 2,108,8,2,1,3,1,3,3,3,112,8,3,1,4,1,4,3,4,116,8,4,1,5,1,5,1,5,1, + 5,3,5,122,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1, + 6,1,6,1,6,1,6,3,6,140,8,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,150, + 8,7,1,8,1,8,1,8,1,8,3,8,156,8,8,1,9,1,9,1,9,1,10,1,10,1,10,1,11, + 1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15, + 1,15,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19, + 1,20,1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,24, + 1,24,1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28, + 1,28,1,29,1,29,1,29,1,30,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1,32, + 1,33,1,33,1,33,1,34,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,37, + 1,37,1,37,3,37,245,8,37,1,37,1,37,4,37,249,8,37,11,37,12,37,250, + 3,37,253,8,37,1,38,1,38,1,38,1,38,3,38,259,8,38,1,38,1,38,4,38,263, + 8,38,11,38,12,38,264,3,38,267,8,38,1,39,1,39,3,39,271,8,39,1,39, + 1,39,1,39,3,39,276,8,39,1,39,1,39,4,39,280,8,39,11,39,12,39,281, + 3,39,284,8,39,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44, + 1,44,0,0,45,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,0,4,1,0,1,18,1,0,20,37,1,0,38,132,1,0,133,247,304,0, + 93,1,0,0,0,2,101,1,0,0,0,4,107,1,0,0,0,6,111,1,0,0,0,8,115,1,0,0, + 0,10,121,1,0,0,0,12,139,1,0,0,0,14,149,1,0,0,0,16,155,1,0,0,0,18, + 157,1,0,0,0,20,160,1,0,0,0,22,163,1,0,0,0,24,166,1,0,0,0,26,169, + 1,0,0,0,28,172,1,0,0,0,30,175,1,0,0,0,32,178,1,0,0,0,34,181,1,0, + 0,0,36,184,1,0,0,0,38,187,1,0,0,0,40,190,1,0,0,0,42,193,1,0,0,0, + 44,196,1,0,0,0,46,199,1,0,0,0,48,202,1,0,0,0,50,205,1,0,0,0,52,208, + 1,0,0,0,54,211,1,0,0,0,56,214,1,0,0,0,58,217,1,0,0,0,60,220,1,0, + 0,0,62,223,1,0,0,0,64,226,1,0,0,0,66,229,1,0,0,0,68,232,1,0,0,0, + 70,235,1,0,0,0,72,238,1,0,0,0,74,244,1,0,0,0,76,254,1,0,0,0,78,270, + 1,0,0,0,80,285,1,0,0,0,82,287,1,0,0,0,84,289,1,0,0,0,86,291,1,0, + 0,0,88,293,1,0,0,0,90,94,3,16,8,0,91,94,3,14,7,0,92,94,3,12,6,0, + 93,90,1,0,0,0,93,91,1,0,0,0,93,92,1,0,0,0,94,95,1,0,0,0,95,96,5, + 0,0,1,96,1,1,0,0,0,97,102,3,52,26,0,98,102,3,56,28,0,99,102,3,60, + 30,0,100,102,3,64,32,0,101,97,1,0,0,0,101,98,1,0,0,0,101,99,1,0, + 0,0,101,100,1,0,0,0,102,3,1,0,0,0,103,108,3,66,33,0,104,108,3,68, + 34,0,105,108,3,70,35,0,106,108,3,72,36,0,107,103,1,0,0,0,107,104, + 1,0,0,0,107,105,1,0,0,0,107,106,1,0,0,0,108,5,1,0,0,0,109,112,3, + 66,33,0,110,112,3,68,34,0,111,109,1,0,0,0,111,110,1,0,0,0,112,7, + 1,0,0,0,113,116,3,70,35,0,114,116,3,72,36,0,115,113,1,0,0,0,115, + 114,1,0,0,0,116,9,1,0,0,0,117,122,3,50,25,0,118,122,3,54,27,0,119, + 122,3,58,29,0,120,122,3,62,31,0,121,117,1,0,0,0,121,118,1,0,0,0, + 121,119,1,0,0,0,121,120,1,0,0,0,122,11,1,0,0,0,123,140,3,18,9,0, + 124,140,3,26,13,0,125,140,3,34,17,0,126,140,3,42,21,0,127,140,3, + 22,11,0,128,140,3,30,15,0,129,140,3,38,19,0,130,140,3,46,23,0,131, + 140,3,20,10,0,132,140,3,28,14,0,133,140,3,36,18,0,134,140,3,44,22, + 0,135,140,3,24,12,0,136,140,3,32,16,0,137,140,3,40,20,0,138,140, + 3,48,24,0,139,123,1,0,0,0,139,124,1,0,0,0,139,125,1,0,0,0,139,126, + 1,0,0,0,139,127,1,0,0,0,139,128,1,0,0,0,139,129,1,0,0,0,139,130, + 1,0,0,0,139,131,1,0,0,0,139,132,1,0,0,0,139,133,1,0,0,0,139,134, + 1,0,0,0,139,135,1,0,0,0,139,136,1,0,0,0,139,137,1,0,0,0,139,138, + 1,0,0,0,140,13,1,0,0,0,141,150,3,50,25,0,142,150,3,54,27,0,143,150, + 3,58,29,0,144,150,3,62,31,0,145,150,3,52,26,0,146,150,3,56,28,0, + 147,150,3,60,30,0,148,150,3,64,32,0,149,141,1,0,0,0,149,142,1,0, + 0,0,149,143,1,0,0,0,149,144,1,0,0,0,149,145,1,0,0,0,149,146,1,0, + 0,0,149,147,1,0,0,0,149,148,1,0,0,0,150,15,1,0,0,0,151,156,3,66, + 33,0,152,156,3,68,34,0,153,156,3,70,35,0,154,156,3,72,36,0,155,151, + 1,0,0,0,155,152,1,0,0,0,155,153,1,0,0,0,155,154,1,0,0,0,156,17,1, + 0,0,0,157,158,3,50,25,0,158,159,3,74,37,0,159,19,1,0,0,0,160,161, + 3,50,25,0,161,162,3,78,39,0,162,21,1,0,0,0,163,164,3,52,26,0,164, + 165,3,74,37,0,165,23,1,0,0,0,166,167,3,52,26,0,167,168,3,78,39,0, + 168,25,1,0,0,0,169,170,3,54,27,0,170,171,3,74,37,0,171,27,1,0,0, + 0,172,173,3,54,27,0,173,174,3,78,39,0,174,29,1,0,0,0,175,176,3,56, + 28,0,176,177,3,74,37,0,177,31,1,0,0,0,178,179,3,56,28,0,179,180, + 3,78,39,0,180,33,1,0,0,0,181,182,3,58,29,0,182,183,3,74,37,0,183, + 35,1,0,0,0,184,185,3,58,29,0,185,186,3,78,39,0,186,37,1,0,0,0,187, + 188,3,60,30,0,188,189,3,74,37,0,189,39,1,0,0,0,190,191,3,60,30,0, + 191,192,3,78,39,0,192,41,1,0,0,0,193,194,3,62,31,0,194,195,3,74, + 37,0,195,43,1,0,0,0,196,197,3,62,31,0,197,198,3,78,39,0,198,45,1, + 0,0,0,199,200,3,64,32,0,200,201,3,74,37,0,201,47,1,0,0,0,202,203, + 3,64,32,0,203,204,3,78,39,0,204,49,1,0,0,0,205,206,3,66,33,0,206, + 207,3,74,37,0,207,51,1,0,0,0,208,209,3,66,33,0,209,210,3,78,39,0, + 210,53,1,0,0,0,211,212,3,68,34,0,212,213,3,74,37,0,213,55,1,0,0, + 0,214,215,3,68,34,0,215,216,3,78,39,0,216,57,1,0,0,0,217,218,3,70, + 35,0,218,219,3,74,37,0,219,59,1,0,0,0,220,221,3,70,35,0,221,222, + 3,78,39,0,222,61,1,0,0,0,223,224,3,72,36,0,224,225,3,74,37,0,225, + 63,1,0,0,0,226,227,3,72,36,0,227,228,3,78,39,0,228,65,1,0,0,0,229, + 230,3,74,37,0,230,231,3,74,37,0,231,67,1,0,0,0,232,233,3,76,38,0, + 233,234,3,74,37,0,234,69,1,0,0,0,235,236,3,76,38,0,236,237,3,78, + 39,0,237,71,1,0,0,0,238,239,3,74,37,0,239,240,3,78,39,0,240,73,1, + 0,0,0,241,245,3,86,43,0,242,245,3,88,44,0,243,245,3,84,42,0,244, + 241,1,0,0,0,244,242,1,0,0,0,244,243,1,0,0,0,245,252,1,0,0,0,246, + 253,3,82,41,0,247,249,3,80,40,0,248,247,1,0,0,0,249,250,1,0,0,0, + 250,248,1,0,0,0,250,251,1,0,0,0,251,253,1,0,0,0,252,246,1,0,0,0, + 252,248,1,0,0,0,252,253,1,0,0,0,253,75,1,0,0,0,254,258,3,86,43,0, + 255,259,3,86,43,0,256,259,3,88,44,0,257,259,3,84,42,0,258,255,1, + 0,0,0,258,256,1,0,0,0,258,257,1,0,0,0,259,266,1,0,0,0,260,267,3, + 82,41,0,261,263,3,80,40,0,262,261,1,0,0,0,263,264,1,0,0,0,264,262, + 1,0,0,0,264,265,1,0,0,0,265,267,1,0,0,0,266,260,1,0,0,0,266,262, + 1,0,0,0,266,267,1,0,0,0,267,77,1,0,0,0,268,271,3,86,43,0,269,271, + 3,84,42,0,270,268,1,0,0,0,270,269,1,0,0,0,271,275,1,0,0,0,272,276, + 3,86,43,0,273,276,3,88,44,0,274,276,3,84,42,0,275,272,1,0,0,0,275, + 273,1,0,0,0,275,274,1,0,0,0,276,283,1,0,0,0,277,284,3,82,41,0,278, + 280,3,80,40,0,279,278,1,0,0,0,280,281,1,0,0,0,281,279,1,0,0,0,281, + 282,1,0,0,0,282,284,1,0,0,0,283,277,1,0,0,0,283,279,1,0,0,0,283, + 284,1,0,0,0,284,79,1,0,0,0,285,286,7,0,0,0,286,81,1,0,0,0,287,288, + 5,19,0,0,288,83,1,0,0,0,289,290,7,1,0,0,290,85,1,0,0,0,291,292,7, + 2,0,0,292,87,1,0,0,0,293,294,7,3,0,0,294,89,1,0,0,0,19,93,101,107, + 111,115,121,139,149,155,244,250,252,258,264,266,270,275,281,283 ] class சீர்Parser ( Parser ): @@ -132,82 +132,82 @@ class சீர்Parser ( Parser ): "'\\u0BA3\\u0BCD'", "'\\u0BA8\\u0BCD'", "'\\u0BAE\\u0BCD'", "'\\u0BA9\\u0BCD'", "'\\u0BAF\\u0BCD'", "'\\u0BB0\\u0BCD'", "'\\u0BB2\\u0BCD'", "'\\u0BB5\\u0BCD'", "'\\u0BB4\\u0BCD'", - "'\\u0BB3\\u0BCD'", "'\\u0B85'", "'\\u0B87'", "'\\u0B89'", - "'\\u0B8E'", "'\\u0B92'", "'\\u0B95'", "'\\u0B95\\u0BBF'", - "'\\u0B95\\u0BC1'", "'\\u0B95\\u0BC6'", "'\\u0B95\\u0BCA'", - "'\\u0B99'", "'\\u0B99\\u0BBF'", "'\\u0B99\\u0BC1'", - "'\\u0B99\\u0BC6'", "'\\u0B99\\u0BCA'", "'\\u0B9A'", - "'\\u0B9A\\u0BBF'", "'\\u0B9A\\u0BC1'", "'\\u0B9A\\u0BC6'", - "'\\u0B9A\\u0BCA'", "'\\u0B9E'", "'\\u0B9E\\u0BBF'", - "'\\u0B9E\\u0BC1'", "'\\u0B9E\\u0BC6'", "'\\u0B9E\\u0BCA'", - "'\\u0B9F'", "'\\u0B9F\\u0BBF'", "'\\u0B9F\\u0BC1'", - "'\\u0B9F\\u0BC6'", "'\\u0B9F\\u0BCA'", "'\\u0BA3'", - "'\\u0BA3\\u0BBF'", "'\\u0BA3\\u0BC1'", "'\\u0BA3\\u0BC6'", - "'\\u0BA3\\u0BCA'", "'\\u0BA4'", "'\\u0BA4\\u0BBF'", - "'\\u0BA4\\u0BC1'", "'\\u0BA4\\u0BC6'", "'\\u0BA4\\u0BCA'", - "'\\u0BA8'", "'\\u0BA8\\u0BBF'", "'\\u0BA8\\u0BC1'", - "'\\u0BA8\\u0BC6'", "'\\u0BA8\\u0BCA'", "'\\u0BAA'", - "'\\u0BAA\\u0BBF'", "'\\u0BAA\\u0BC1'", "'\\u0BAA\\u0BC6'", - "'\\u0BAA\\u0BCA'", "'\\u0BAE'", "'\\u0BAE\\u0BBF'", - "'\\u0BAE\\u0BC1'", "'\\u0BAE\\u0BC6'", "'\\u0BAE\\u0BCA'", - "'\\u0BAF'", "'\\u0BAF\\u0BBF'", "'\\u0BAF\\u0BC1'", - "'\\u0BAF\\u0BC6'", "'\\u0BAF\\u0BCA'", "'\\u0BB0'", - "'\\u0BB0\\u0BBF'", "'\\u0BB0\\u0BC1'", "'\\u0BB0\\u0BC6'", - "'\\u0BB0\\u0BCA'", "'\\u0BB2'", "'\\u0BB2\\u0BBF'", - "'\\u0BB2\\u0BC1'", "'\\u0BB2\\u0BC6'", "'\\u0BB2\\u0BCA'", - "'\\u0BB5'", "'\\u0BB5\\u0BBF'", "'\\u0BB5\\u0BC1'", - "'\\u0BB5\\u0BC6'", "'\\u0BB5\\u0BCA'", "'\\u0BB4'", - "'\\u0BB4\\u0BBF'", "'\\u0BB4\\u0BC1'", "'\\u0BB4\\u0BC6'", - "'\\u0BB4\\u0BCA'", "'\\u0BB3'", "'\\u0BB3\\u0BBF'", - "'\\u0BB3\\u0BC1'", "'\\u0BB3\\u0BC6'", "'\\u0BB3\\u0BCA'", - "'\\u0BB1'", "'\\u0BB1\\u0BBF'", "'\\u0BB1\\u0BC1'", - "'\\u0BB1\\u0BC6'", "'\\u0BB1\\u0BCA'", "'\\u0BA9'", - "'\\u0BA9\\u0BBF'", "'\\u0BA9\\u0BC1'", "'\\u0BA9\\u0BC6'", - "'\\u0BA9\\u0BCA'", "'\\u0B86'", "'\\u0B88'", "'\\u0B8A'", - "'\\u0B8F'", "'\\u0B90'", "'\\u0B93'", "'\\u0B92\\u0BB3'", - "'\\u0B95\\u0BBE'", "'\\u0B95\\u0BC0'", "'\\u0B95\\u0BC2'", - "'\\u0B95\\u0BC7'", "'\\u0B95\\u0BC8'", "'\\u0B95\\u0BCB'", - "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", "'\\u0B99\\u0BC0'", - "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", "'\\u0B99\\u0BC8'", + "'\\u0BB3\\u0BCD'", "'\\u0B83'", "'\\u0B95\\u0BC8'", + "'\\u0B99\\u0BC8'", "'\\u0B9A\\u0BC8'", "'\\u0B9E\\u0BC8'", + "'\\u0B9F\\u0BC8'", "'\\u0BA3\\u0BC8'", "'\\u0BA4\\u0BC8'", + "'\\u0BA8\\u0BC8'", "'\\u0BAA\\u0BC8'", "'\\u0BAE\\u0BC8'", + "'\\u0BAF\\u0BC8'", "'\\u0BB0\\u0BC8'", "'\\u0BB2\\u0BC8'", + "'\\u0BB5\\u0BC8'", "'\\u0BB4\\u0BC8'", "'\\u0BB3\\u0BC8'", + "'\\u0BB1\\u0BC8'", "'\\u0BA9\\u0BC8'", "'\\u0B85'", + "'\\u0B87'", "'\\u0B89'", "'\\u0B8E'", "'\\u0B92'", + "'\\u0B95'", "'\\u0B95\\u0BBF'", "'\\u0B95\\u0BC1'", + "'\\u0B95\\u0BC6'", "'\\u0B95\\u0BCA'", "'\\u0B99'", + "'\\u0B99\\u0BBF'", "'\\u0B99\\u0BC1'", "'\\u0B99\\u0BC6'", + "'\\u0B99\\u0BCA'", "'\\u0B9A'", "'\\u0B9A\\u0BBF'", + "'\\u0B9A\\u0BC1'", "'\\u0B9A\\u0BC6'", "'\\u0B9A\\u0BCA'", + "'\\u0B9E'", "'\\u0B9E\\u0BBF'", "'\\u0B9E\\u0BC1'", + "'\\u0B9E\\u0BC6'", "'\\u0B9E\\u0BCA'", "'\\u0B9F'", + "'\\u0B9F\\u0BBF'", "'\\u0B9F\\u0BC1'", "'\\u0B9F\\u0BC6'", + "'\\u0B9F\\u0BCA'", "'\\u0BA3'", "'\\u0BA3\\u0BBF'", + "'\\u0BA3\\u0BC1'", "'\\u0BA3\\u0BC6'", "'\\u0BA3\\u0BCA'", + "'\\u0BA4'", "'\\u0BA4\\u0BBF'", "'\\u0BA4\\u0BC1'", + "'\\u0BA4\\u0BC6'", "'\\u0BA4\\u0BCA'", "'\\u0BA8'", + "'\\u0BA8\\u0BBF'", "'\\u0BA8\\u0BC1'", "'\\u0BA8\\u0BC6'", + "'\\u0BA8\\u0BCA'", "'\\u0BAA'", "'\\u0BAA\\u0BBF'", + "'\\u0BAA\\u0BC1'", "'\\u0BAA\\u0BC6'", "'\\u0BAA\\u0BCA'", + "'\\u0BAE'", "'\\u0BAE\\u0BBF'", "'\\u0BAE\\u0BC1'", + "'\\u0BAE\\u0BC6'", "'\\u0BAE\\u0BCA'", "'\\u0BAF'", + "'\\u0BAF\\u0BBF'", "'\\u0BAF\\u0BC1'", "'\\u0BAF\\u0BC6'", + "'\\u0BAF\\u0BCA'", "'\\u0BB0'", "'\\u0BB0\\u0BBF'", + "'\\u0BB0\\u0BC1'", "'\\u0BB0\\u0BC6'", "'\\u0BB0\\u0BCA'", + "'\\u0BB2'", "'\\u0BB2\\u0BBF'", "'\\u0BB2\\u0BC1'", + "'\\u0BB2\\u0BC6'", "'\\u0BB2\\u0BCA'", "'\\u0BB5'", + "'\\u0BB5\\u0BBF'", "'\\u0BB5\\u0BC1'", "'\\u0BB5\\u0BC6'", + "'\\u0BB5\\u0BCA'", "'\\u0BB4'", "'\\u0BB4\\u0BBF'", + "'\\u0BB4\\u0BC1'", "'\\u0BB4\\u0BC6'", "'\\u0BB4\\u0BCA'", + "'\\u0BB3'", "'\\u0BB3\\u0BBF'", "'\\u0BB3\\u0BC1'", + "'\\u0BB3\\u0BC6'", "'\\u0BB3\\u0BCA'", "'\\u0BB1'", + "'\\u0BB1\\u0BBF'", "'\\u0BB1\\u0BC1'", "'\\u0BB1\\u0BC6'", + "'\\u0BB1\\u0BCA'", "'\\u0BA9'", "'\\u0BA9\\u0BBF'", + "'\\u0BA9\\u0BC1'", "'\\u0BA9\\u0BC6'", "'\\u0BA9\\u0BCA'", + "'\\u0B86'", "'\\u0B88'", "'\\u0B8A'", "'\\u0B8F'", + "'\\u0B90'", "'\\u0B93'", "'\\u0B94'", "'\\u0B95\\u0BBE'", + "'\\u0B95\\u0BC0'", "'\\u0B95\\u0BC2'", "'\\u0B95\\u0BC7'", + "'\\u0B95\\u0BCB'", "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", + "'\\u0B99\\u0BC0'", "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", "'\\u0B99\\u0BCB'", "'\\u0B99\\u0BCC'", "'\\u0B9A\\u0BBE'", "'\\u0B9A\\u0BC0'", "'\\u0B9A\\u0BC2'", "'\\u0B9A\\u0BC7'", - "'\\u0B9A\\u0BC8'", "'\\u0B9A\\u0BCB'", "'\\u0B9A\\u0BCC'", - "'\\u0B9E\\u0BBE'", "'\\u0B9E\\u0BC0'", "'\\u0B9E\\u0BC2'", - "'\\u0B9E\\u0BC7'", "'\\u0B9E\\u0BC8'", "'\\u0B9E\\u0BCB'", - "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", "'\\u0B9F\\u0BC0'", - "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", "'\\u0B9F\\u0BC8'", + "'\\u0B9A\\u0BCB'", "'\\u0B9A\\u0BCC'", "'\\u0B9E\\u0BBE'", + "'\\u0B9E\\u0BC0'", "'\\u0B9E\\u0BC2'", "'\\u0B9E\\u0BC7'", + "'\\u0B9E\\u0BCB'", "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", + "'\\u0B9F\\u0BC0'", "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", "'\\u0B9F\\u0BCB'", "'\\u0B9F\\u0BCC'", "'\\u0BA3\\u0BBE'", "'\\u0BA3\\u0BC0'", "'\\u0BA3\\u0BC2'", "'\\u0BA3\\u0BC7'", - "'\\u0BA3\\u0BC8'", "'\\u0BA3\\u0BCB'", "'\\u0BA3\\u0BCC'", - "'\\u0BA4\\u0BBE'", "'\\u0BA4\\u0BC0'", "'\\u0BA4\\u0BC2'", - "'\\u0BA4\\u0BC7'", "'\\u0BA4\\u0BC8'", "'\\u0BA4\\u0BCB'", - "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", "'\\u0BA8\\u0BC0'", - "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", "'\\u0BA8\\u0BC8'", + "'\\u0BA3\\u0BCB'", "'\\u0BA3\\u0BCC'", "'\\u0BA4\\u0BBE'", + "'\\u0BA4\\u0BC0'", "'\\u0BA4\\u0BC2'", "'\\u0BA4\\u0BC7'", + "'\\u0BA4\\u0BCB'", "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", + "'\\u0BA8\\u0BC0'", "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", "'\\u0BA8\\u0BCB'", "'\\u0BA8\\u0BCC'", "'\\u0BAA\\u0BBE'", "'\\u0BAA\\u0BC0'", "'\\u0BAA\\u0BC2'", "'\\u0BAA\\u0BC7'", - "'\\u0BAA\\u0BC8'", "'\\u0BAA\\u0BCB'", "'\\u0BAA\\u0BCC'", - "'\\u0BAE\\u0BBE'", "'\\u0BAE\\u0BC0'", "'\\u0BAE\\u0BC2'", - "'\\u0BAE\\u0BC7'", "'\\u0BAE\\u0BC8'", "'\\u0BAE\\u0BCB'", - "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", "'\\u0BAF\\u0BC0'", - "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", "'\\u0BAF\\u0BC8'", + "'\\u0BAA\\u0BCB'", "'\\u0BAA\\u0BCC'", "'\\u0BAE\\u0BBE'", + "'\\u0BAE\\u0BC0'", "'\\u0BAE\\u0BC2'", "'\\u0BAE\\u0BC7'", + "'\\u0BAE\\u0BCB'", "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", + "'\\u0BAF\\u0BC0'", "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", "'\\u0BAF\\u0BCB'", "'\\u0BAF\\u0BCC'", "'\\u0BB0\\u0BBE'", "'\\u0BB0\\u0BC0'", "'\\u0BB0\\u0BC2'", "'\\u0BB0\\u0BC7'", - "'\\u0BB0\\u0BC8'", "'\\u0BB0\\u0BCB'", "'\\u0BB0\\u0BCC'", - "'\\u0BB2\\u0BBE'", "'\\u0BB2\\u0BC0'", "'\\u0BB2\\u0BC2'", - "'\\u0BB2\\u0BC7'", "'\\u0BB2\\u0BC8'", "'\\u0BB2\\u0BCB'", - "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", "'\\u0BB5\\u0BC0'", - "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", "'\\u0BB5\\u0BC8'", + "'\\u0BB0\\u0BCB'", "'\\u0BB0\\u0BCC'", "'\\u0BB2\\u0BBE'", + "'\\u0BB2\\u0BC0'", "'\\u0BB2\\u0BC2'", "'\\u0BB2\\u0BC7'", + "'\\u0BB2\\u0BCB'", "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", + "'\\u0BB5\\u0BC0'", "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", "'\\u0BB5\\u0BCB'", "'\\u0BB5\\u0BCC'", "'\\u0BB4\\u0BBE'", "'\\u0BB4\\u0BC0'", "'\\u0BB4\\u0BC2'", "'\\u0BB4\\u0BC7'", - "'\\u0BB4\\u0BC8'", "'\\u0BB4\\u0BCB'", "'\\u0BB4\\u0BCC'", - "'\\u0BB3\\u0BBE'", "'\\u0BB3\\u0BC0'", "'\\u0BB3\\u0BC2'", - "'\\u0BB3\\u0BC7'", "'\\u0BB3\\u0BC8'", "'\\u0BB3\\u0BCB'", - "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", "'\\u0BB1\\u0BC0'", - "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", "'\\u0BB1\\u0BC8'", + "'\\u0BB4\\u0BCB'", "'\\u0BB4\\u0BCC'", "'\\u0BB3\\u0BBE'", + "'\\u0BB3\\u0BC0'", "'\\u0BB3\\u0BC2'", "'\\u0BB3\\u0BC7'", + "'\\u0BB3\\u0BCB'", "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", + "'\\u0BB1\\u0BC0'", "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", "'\\u0BB1\\u0BCB'", "'\\u0BB1\\u0BCC'", "'\\u0BA9\\u0BBE'", "'\\u0BA9\\u0BC0'", "'\\u0BA9\\u0BC2'", "'\\u0BA9\\u0BC7'", - "'\\u0BA9\\u0BC8'", "'\\u0BA9\\u0BCB'", "'\\u0BA9\\u0BCC'", - "'\\u0B83'", "' '" ] + "'\\u0BA9\\u0BCB'", "'\\u0BA9\\u0BCC'" ] symbolicNames = [ "", "", "", "", "", "", "", "", @@ -271,7 +271,7 @@ class சீர்Parser ( Parser ): "", "", "", "", "", "", "", "", "", "", "", "", - "I" ] + "I", "NL" ] RULE_சீர் = 0 RULE_வஞ்சிச்_சீர் = 1 @@ -311,11 +311,13 @@ class சீர்Parser ( Parser ): RULE_கருவிளம் = 35 RULE_கூவிளம் = 36 RULE_நேர் = 37 - RULE_நிரை = 38 - RULE_ஒற்று = 39 - RULE_குறில் = 40 - RULE_நெடில் = 41 - RULE_ஆய்தம் = 42 + RULE_முதல்நிரை = 38 + RULE_நிரை = 39 + RULE_ஒற்று = 40 + RULE_ஆய்தம் = 41 + RULE_ஐகாரக்குறுக்கம் = 42 + RULE_குறில் = 43 + RULE_நெடில் = 44 ruleNames = [ "சீர்", "வஞ்சிச்_சீர்", "இயற்சீர்", "மாச்சீர்", "விளச்சீர்", "வெண்சீர்", "நாலசை", "மூவசை", "ஈரசை", "தேமாந்தண்பூ", @@ -326,8 +328,8 @@ class சீர்Parser ( Parser ): "கூவிளநறும்பூ", "கூவிளநறுநிழல்", "தேமாங்காய்", "தேமாங்கனி", "புளிமாங்காய்", "புளிமாங்கனி", "கருவிளங்காய்", "கருவிளங்கனி", "கூவிளங்காய்", "கூவிளங்கனி", "தேமா", "புளிமா", "கருவிளம்", - "கூவிளம்", "நேர்", "நிரை", "ஒற்று", "குறில்", "நெடில்", - "ஆய்தம்" ] + "கூவிளம்", "நேர்", "முதல்நிரை", "நிரை", "ஒற்று", "ஆய்தம்", + "ஐகாரக்குறுக்கம்", "குறில்", "நெடில்" ] EOF = Token.EOF T__0=1 @@ -578,6 +580,7 @@ class சீர்Parser ( Parser ): T__245=246 T__246=247 I=248 + NL=249 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) @@ -595,6 +598,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def EOF(self): + return self.getToken(சீர்Parser.EOF, 0) + def ஈரசை(self): return self.getTypedRuleContext(சீர்Parser.ஈரசைContext,0) @@ -626,28 +632,28 @@ def சீர்(self): localctx = சீர்Parser.சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 0, self.RULE_சீர்) try: - self.state = 89 + self.enterOuterAlt(localctx, 1) + self.state = 93 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,0,self._ctx) if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 86 + self.state = 90 self.ஈரசை() pass elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 87 + self.state = 91 self.மூவசை() pass elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 88 + self.state = 92 self.நாலசை() pass + self.state = 95 + self.match(சீர்Parser.EOF) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -699,30 +705,30 @@ def வஞ்சிச்_சீர்(self): localctx = சீர்Parser.வஞ்சிச்_சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 2, self.RULE_வஞ்சிச்_சீர்) try: - self.state = 95 + self.state = 101 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,1,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 91 + self.state = 97 self.தேமாங்கனி() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 92 + self.state = 98 self.புளிமாங்கனி() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 93 + self.state = 99 self.கருவிளங்கனி() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 94 + self.state = 100 self.கூவிளங்கனி() pass @@ -778,30 +784,30 @@ def இயற்சீர்(self): localctx = சீர்Parser.இயற்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 4, self.RULE_இயற்சீர்) try: - self.state = 101 + self.state = 107 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,2,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 97 + self.state = 103 self.தேமா() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 98 + self.state = 104 self.புளிமா() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 99 + self.state = 105 self.கருவிளம்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 100 + self.state = 106 self.கூவிளம்() pass @@ -849,18 +855,18 @@ def மாச்சீர்(self): localctx = சீர்Parser.மாச்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 6, self.RULE_மாச்சீர்) try: - self.state = 105 + self.state = 111 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,3,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 103 + self.state = 109 self.தேமா() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 104 + self.state = 110 self.புளிமா() pass @@ -908,18 +914,18 @@ def விளச்சீர்(self): localctx = சீர்Parser.விளச்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 8, self.RULE_விளச்சீர்) try: - self.state = 109 + self.state = 115 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,4,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 107 + self.state = 113 self.கருவிளம்() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 108 + self.state = 114 self.கூவிளம்() pass @@ -975,30 +981,30 @@ def வெண்சீர்(self): localctx = சீர்Parser.வெண்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 10, self.RULE_வெண்சீர்) try: - self.state = 115 + self.state = 121 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,5,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 111 + self.state = 117 self.தேமாங்காய்() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 112 + self.state = 118 self.புளிமாங்காய்() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 113 + self.state = 119 self.கருவிளங்காய்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 114 + self.state = 120 self.கூவிளங்காய்() pass @@ -1023,60 +1029,60 @@ def தேமாந்தண்பூ(self): return self.getTypedRuleContext(சீர்Parser.தேமாந்தண்பூContext,0) - def தேமாந்தண்ணிழல்(self): - return self.getTypedRuleContext(சீர்Parser.தேமாந்தண்ணிழல்Context,0) - - - def தேமாநறும்பூ(self): - return self.getTypedRuleContext(சீர்Parser.தேமாநறும்பூContext,0) + def புளிமாந்தண்பூ(self): + return self.getTypedRuleContext(சீர்Parser.புளிமாந்தண்பூContext,0) - def தேமாநறுநிழல்(self): - return self.getTypedRuleContext(சீர்Parser.தேமாநறுநிழல்Context,0) + def கருவிளந்தண்பூ(self): + return self.getTypedRuleContext(சீர்Parser.கருவிளந்தண்பூContext,0) - def புளிமாந்தண்பூ(self): - return self.getTypedRuleContext(சீர்Parser.புளிமாந்தண்பூContext,0) + def கூவிளந்தண்பூ(self): + return self.getTypedRuleContext(சீர்Parser.கூவிளந்தண்பூContext,0) - def புளிமாந்தண்ணிழல்(self): - return self.getTypedRuleContext(சீர்Parser.புளிமாந்தண்ணிழல்Context,0) + def தேமாநறும்பூ(self): + return self.getTypedRuleContext(சீர்Parser.தேமாநறும்பூContext,0) def புளிமாநறும்பூ(self): return self.getTypedRuleContext(சீர்Parser.புளிமாநறும்பூContext,0) - def புளிமாநறுநிழல்(self): - return self.getTypedRuleContext(சீர்Parser.புளிமாநறுநிழல்Context,0) - - - def கருவிளந்தண்பூ(self): - return self.getTypedRuleContext(சீர்Parser.கருவிளந்தண்பூContext,0) + def கருவிளநறும்பூ(self): + return self.getTypedRuleContext(சீர்Parser.கருவிளநறும்பூContext,0) - def கருவிளந்தண்ணிழல்(self): - return self.getTypedRuleContext(சீர்Parser.கருவிளந்தண்ணிழல்Context,0) + def கூவிளநறும்பூ(self): + return self.getTypedRuleContext(சீர்Parser.கூவிளநறும்பூContext,0) - def கருவிளநறும்பூ(self): - return self.getTypedRuleContext(சீர்Parser.கருவிளநறும்பூContext,0) + def தேமாந்தண்ணிழல்(self): + return self.getTypedRuleContext(சீர்Parser.தேமாந்தண்ணிழல்Context,0) - def கருவிளநறுநிழல்(self): - return self.getTypedRuleContext(சீர்Parser.கருவிளநறுநிழல்Context,0) + def புளிமாந்தண்ணிழல்(self): + return self.getTypedRuleContext(சீர்Parser.புளிமாந்தண்ணிழல்Context,0) - def கூவிளந்தண்பூ(self): - return self.getTypedRuleContext(சீர்Parser.கூவிளந்தண்பூContext,0) + def கருவிளந்தண்ணிழல்(self): + return self.getTypedRuleContext(சீர்Parser.கருவிளந்தண்ணிழல்Context,0) def கூவிளந்தண்ணிழல்(self): return self.getTypedRuleContext(சீர்Parser.கூவிளந்தண்ணிழல்Context,0) - def கூவிளநறும்பூ(self): - return self.getTypedRuleContext(சீர்Parser.கூவிளநறும்பூContext,0) + def தேமாநறுநிழல்(self): + return self.getTypedRuleContext(சீர்Parser.தேமாநறுநிழல்Context,0) + + + def புளிமாநறுநிழல்(self): + return self.getTypedRuleContext(சீர்Parser.புளிமாநறுநிழல்Context,0) + + + def கருவிளநறுநிழல்(self): + return self.getTypedRuleContext(சீர்Parser.கருவிளநறுநிழல்Context,0) def கூவிளநறுநிழல்(self): @@ -1102,102 +1108,102 @@ def நாலசை(self): localctx = சீர்Parser.நாலசைContext(self, self._ctx, self.state) self.enterRule(localctx, 12, self.RULE_நாலசை) try: - self.state = 133 + self.state = 139 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,6,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 117 + self.state = 123 self.தேமாந்தண்பூ() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 118 - self.தேமாந்தண்ணிழல்() + self.state = 124 + self.புளிமாந்தண்பூ() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 119 - self.தேமாநறும்பூ() + self.state = 125 + self.கருவிளந்தண்பூ() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 120 - self.தேமாநறுநிழல்() + self.state = 126 + self.கூவிளந்தண்பூ() pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 121 - self.புளிமாந்தண்பூ() + self.state = 127 + self.தேமாநறும்பூ() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 122 - self.புளிமாந்தண்ணிழல்() + self.state = 128 + self.புளிமாநறும்பூ() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 123 - self.புளிமாநறும்பூ() + self.state = 129 + self.கருவிளநறும்பூ() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 124 - self.புளிமாநறுநிழல்() + self.state = 130 + self.கூவிளநறும்பூ() pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 125 - self.கருவிளந்தண்பூ() + self.state = 131 + self.தேமாந்தண்ணிழல்() pass elif la_ == 10: self.enterOuterAlt(localctx, 10) - self.state = 126 - self.கருவிளந்தண்ணிழல்() + self.state = 132 + self.புளிமாந்தண்ணிழல்() pass elif la_ == 11: self.enterOuterAlt(localctx, 11) - self.state = 127 - self.கருவிளநறும்பூ() + self.state = 133 + self.கருவிளந்தண்ணிழல்() pass elif la_ == 12: self.enterOuterAlt(localctx, 12) - self.state = 128 - self.கருவிளநறுநிழல்() + self.state = 134 + self.கூவிளந்தண்ணிழல்() pass elif la_ == 13: self.enterOuterAlt(localctx, 13) - self.state = 129 - self.கூவிளந்தண்பூ() + self.state = 135 + self.தேமாநறுநிழல்() pass elif la_ == 14: self.enterOuterAlt(localctx, 14) - self.state = 130 - self.கூவிளந்தண்ணிழல்() + self.state = 136 + self.புளிமாநறுநிழல்() pass elif la_ == 15: self.enterOuterAlt(localctx, 15) - self.state = 131 - self.கூவிளநறும்பூ() + self.state = 137 + self.கருவிளநறுநிழல்() pass elif la_ == 16: self.enterOuterAlt(localctx, 16) - self.state = 132 + self.state = 138 self.கூவிளநறுநிழல்() pass @@ -1222,30 +1228,30 @@ def தேமாங்காய்(self): return self.getTypedRuleContext(சீர்Parser.தேமாங்காய்Context,0) - def தேமாங்கனி(self): - return self.getTypedRuleContext(சீர்Parser.தேமாங்கனிContext,0) - - def புளிமாங்காய்(self): return self.getTypedRuleContext(சீர்Parser.புளிமாங்காய்Context,0) - def புளிமாங்கனி(self): - return self.getTypedRuleContext(சீர்Parser.புளிமாங்கனிContext,0) - - def கருவிளங்காய்(self): return self.getTypedRuleContext(சீர்Parser.கருவிளங்காய்Context,0) - def கருவிளங்கனி(self): - return self.getTypedRuleContext(சீர்Parser.கருவிளங்கனிContext,0) - - def கூவிளங்காய்(self): return self.getTypedRuleContext(சீர்Parser.கூவிளங்காய்Context,0) + def தேமாங்கனி(self): + return self.getTypedRuleContext(சீர்Parser.தேமாங்கனிContext,0) + + + def புளிமாங்கனி(self): + return self.getTypedRuleContext(சீர்Parser.புளிமாங்கனிContext,0) + + + def கருவிளங்கனி(self): + return self.getTypedRuleContext(சீர்Parser.கருவிளங்கனிContext,0) + + def கூவிளங்கனி(self): return self.getTypedRuleContext(சீர்Parser.கூவிளங்கனிContext,0) @@ -1269,54 +1275,54 @@ def மூவசை(self): localctx = சீர்Parser.மூவசைContext(self, self._ctx, self.state) self.enterRule(localctx, 14, self.RULE_மூவசை) try: - self.state = 143 + self.state = 149 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,7,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 135 + self.state = 141 self.தேமாங்காய்() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 136 - self.தேமாங்கனி() + self.state = 142 + self.புளிமாங்காய்() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 137 - self.புளிமாங்காய்() + self.state = 143 + self.கருவிளங்காய்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 138 - self.புளிமாங்கனி() + self.state = 144 + self.கூவிளங்காய்() pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 139 - self.கருவிளங்காய்() + self.state = 145 + self.தேமாங்கனி() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 140 - self.கருவிளங்கனி() + self.state = 146 + self.புளிமாங்கனி() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 141 - self.கூவிளங்காய்() + self.state = 147 + self.கருவிளங்கனி() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 142 + self.state = 148 self.கூவிளங்கனி() pass @@ -1372,30 +1378,30 @@ def ஈரசை(self): localctx = சீர்Parser.ஈரசைContext(self, self._ctx, self.state) self.enterRule(localctx, 16, self.RULE_ஈரசை) try: - self.state = 149 + self.state = 155 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,8,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 145 + self.state = 151 self.தேமா() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 146 + self.state = 152 self.புளிமா() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 147 + self.state = 153 self.கருவிளம்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 148 + self.state = 154 self.கூவிளம்() pass @@ -1444,9 +1450,9 @@ def தேமாந்தண்பூ(self): self.enterRule(localctx, 18, self.RULE_தேமாந்தண்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 151 + self.state = 157 self.தேமாங்காய்() - self.state = 152 + self.state = 158 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -1492,9 +1498,9 @@ def தேமாந்தண்ணிழல்(self): self.enterRule(localctx, 20, self.RULE_தேமாந்தண்ணிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 154 + self.state = 160 self.தேமாங்காய்() - self.state = 155 + self.state = 161 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -1540,9 +1546,9 @@ def தேமாநறும்பூ(self): self.enterRule(localctx, 22, self.RULE_தேமாநறும்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 157 + self.state = 163 self.தேமாங்கனி() - self.state = 158 + self.state = 164 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -1588,9 +1594,9 @@ def தேமாநறுநிழல்(self): self.enterRule(localctx, 24, self.RULE_தேமாநறுநிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 160 + self.state = 166 self.தேமாங்கனி() - self.state = 161 + self.state = 167 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -1636,9 +1642,9 @@ def புளிமாந்தண்பூ(self): self.enterRule(localctx, 26, self.RULE_புளிமாந்தண்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 163 + self.state = 169 self.புளிமாங்காய்() - self.state = 164 + self.state = 170 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -1684,9 +1690,9 @@ def புளிமாந்தண்ணிழல்(self): self.enterRule(localctx, 28, self.RULE_புளிமாந்தண்ணிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 166 + self.state = 172 self.புளிமாங்காய்() - self.state = 167 + self.state = 173 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -1732,9 +1738,9 @@ def புளிமாநறும்பூ(self): self.enterRule(localctx, 30, self.RULE_புளிமாநறும்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 169 + self.state = 175 self.புளிமாங்கனி() - self.state = 170 + self.state = 176 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -1780,9 +1786,9 @@ def புளிமாநறுநிழல்(self): self.enterRule(localctx, 32, self.RULE_புளிமாநறுநிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 172 + self.state = 178 self.புளிமாங்கனி() - self.state = 173 + self.state = 179 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -1828,9 +1834,9 @@ def கருவிளந்தண்பூ(self): self.enterRule(localctx, 34, self.RULE_கருவிளந்தண்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 175 + self.state = 181 self.கருவிளங்காய்() - self.state = 176 + self.state = 182 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -1876,9 +1882,9 @@ def கருவிளந்தண்ணிழல்(self): self.enterRule(localctx, 36, self.RULE_கருவிளந்தண்ணிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 178 + self.state = 184 self.கருவிளங்காய்() - self.state = 179 + self.state = 185 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -1924,9 +1930,9 @@ def கருவிளநறும்பூ(self): self.enterRule(localctx, 38, self.RULE_கருவிளநறும்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 181 + self.state = 187 self.கருவிளங்கனி() - self.state = 182 + self.state = 188 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -1972,9 +1978,9 @@ def கருவிளநறுநிழல்(self): self.enterRule(localctx, 40, self.RULE_கருவிளநறுநிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 184 + self.state = 190 self.கருவிளங்கனி() - self.state = 185 + self.state = 191 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2020,9 +2026,9 @@ def கூவிளந்தண்பூ(self): self.enterRule(localctx, 42, self.RULE_கூவிளந்தண்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 187 + self.state = 193 self.கூவிளங்காய்() - self.state = 188 + self.state = 194 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2068,9 +2074,9 @@ def கூவிளந்தண்ணிழல்(self): self.enterRule(localctx, 44, self.RULE_கூவிளந்தண்ணிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 190 + self.state = 196 self.கூவிளங்காய்() - self.state = 191 + self.state = 197 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2116,9 +2122,9 @@ def கூவிளநறும்பூ(self): self.enterRule(localctx, 46, self.RULE_கூவிளநறும்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 193 + self.state = 199 self.கூவிளங்கனி() - self.state = 194 + self.state = 200 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2164,9 +2170,9 @@ def கூவிளநறுநிழல்(self): self.enterRule(localctx, 48, self.RULE_கூவிளநறுநிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 196 + self.state = 202 self.கூவிளங்கனி() - self.state = 197 + self.state = 203 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2212,9 +2218,9 @@ def தேமாங்காய்(self): self.enterRule(localctx, 50, self.RULE_தேமாங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 199 + self.state = 205 self.தேமா() - self.state = 200 + self.state = 206 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2260,9 +2266,9 @@ def தேமாங்கனி(self): self.enterRule(localctx, 52, self.RULE_தேமாங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 202 + self.state = 208 self.தேமா() - self.state = 203 + self.state = 209 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2308,9 +2314,9 @@ def புளிமாங்காய்(self): self.enterRule(localctx, 54, self.RULE_புளிமாங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 205 + self.state = 211 self.புளிமா() - self.state = 206 + self.state = 212 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2356,9 +2362,9 @@ def புளிமாங்கனி(self): self.enterRule(localctx, 56, self.RULE_புளிமாங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 208 + self.state = 214 self.புளிமா() - self.state = 209 + self.state = 215 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2404,9 +2410,9 @@ def கருவிளங்காய்(self): self.enterRule(localctx, 58, self.RULE_கருவிளங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 211 + self.state = 217 self.கருவிளம்() - self.state = 212 + self.state = 218 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2452,9 +2458,9 @@ def கருவிளங்கனி(self): self.enterRule(localctx, 60, self.RULE_கருவிளங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 214 + self.state = 220 self.கருவிளம்() - self.state = 215 + self.state = 221 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2500,9 +2506,9 @@ def கூவிளங்காய்(self): self.enterRule(localctx, 62, self.RULE_கூவிளங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 217 + self.state = 223 self.கூவிளம்() - self.state = 218 + self.state = 224 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2548,9 +2554,9 @@ def கூவிளங்கனி(self): self.enterRule(localctx, 64, self.RULE_கூவிளங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 220 + self.state = 226 self.கூவிளம்() - self.state = 221 + self.state = 227 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2595,9 +2601,9 @@ def தேமா(self): self.enterRule(localctx, 66, self.RULE_தேமா) try: self.enterOuterAlt(localctx, 1) - self.state = 223 + self.state = 229 self.நேர்() - self.state = 224 + self.state = 230 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2615,8 +2621,8 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def நிரை(self): - return self.getTypedRuleContext(சீர்Parser.நிரைContext,0) + def முதல்நிரை(self): + return self.getTypedRuleContext(சீர்Parser.முதல்நிரைContext,0) def நேர்(self): @@ -2643,9 +2649,9 @@ def புளிமா(self): self.enterRule(localctx, 68, self.RULE_புளிமா) try: self.enterOuterAlt(localctx, 1) - self.state = 226 - self.நிரை() - self.state = 227 + self.state = 232 + self.முதல்நிரை() + self.state = 233 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2663,11 +2669,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def நிரை(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(சீர்Parser.நிரைContext) - else: - return self.getTypedRuleContext(சீர்Parser.நிரைContext,i) + def முதல்நிரை(self): + return self.getTypedRuleContext(சீர்Parser.முதல்நிரைContext,0) + + + def நிரை(self): + return self.getTypedRuleContext(சீர்Parser.நிரைContext,0) def getRuleIndex(self): @@ -2690,9 +2697,9 @@ def கருவிளம்(self): self.enterRule(localctx, 70, self.RULE_கருவிளம்) try: self.enterOuterAlt(localctx, 1) - self.state = 229 - self.நிரை() - self.state = 230 + self.state = 235 + self.முதல்நிரை() + self.state = 236 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2738,9 +2745,9 @@ def கூவிளம்(self): self.enterRule(localctx, 72, self.RULE_கூவிளம்) try: self.enterOuterAlt(localctx, 1) - self.state = 232 + self.state = 238 self.நேர்() - self.state = 233 + self.state = 239 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2766,6 +2773,10 @@ def நெடில்(self): return self.getTypedRuleContext(சீர்Parser.நெடில்Context,0) + def ஐகாரக்குறுக்கம்(self): + return self.getTypedRuleContext(சீர்Parser.ஐகாரக்குறுக்கம்Context,0) + + def ஆய்தம்(self): return self.getTypedRuleContext(சீர்Parser.ஆய்தம்Context,0) @@ -2797,82 +2808,158 @@ def நேர்(self): self.enterRule(localctx, 74, self.RULE_நேர்) self._la = 0 # Token type try: - self.state = 255 + self.enterOuterAlt(localctx, 1) + self.state = 244 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,13,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 235 + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 241 self.குறில்() pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 236 + elif token in [133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + self.state = 242 self.நெடில்() pass + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 243 + self.ஐகாரக்குறுக்கம்() + pass + else: + raise NoViableAltException(self) - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 237 - self.குறில்() - self.state = 244 + self.state = 252 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [19]: + self.state = 246 + self.ஆய்தம்() + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: + self.state = 248 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [247]: - self.state = 238 - self.ஆய்தம்() - pass - elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: - self.state = 240 + _la = self._input.LA(1) + while True: + self.state = 247 + self.ஒற்று() + self.state = 250 self._errHandler.sync(self) _la = self._input.LA(1) - while True: - self.state = 239 - self.ஒற்று() - self.state = 242 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): - break - - pass - else: - raise NoViableAltException(self) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): + break pass + elif token in [-1, 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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + pass + else: + pass + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 246 + + class முதல்நிரைContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def குறில்(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(சீர்Parser.குறில்Context) + else: + return self.getTypedRuleContext(சீர்Parser.குறில்Context,i) + + + def நெடில்(self): + return self.getTypedRuleContext(சீர்Parser.நெடில்Context,0) + + + def ஐகாரக்குறுக்கம்(self): + return self.getTypedRuleContext(சீர்Parser.ஐகாரக்குறுக்கம்Context,0) + + + def ஆய்தம்(self): + return self.getTypedRuleContext(சீர்Parser.ஆய்தம்Context,0) + + + def ஒற்று(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(சீர்Parser.ஒற்றுContext) + else: + return self.getTypedRuleContext(சீர்Parser.ஒற்றுContext,i) + + + def getRuleIndex(self): + return சீர்Parser.RULE_முதல்நிரை + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterமுதல்நிரை" ): + listener.enterமுதல்நிரை(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitமுதல்நிரை" ): + listener.exitமுதல்நிரை(self) + + + + + def முதல்நிரை(self): + + localctx = சீர்Parser.முதல்நிரைContext(self, self._ctx, self.state) + self.enterRule(localctx, 76, self.RULE_முதல்நிரை) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 254 + self.குறில்() + self.state = 258 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 255 + self.குறில்() + pass + elif token in [133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + self.state = 256 self.நெடில்() - self.state = 253 + pass + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 257 + self.ஐகாரக்குறுக்கம்() + pass + else: + raise NoViableAltException(self) + + self.state = 266 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [19]: + self.state = 260 + self.ஆய்தம்() + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: + self.state = 262 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [247]: - self.state = 247 - self.ஆய்தம்() - pass - elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: - self.state = 249 + _la = self._input.LA(1) + while True: + self.state = 261 + self.ஒற்று() + self.state = 264 self._errHandler.sync(self) _la = self._input.LA(1) - while True: - self.state = 248 - self.ஒற்று() - self.state = 251 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): - break - - pass - else: - raise NoViableAltException(self) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): + break pass - - + elif token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + pass + else: + pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2896,6 +2983,13 @@ def குறில்(self, i:int=None): return self.getTypedRuleContext(சீர்Parser.குறில்Context,i) + def ஐகாரக்குறுக்கம்(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(சீர்Parser.ஐகாரக்குறுக்கம்Context) + else: + return self.getTypedRuleContext(சீர்Parser.ஐகாரக்குறுக்கம்Context,i) + + def நெடில்(self): return self.getTypedRuleContext(சீர்Parser.நெடில்Context,0) @@ -2928,93 +3022,67 @@ def exitRule(self, listener:ParseTreeListener): def நிரை(self): localctx = சீர்Parser.நிரைContext(self, self._ctx, self.state) - self.enterRule(localctx, 76, self.RULE_நிரை) + self.enterRule(localctx, 78, self.RULE_நிரை) self._la = 0 # Token type try: - self.state = 283 + self.enterOuterAlt(localctx, 1) + self.state = 270 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,18,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 257 - self.குறில்() - self.state = 258 + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 268 self.குறில்() pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 260 - self.குறில்() - self.state = 261 - self.நெடில்() + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 269 + self.ஐகாரக்குறுக்கம்() pass + else: + raise NoViableAltException(self) - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 263 - self.குறில்() - self.state = 264 + self.state = 275 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 272 self.குறில்() - self.state = 271 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [247]: - self.state = 265 - self.ஆய்தம்() - pass - elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: - self.state = 267 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 266 - self.ஒற்று() - self.state = 269 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): - break - - pass - else: - raise NoViableAltException(self) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) + elif token in [133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: self.state = 273 - self.குறில்() - self.state = 274 self.நெடில்() - self.state = 281 + pass + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 274 + self.ஐகாரக்குறுக்கம்() + pass + else: + raise NoViableAltException(self) + + self.state = 283 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [19]: + self.state = 277 + self.ஆய்தம்() + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: + self.state = 279 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [247]: - self.state = 275 - self.ஆய்தம்() - pass - elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: - self.state = 277 + _la = self._input.LA(1) + while True: + self.state = 278 + self.ஒற்று() + self.state = 281 self._errHandler.sync(self) _la = self._input.LA(1) - while True: - self.state = 276 - self.ஒற்று() - self.state = 279 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): - break - - pass - else: - raise NoViableAltException(self) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): + break pass - - + elif token in [-1, 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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + pass + else: + pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3049,7 +3117,7 @@ def exitRule(self, listener:ParseTreeListener): def ஒற்று(self): localctx = சீர்Parser.ஒற்றுContext(self, self._ctx, self.state) - self.enterRule(localctx, 78, self.RULE_ஒற்று) + self.enterRule(localctx, 80, self.RULE_ஒற்று) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) @@ -3069,7 +3137,7 @@ def ஒற்று(self): return localctx - class குறில்Context(ParserRuleContext): + class ஆய்தம்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -3078,29 +3146,68 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def getRuleIndex(self): - return சீர்Parser.RULE_குறில் + return சீர்Parser.RULE_ஆய்தம் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகுறில்" ): - listener.enterகுறில்(self) + if hasattr( listener, "enterஆய்தம்" ): + listener.enterஆய்தம்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகுறில்" ): - listener.exitகுறில்(self) + if hasattr( listener, "exitஆய்தம்" ): + listener.exitஆய்தம்(self) - def குறில்(self): + def ஆய்தம்(self): - localctx = சீர்Parser.குறில்Context(self, self._ctx, self.state) - self.enterRule(localctx, 80, self.RULE_குறில்) - self._la = 0 # Token type + localctx = சீர்Parser.ஆய்தம்Context(self, self._ctx, self.state) + self.enterRule(localctx, 82, self.RULE_ஆய்தம்) try: self.enterOuterAlt(localctx, 1) self.state = 287 + self.match(சீர்Parser.T__18) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ஐகாரக்குறுக்கம்Context(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return சீர்Parser.RULE_ஐகாரக்குறுக்கம் + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterஐகாரக்குறுக்கம்" ): + listener.enterஐகாரக்குறுக்கம்(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitஐகாரக்குறுக்கம்" ): + listener.exitஐகாரக்குறுக்கம்(self) + + + + + def ஐகாரக்குறுக்கம்(self): + + localctx = சீர்Parser.ஐகாரக்குறுக்கம்Context(self, self._ctx, self.state) + self.enterRule(localctx, 84, self.RULE_ஐகாரக்குறுக்கம்) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 289 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & -524288) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 1125899906842623) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 274876858368) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -3114,7 +3221,7 @@ def குறில்(self): return localctx - class நெடில்Context(ParserRuleContext): + class குறில்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -3123,29 +3230,29 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def getRuleIndex(self): - return சீர்Parser.RULE_நெடில் + return சீர்Parser.RULE_குறில் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterநெடில்" ): - listener.enterநெடில்(self) + if hasattr( listener, "enterகுறில்" ): + listener.enterகுறில்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitநெடில்" ): - listener.exitநெடில்(self) + if hasattr( listener, "exitகுறில்" ): + listener.exitகுறில்(self) - def நெடில்(self): + def குறில்(self): - localctx = சீர்Parser.நெடில்Context(self, self._ctx, self.state) - self.enterRule(localctx, 82, self.RULE_நெடில்) + localctx = சீர்Parser.குறில்Context(self, self._ctx, self.state) + self.enterRule(localctx, 86, self.RULE_குறில்) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 289 + self.state = 291 _la = self._input.LA(1) - if not(((((_la - 114)) & ~0x3f) == 0 and ((1 << (_la - 114)) & -1) != 0) or ((((_la - 178)) & ~0x3f) == 0 and ((1 << (_la - 178)) & -1) != 0) or ((((_la - 242)) & ~0x3f) == 0 and ((1 << (_la - 242)) & 31) != 0)): + if not(((((_la - 38)) & ~0x3f) == 0 and ((1 << (_la - 38)) & -1) != 0) or ((((_la - 102)) & ~0x3f) == 0 and ((1 << (_la - 102)) & 2147483647) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -3159,7 +3266,7 @@ def நெடில்(self): return localctx - class ஆய்தம்Context(ParserRuleContext): + class நெடில்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -3168,27 +3275,33 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def getRuleIndex(self): - return சீர்Parser.RULE_ஆய்தம் + return சீர்Parser.RULE_நெடில் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterஆய்தம்" ): - listener.enterஆய்தம்(self) + if hasattr( listener, "enterநெடில்" ): + listener.enterநெடில்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitஆய்தம்" ): - listener.exitஆய்தம்(self) + if hasattr( listener, "exitநெடில்" ): + listener.exitநெடில்(self) - def ஆய்தம்(self): + def நெடில்(self): - localctx = சீர்Parser.ஆய்தம்Context(self, self._ctx, self.state) - self.enterRule(localctx, 84, self.RULE_ஆய்தம்) + localctx = சீர்Parser.நெடில்Context(self, self._ctx, self.state) + self.enterRule(localctx, 88, self.RULE_நெடில்) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 291 - self.match(சீர்Parser.T__246) + self.state = 293 + _la = self._input.LA(1) + if not(((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & -1) != 0) or ((((_la - 197)) & ~0x3f) == 0 and ((1 << (_la - 197)) & 2251799813685247) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.interp" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.interp" index fb83eda..145fcff 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.interp" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.interp" @@ -1,6 +1,5 @@ token literal names: null -'\n' 'க்' 'ச்' 'ட்' @@ -19,6 +18,25 @@ null 'வ்' 'ழ்' 'ள்' +'ஃ' +'கை' +'ஙை' +'சை' +'ஞை' +'டை' +'ணை' +'தை' +'நை' +'பை' +'மை' +'யை' +'ரை' +'லை' +'வை' +'ழை' +'ளை' +'றை' +'னை' 'அ' 'இ' 'உ' @@ -120,135 +138,117 @@ null 'ஏ' 'ஐ' 'ஓ' -'ஒள' +'ஔ' 'கா' 'கீ' 'கூ' 'கே' -'கை' 'கோ' 'கௌ' 'ஙா' 'ஙீ' 'ஙூ' 'ஙே' -'ஙை' 'ஙோ' 'ஙௌ' 'சா' 'சீ' 'சூ' 'சே' -'சை' 'சோ' 'சௌ' 'ஞா' 'ஞீ' 'ஞூ' 'ஞே' -'ஞை' 'ஞோ' 'ஞௌ' 'டா' 'டீ' 'டூ' 'டே' -'டை' 'டோ' 'டௌ' 'ணா' 'ணீ' 'ணூ' 'ணே' -'ணை' 'ணோ' 'ணௌ' 'தா' 'தீ' 'தூ' 'தே' -'தை' 'தோ' 'தௌ' 'நா' 'நீ' 'நூ' 'நே' -'நை' 'நோ' 'நௌ' 'பா' 'பீ' 'பூ' 'பே' -'பை' 'போ' 'பௌ' 'மா' 'மீ' 'மூ' 'மே' -'மை' 'மோ' 'மௌ' 'யா' 'யீ' 'யூ' 'யே' -'யை' 'யோ' 'யௌ' 'ரா' 'ரீ' 'ரூ' 'ரே' -'ரை' 'ரோ' 'ரௌ' 'லா' 'லீ' 'லூ' 'லே' -'லை' 'லோ' 'லௌ' 'வா' 'வீ' 'வூ' 'வே' -'வை' 'வோ' 'வௌ' 'ழா' 'ழீ' 'ழூ' 'ழே' -'ழை' 'ழோ' 'ழௌ' 'ளா' 'ளீ' 'ளூ' 'ளே' -'ளை' 'ளோ' 'ளௌ' 'றா' 'றீ' 'றூ' 'றே' -'றை' 'றோ' 'றௌ' 'னா' 'னீ' 'னூ' 'னே' -'னை' 'னோ' 'னௌ' -'ஃ' -' ' +null +null token symbolic names: null @@ -499,8 +499,8 @@ null null null null -null I +NL rule names: வெண்பா @@ -513,14 +513,6 @@ rule names: ஈற்றடி சீர் ஈற்றுச்சீர் -தேமா -புளிமா -கருவிளம் -கூவிளம் -தேமாங்காய் -புளிமாங்காய் -கருவிளங்காய் -கூவிளங்காய் நாள் மலர் காசு @@ -549,17 +541,27 @@ rule names: கூவிளந்தண்ணிழல் கூவிளநறும்பூ கூவிளநறுநிழல் +தேமாங்காய் தேமாங்கனி +புளிமாங்காய் புளிமாங்கனி +கருவிளங்காய் கருவிளங்கனி +கூவிளங்காய் கூவிளங்கனி +தேமா +புளிமா +கருவிளம் +கூவிளம் நேர் +முதல்நிரை நிரை ஒற்று +ஆய்தம் +ஐகாரக்குறுக்கம் குறில் நெடில் -ஆய்தம் atn: -[4, 1, 249, 470, 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, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 117, 8, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 207, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 221, 8, 5, 11, 5, 12, 5, 222, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 250, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 256, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 296, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 302, 8, 23, 1, 24, 1, 24, 3, 24, 306, 8, 24, 1, 25, 1, 25, 3, 25, 310, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 316, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 334, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 344, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 350, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 4, 50, 417, 8, 50, 11, 50, 12, 50, 418, 3, 50, 421, 8, 50, 1, 50, 1, 50, 1, 50, 4, 50, 426, 8, 50, 11, 50, 12, 50, 427, 3, 50, 430, 8, 50, 3, 50, 432, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 4, 51, 444, 8, 51, 11, 51, 12, 51, 445, 3, 51, 448, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 4, 51, 454, 8, 51, 11, 51, 12, 51, 455, 3, 51, 458, 8, 51, 3, 51, 460, 8, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 0, 0, 56, 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, 0, 3, 1, 0, 2, 19, 1, 0, 20, 114, 1, 0, 115, 247, 484, 0, 116, 1, 0, 0, 0, 2, 118, 1, 0, 0, 0, 4, 121, 1, 0, 0, 0, 6, 125, 1, 0, 0, 0, 8, 206, 1, 0, 0, 0, 10, 208, 1, 0, 0, 0, 12, 226, 1, 0, 0, 0, 14, 235, 1, 0, 0, 0, 16, 249, 1, 0, 0, 0, 18, 255, 1, 0, 0, 0, 20, 257, 1, 0, 0, 0, 22, 260, 1, 0, 0, 0, 24, 263, 1, 0, 0, 0, 26, 266, 1, 0, 0, 0, 28, 269, 1, 0, 0, 0, 30, 272, 1, 0, 0, 0, 32, 275, 1, 0, 0, 0, 34, 278, 1, 0, 0, 0, 36, 281, 1, 0, 0, 0, 38, 283, 1, 0, 0, 0, 40, 285, 1, 0, 0, 0, 42, 288, 1, 0, 0, 0, 44, 295, 1, 0, 0, 0, 46, 301, 1, 0, 0, 0, 48, 305, 1, 0, 0, 0, 50, 309, 1, 0, 0, 0, 52, 315, 1, 0, 0, 0, 54, 333, 1, 0, 0, 0, 56, 343, 1, 0, 0, 0, 58, 349, 1, 0, 0, 0, 60, 351, 1, 0, 0, 0, 62, 354, 1, 0, 0, 0, 64, 357, 1, 0, 0, 0, 66, 360, 1, 0, 0, 0, 68, 363, 1, 0, 0, 0, 70, 366, 1, 0, 0, 0, 72, 369, 1, 0, 0, 0, 74, 372, 1, 0, 0, 0, 76, 375, 1, 0, 0, 0, 78, 378, 1, 0, 0, 0, 80, 381, 1, 0, 0, 0, 82, 384, 1, 0, 0, 0, 84, 387, 1, 0, 0, 0, 86, 390, 1, 0, 0, 0, 88, 393, 1, 0, 0, 0, 90, 396, 1, 0, 0, 0, 92, 399, 1, 0, 0, 0, 94, 402, 1, 0, 0, 0, 96, 405, 1, 0, 0, 0, 98, 408, 1, 0, 0, 0, 100, 431, 1, 0, 0, 0, 102, 459, 1, 0, 0, 0, 104, 461, 1, 0, 0, 0, 106, 463, 1, 0, 0, 0, 108, 465, 1, 0, 0, 0, 110, 467, 1, 0, 0, 0, 112, 117, 3, 2, 1, 0, 113, 117, 3, 6, 3, 0, 114, 117, 3, 8, 4, 0, 115, 117, 3, 10, 5, 0, 116, 112, 1, 0, 0, 0, 116, 113, 1, 0, 0, 0, 116, 114, 1, 0, 0, 0, 116, 115, 1, 0, 0, 0, 117, 1, 1, 0, 0, 0, 118, 119, 3, 12, 6, 0, 119, 120, 3, 14, 7, 0, 120, 3, 1, 0, 0, 0, 121, 122, 3, 12, 6, 0, 122, 123, 3, 12, 6, 0, 123, 124, 3, 14, 7, 0, 124, 5, 1, 0, 0, 0, 125, 126, 3, 12, 6, 0, 126, 127, 3, 12, 6, 0, 127, 128, 3, 12, 6, 0, 128, 129, 3, 14, 7, 0, 129, 7, 1, 0, 0, 0, 130, 131, 3, 12, 6, 0, 131, 132, 3, 12, 6, 0, 132, 133, 3, 12, 6, 0, 133, 134, 3, 12, 6, 0, 134, 135, 3, 14, 7, 0, 135, 207, 1, 0, 0, 0, 136, 137, 3, 12, 6, 0, 137, 138, 3, 12, 6, 0, 138, 139, 3, 12, 6, 0, 139, 140, 3, 12, 6, 0, 140, 141, 3, 12, 6, 0, 141, 142, 3, 14, 7, 0, 142, 207, 1, 0, 0, 0, 143, 144, 3, 12, 6, 0, 144, 145, 3, 12, 6, 0, 145, 146, 3, 12, 6, 0, 146, 147, 3, 12, 6, 0, 147, 148, 3, 12, 6, 0, 148, 149, 3, 12, 6, 0, 149, 150, 3, 14, 7, 0, 150, 207, 1, 0, 0, 0, 151, 152, 3, 12, 6, 0, 152, 153, 3, 12, 6, 0, 153, 154, 3, 12, 6, 0, 154, 155, 3, 12, 6, 0, 155, 156, 3, 12, 6, 0, 156, 157, 3, 12, 6, 0, 157, 158, 3, 12, 6, 0, 158, 159, 3, 14, 7, 0, 159, 207, 1, 0, 0, 0, 160, 161, 3, 12, 6, 0, 161, 162, 3, 12, 6, 0, 162, 163, 3, 12, 6, 0, 163, 164, 3, 12, 6, 0, 164, 165, 3, 12, 6, 0, 165, 166, 3, 12, 6, 0, 166, 167, 3, 12, 6, 0, 167, 168, 3, 12, 6, 0, 168, 169, 3, 14, 7, 0, 169, 207, 1, 0, 0, 0, 170, 171, 3, 12, 6, 0, 171, 172, 3, 12, 6, 0, 172, 173, 3, 12, 6, 0, 173, 174, 3, 12, 6, 0, 174, 175, 3, 12, 6, 0, 175, 176, 3, 12, 6, 0, 176, 177, 3, 12, 6, 0, 177, 178, 3, 12, 6, 0, 178, 179, 3, 12, 6, 0, 179, 180, 3, 14, 7, 0, 180, 207, 1, 0, 0, 0, 181, 182, 3, 12, 6, 0, 182, 183, 3, 12, 6, 0, 183, 184, 3, 12, 6, 0, 184, 185, 3, 12, 6, 0, 185, 186, 3, 12, 6, 0, 186, 187, 3, 12, 6, 0, 187, 188, 3, 12, 6, 0, 188, 189, 3, 12, 6, 0, 189, 190, 3, 12, 6, 0, 190, 191, 3, 12, 6, 0, 191, 192, 3, 14, 7, 0, 192, 207, 1, 0, 0, 0, 193, 194, 3, 12, 6, 0, 194, 195, 3, 12, 6, 0, 195, 196, 3, 12, 6, 0, 196, 197, 3, 12, 6, 0, 197, 198, 3, 12, 6, 0, 198, 199, 3, 12, 6, 0, 199, 200, 3, 12, 6, 0, 200, 201, 3, 12, 6, 0, 201, 202, 3, 12, 6, 0, 202, 203, 3, 12, 6, 0, 203, 204, 3, 12, 6, 0, 204, 205, 3, 14, 7, 0, 205, 207, 1, 0, 0, 0, 206, 130, 1, 0, 0, 0, 206, 136, 1, 0, 0, 0, 206, 143, 1, 0, 0, 0, 206, 151, 1, 0, 0, 0, 206, 160, 1, 0, 0, 0, 206, 170, 1, 0, 0, 0, 206, 181, 1, 0, 0, 0, 206, 193, 1, 0, 0, 0, 207, 9, 1, 0, 0, 0, 208, 209, 3, 12, 6, 0, 209, 210, 3, 12, 6, 0, 210, 211, 3, 12, 6, 0, 211, 212, 3, 12, 6, 0, 212, 213, 3, 12, 6, 0, 213, 214, 3, 12, 6, 0, 214, 215, 3, 12, 6, 0, 215, 216, 3, 12, 6, 0, 216, 217, 3, 12, 6, 0, 217, 218, 3, 12, 6, 0, 218, 220, 3, 12, 6, 0, 219, 221, 3, 12, 6, 0, 220, 219, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 220, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 225, 3, 14, 7, 0, 225, 11, 1, 0, 0, 0, 226, 227, 3, 16, 8, 0, 227, 228, 5, 249, 0, 0, 228, 229, 3, 16, 8, 0, 229, 230, 5, 249, 0, 0, 230, 231, 3, 16, 8, 0, 231, 232, 5, 249, 0, 0, 232, 233, 3, 16, 8, 0, 233, 234, 5, 1, 0, 0, 234, 13, 1, 0, 0, 0, 235, 236, 3, 16, 8, 0, 236, 237, 5, 249, 0, 0, 237, 238, 3, 16, 8, 0, 238, 239, 5, 249, 0, 0, 239, 240, 3, 18, 9, 0, 240, 15, 1, 0, 0, 0, 241, 250, 3, 20, 10, 0, 242, 250, 3, 22, 11, 0, 243, 250, 3, 24, 12, 0, 244, 250, 3, 26, 13, 0, 245, 250, 3, 28, 14, 0, 246, 250, 3, 30, 15, 0, 247, 250, 3, 32, 16, 0, 248, 250, 3, 34, 17, 0, 249, 241, 1, 0, 0, 0, 249, 242, 1, 0, 0, 0, 249, 243, 1, 0, 0, 0, 249, 244, 1, 0, 0, 0, 249, 245, 1, 0, 0, 0, 249, 246, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 248, 1, 0, 0, 0, 250, 17, 1, 0, 0, 0, 251, 256, 3, 36, 18, 0, 252, 256, 3, 38, 19, 0, 253, 256, 3, 40, 20, 0, 254, 256, 3, 42, 21, 0, 255, 251, 1, 0, 0, 0, 255, 252, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 254, 1, 0, 0, 0, 256, 19, 1, 0, 0, 0, 257, 258, 3, 100, 50, 0, 258, 259, 3, 100, 50, 0, 259, 21, 1, 0, 0, 0, 260, 261, 3, 102, 51, 0, 261, 262, 3, 100, 50, 0, 262, 23, 1, 0, 0, 0, 263, 264, 3, 102, 51, 0, 264, 265, 3, 102, 51, 0, 265, 25, 1, 0, 0, 0, 266, 267, 3, 100, 50, 0, 267, 268, 3, 102, 51, 0, 268, 27, 1, 0, 0, 0, 269, 270, 3, 20, 10, 0, 270, 271, 3, 100, 50, 0, 271, 29, 1, 0, 0, 0, 272, 273, 3, 22, 11, 0, 273, 274, 3, 100, 50, 0, 274, 31, 1, 0, 0, 0, 275, 276, 3, 24, 12, 0, 276, 277, 3, 100, 50, 0, 277, 33, 1, 0, 0, 0, 278, 279, 3, 26, 13, 0, 279, 280, 3, 100, 50, 0, 280, 35, 1, 0, 0, 0, 281, 282, 3, 100, 50, 0, 282, 37, 1, 0, 0, 0, 283, 284, 3, 102, 51, 0, 284, 39, 1, 0, 0, 0, 285, 286, 3, 100, 50, 0, 286, 287, 3, 100, 50, 0, 287, 41, 1, 0, 0, 0, 288, 289, 3, 102, 51, 0, 289, 290, 3, 100, 50, 0, 290, 43, 1, 0, 0, 0, 291, 296, 3, 92, 46, 0, 292, 296, 3, 94, 47, 0, 293, 296, 3, 96, 48, 0, 294, 296, 3, 98, 49, 0, 295, 291, 1, 0, 0, 0, 295, 292, 1, 0, 0, 0, 295, 293, 1, 0, 0, 0, 295, 294, 1, 0, 0, 0, 296, 45, 1, 0, 0, 0, 297, 302, 3, 20, 10, 0, 298, 302, 3, 22, 11, 0, 299, 302, 3, 24, 12, 0, 300, 302, 3, 26, 13, 0, 301, 297, 1, 0, 0, 0, 301, 298, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 300, 1, 0, 0, 0, 302, 47, 1, 0, 0, 0, 303, 306, 3, 20, 10, 0, 304, 306, 3, 22, 11, 0, 305, 303, 1, 0, 0, 0, 305, 304, 1, 0, 0, 0, 306, 49, 1, 0, 0, 0, 307, 310, 3, 24, 12, 0, 308, 310, 3, 26, 13, 0, 309, 307, 1, 0, 0, 0, 309, 308, 1, 0, 0, 0, 310, 51, 1, 0, 0, 0, 311, 316, 3, 28, 14, 0, 312, 316, 3, 30, 15, 0, 313, 316, 3, 32, 16, 0, 314, 316, 3, 34, 17, 0, 315, 311, 1, 0, 0, 0, 315, 312, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 314, 1, 0, 0, 0, 316, 53, 1, 0, 0, 0, 317, 334, 3, 60, 30, 0, 318, 334, 3, 62, 31, 0, 319, 334, 3, 64, 32, 0, 320, 334, 3, 66, 33, 0, 321, 334, 3, 68, 34, 0, 322, 334, 3, 70, 35, 0, 323, 334, 3, 72, 36, 0, 324, 334, 3, 74, 37, 0, 325, 334, 3, 76, 38, 0, 326, 334, 3, 78, 39, 0, 327, 334, 3, 80, 40, 0, 328, 334, 3, 82, 41, 0, 329, 334, 3, 84, 42, 0, 330, 334, 3, 86, 43, 0, 331, 334, 3, 88, 44, 0, 332, 334, 3, 90, 45, 0, 333, 317, 1, 0, 0, 0, 333, 318, 1, 0, 0, 0, 333, 319, 1, 0, 0, 0, 333, 320, 1, 0, 0, 0, 333, 321, 1, 0, 0, 0, 333, 322, 1, 0, 0, 0, 333, 323, 1, 0, 0, 0, 333, 324, 1, 0, 0, 0, 333, 325, 1, 0, 0, 0, 333, 326, 1, 0, 0, 0, 333, 327, 1, 0, 0, 0, 333, 328, 1, 0, 0, 0, 333, 329, 1, 0, 0, 0, 333, 330, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 332, 1, 0, 0, 0, 334, 55, 1, 0, 0, 0, 335, 344, 3, 28, 14, 0, 336, 344, 3, 92, 46, 0, 337, 344, 3, 30, 15, 0, 338, 344, 3, 94, 47, 0, 339, 344, 3, 32, 16, 0, 340, 344, 3, 96, 48, 0, 341, 344, 3, 34, 17, 0, 342, 344, 3, 98, 49, 0, 343, 335, 1, 0, 0, 0, 343, 336, 1, 0, 0, 0, 343, 337, 1, 0, 0, 0, 343, 338, 1, 0, 0, 0, 343, 339, 1, 0, 0, 0, 343, 340, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 343, 342, 1, 0, 0, 0, 344, 57, 1, 0, 0, 0, 345, 350, 3, 20, 10, 0, 346, 350, 3, 22, 11, 0, 347, 350, 3, 24, 12, 0, 348, 350, 3, 26, 13, 0, 349, 345, 1, 0, 0, 0, 349, 346, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 348, 1, 0, 0, 0, 350, 59, 1, 0, 0, 0, 351, 352, 3, 28, 14, 0, 352, 353, 3, 100, 50, 0, 353, 61, 1, 0, 0, 0, 354, 355, 3, 28, 14, 0, 355, 356, 3, 102, 51, 0, 356, 63, 1, 0, 0, 0, 357, 358, 3, 92, 46, 0, 358, 359, 3, 100, 50, 0, 359, 65, 1, 0, 0, 0, 360, 361, 3, 92, 46, 0, 361, 362, 3, 102, 51, 0, 362, 67, 1, 0, 0, 0, 363, 364, 3, 30, 15, 0, 364, 365, 3, 100, 50, 0, 365, 69, 1, 0, 0, 0, 366, 367, 3, 30, 15, 0, 367, 368, 3, 102, 51, 0, 368, 71, 1, 0, 0, 0, 369, 370, 3, 94, 47, 0, 370, 371, 3, 100, 50, 0, 371, 73, 1, 0, 0, 0, 372, 373, 3, 94, 47, 0, 373, 374, 3, 102, 51, 0, 374, 75, 1, 0, 0, 0, 375, 376, 3, 32, 16, 0, 376, 377, 3, 100, 50, 0, 377, 77, 1, 0, 0, 0, 378, 379, 3, 32, 16, 0, 379, 380, 3, 102, 51, 0, 380, 79, 1, 0, 0, 0, 381, 382, 3, 96, 48, 0, 382, 383, 3, 100, 50, 0, 383, 81, 1, 0, 0, 0, 384, 385, 3, 96, 48, 0, 385, 386, 3, 102, 51, 0, 386, 83, 1, 0, 0, 0, 387, 388, 3, 34, 17, 0, 388, 389, 3, 100, 50, 0, 389, 85, 1, 0, 0, 0, 390, 391, 3, 34, 17, 0, 391, 392, 3, 102, 51, 0, 392, 87, 1, 0, 0, 0, 393, 394, 3, 98, 49, 0, 394, 395, 3, 100, 50, 0, 395, 89, 1, 0, 0, 0, 396, 397, 3, 98, 49, 0, 397, 398, 3, 102, 51, 0, 398, 91, 1, 0, 0, 0, 399, 400, 3, 20, 10, 0, 400, 401, 3, 102, 51, 0, 401, 93, 1, 0, 0, 0, 402, 403, 3, 22, 11, 0, 403, 404, 3, 102, 51, 0, 404, 95, 1, 0, 0, 0, 405, 406, 3, 24, 12, 0, 406, 407, 3, 102, 51, 0, 407, 97, 1, 0, 0, 0, 408, 409, 3, 26, 13, 0, 409, 410, 3, 102, 51, 0, 410, 99, 1, 0, 0, 0, 411, 432, 3, 106, 53, 0, 412, 432, 3, 108, 54, 0, 413, 420, 3, 106, 53, 0, 414, 421, 3, 110, 55, 0, 415, 417, 3, 104, 52, 0, 416, 415, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 421, 1, 0, 0, 0, 420, 414, 1, 0, 0, 0, 420, 416, 1, 0, 0, 0, 421, 432, 1, 0, 0, 0, 422, 429, 3, 108, 54, 0, 423, 430, 3, 110, 55, 0, 424, 426, 3, 104, 52, 0, 425, 424, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 430, 1, 0, 0, 0, 429, 423, 1, 0, 0, 0, 429, 425, 1, 0, 0, 0, 430, 432, 1, 0, 0, 0, 431, 411, 1, 0, 0, 0, 431, 412, 1, 0, 0, 0, 431, 413, 1, 0, 0, 0, 431, 422, 1, 0, 0, 0, 432, 101, 1, 0, 0, 0, 433, 434, 3, 106, 53, 0, 434, 435, 3, 106, 53, 0, 435, 460, 1, 0, 0, 0, 436, 437, 3, 106, 53, 0, 437, 438, 3, 108, 54, 0, 438, 460, 1, 0, 0, 0, 439, 440, 3, 106, 53, 0, 440, 447, 3, 106, 53, 0, 441, 448, 3, 110, 55, 0, 442, 444, 3, 104, 52, 0, 443, 442, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 448, 1, 0, 0, 0, 447, 441, 1, 0, 0, 0, 447, 443, 1, 0, 0, 0, 448, 460, 1, 0, 0, 0, 449, 450, 3, 106, 53, 0, 450, 457, 3, 108, 54, 0, 451, 458, 3, 110, 55, 0, 452, 454, 3, 104, 52, 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, 458, 1, 0, 0, 0, 457, 451, 1, 0, 0, 0, 457, 453, 1, 0, 0, 0, 458, 460, 1, 0, 0, 0, 459, 433, 1, 0, 0, 0, 459, 436, 1, 0, 0, 0, 459, 439, 1, 0, 0, 0, 459, 449, 1, 0, 0, 0, 460, 103, 1, 0, 0, 0, 461, 462, 7, 0, 0, 0, 462, 105, 1, 0, 0, 0, 463, 464, 7, 1, 0, 0, 464, 107, 1, 0, 0, 0, 465, 466, 7, 2, 0, 0, 466, 109, 1, 0, 0, 0, 467, 468, 5, 248, 0, 0, 468, 111, 1, 0, 0, 0, 23, 116, 206, 222, 249, 255, 295, 301, 305, 309, 315, 333, 343, 349, 418, 420, 427, 429, 431, 445, 447, 455, 457, 459] \ No newline at end of file +[4, 1, 249, 472, 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, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 121, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 213, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 227, 8, 5, 11, 5, 12, 5, 228, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 256, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 262, 8, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 278, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 284, 8, 15, 1, 16, 1, 16, 3, 16, 288, 8, 16, 1, 17, 1, 17, 3, 17, 292, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 298, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 316, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 326, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 332, 8, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 3, 50, 421, 8, 50, 1, 50, 1, 50, 4, 50, 425, 8, 50, 11, 50, 12, 50, 426, 3, 50, 429, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 435, 8, 51, 1, 51, 1, 51, 4, 51, 439, 8, 51, 11, 51, 12, 51, 440, 3, 51, 443, 8, 51, 1, 52, 1, 52, 3, 52, 447, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 452, 8, 52, 1, 52, 1, 52, 4, 52, 456, 8, 52, 11, 52, 12, 52, 457, 3, 52, 460, 8, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 0, 0, 58, 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, 0, 4, 1, 0, 1, 18, 1, 0, 20, 37, 1, 0, 38, 132, 1, 0, 133, 247, 486, 0, 120, 1, 0, 0, 0, 2, 124, 1, 0, 0, 0, 4, 127, 1, 0, 0, 0, 6, 131, 1, 0, 0, 0, 8, 212, 1, 0, 0, 0, 10, 214, 1, 0, 0, 0, 12, 232, 1, 0, 0, 0, 14, 241, 1, 0, 0, 0, 16, 255, 1, 0, 0, 0, 18, 261, 1, 0, 0, 0, 20, 263, 1, 0, 0, 0, 22, 265, 1, 0, 0, 0, 24, 267, 1, 0, 0, 0, 26, 270, 1, 0, 0, 0, 28, 277, 1, 0, 0, 0, 30, 283, 1, 0, 0, 0, 32, 287, 1, 0, 0, 0, 34, 291, 1, 0, 0, 0, 36, 297, 1, 0, 0, 0, 38, 315, 1, 0, 0, 0, 40, 325, 1, 0, 0, 0, 42, 331, 1, 0, 0, 0, 44, 333, 1, 0, 0, 0, 46, 336, 1, 0, 0, 0, 48, 339, 1, 0, 0, 0, 50, 342, 1, 0, 0, 0, 52, 345, 1, 0, 0, 0, 54, 348, 1, 0, 0, 0, 56, 351, 1, 0, 0, 0, 58, 354, 1, 0, 0, 0, 60, 357, 1, 0, 0, 0, 62, 360, 1, 0, 0, 0, 64, 363, 1, 0, 0, 0, 66, 366, 1, 0, 0, 0, 68, 369, 1, 0, 0, 0, 70, 372, 1, 0, 0, 0, 72, 375, 1, 0, 0, 0, 74, 378, 1, 0, 0, 0, 76, 381, 1, 0, 0, 0, 78, 384, 1, 0, 0, 0, 80, 387, 1, 0, 0, 0, 82, 390, 1, 0, 0, 0, 84, 393, 1, 0, 0, 0, 86, 396, 1, 0, 0, 0, 88, 399, 1, 0, 0, 0, 90, 402, 1, 0, 0, 0, 92, 405, 1, 0, 0, 0, 94, 408, 1, 0, 0, 0, 96, 411, 1, 0, 0, 0, 98, 414, 1, 0, 0, 0, 100, 420, 1, 0, 0, 0, 102, 430, 1, 0, 0, 0, 104, 446, 1, 0, 0, 0, 106, 461, 1, 0, 0, 0, 108, 463, 1, 0, 0, 0, 110, 465, 1, 0, 0, 0, 112, 467, 1, 0, 0, 0, 114, 469, 1, 0, 0, 0, 116, 121, 3, 2, 1, 0, 117, 121, 3, 6, 3, 0, 118, 121, 3, 8, 4, 0, 119, 121, 3, 10, 5, 0, 120, 116, 1, 0, 0, 0, 120, 117, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 120, 119, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 123, 5, 0, 0, 1, 123, 1, 1, 0, 0, 0, 124, 125, 3, 12, 6, 0, 125, 126, 3, 14, 7, 0, 126, 3, 1, 0, 0, 0, 127, 128, 3, 12, 6, 0, 128, 129, 3, 12, 6, 0, 129, 130, 3, 14, 7, 0, 130, 5, 1, 0, 0, 0, 131, 132, 3, 12, 6, 0, 132, 133, 3, 12, 6, 0, 133, 134, 3, 12, 6, 0, 134, 135, 3, 14, 7, 0, 135, 7, 1, 0, 0, 0, 136, 137, 3, 12, 6, 0, 137, 138, 3, 12, 6, 0, 138, 139, 3, 12, 6, 0, 139, 140, 3, 12, 6, 0, 140, 141, 3, 14, 7, 0, 141, 213, 1, 0, 0, 0, 142, 143, 3, 12, 6, 0, 143, 144, 3, 12, 6, 0, 144, 145, 3, 12, 6, 0, 145, 146, 3, 12, 6, 0, 146, 147, 3, 12, 6, 0, 147, 148, 3, 14, 7, 0, 148, 213, 1, 0, 0, 0, 149, 150, 3, 12, 6, 0, 150, 151, 3, 12, 6, 0, 151, 152, 3, 12, 6, 0, 152, 153, 3, 12, 6, 0, 153, 154, 3, 12, 6, 0, 154, 155, 3, 12, 6, 0, 155, 156, 3, 14, 7, 0, 156, 213, 1, 0, 0, 0, 157, 158, 3, 12, 6, 0, 158, 159, 3, 12, 6, 0, 159, 160, 3, 12, 6, 0, 160, 161, 3, 12, 6, 0, 161, 162, 3, 12, 6, 0, 162, 163, 3, 12, 6, 0, 163, 164, 3, 12, 6, 0, 164, 165, 3, 14, 7, 0, 165, 213, 1, 0, 0, 0, 166, 167, 3, 12, 6, 0, 167, 168, 3, 12, 6, 0, 168, 169, 3, 12, 6, 0, 169, 170, 3, 12, 6, 0, 170, 171, 3, 12, 6, 0, 171, 172, 3, 12, 6, 0, 172, 173, 3, 12, 6, 0, 173, 174, 3, 12, 6, 0, 174, 175, 3, 14, 7, 0, 175, 213, 1, 0, 0, 0, 176, 177, 3, 12, 6, 0, 177, 178, 3, 12, 6, 0, 178, 179, 3, 12, 6, 0, 179, 180, 3, 12, 6, 0, 180, 181, 3, 12, 6, 0, 181, 182, 3, 12, 6, 0, 182, 183, 3, 12, 6, 0, 183, 184, 3, 12, 6, 0, 184, 185, 3, 12, 6, 0, 185, 186, 3, 14, 7, 0, 186, 213, 1, 0, 0, 0, 187, 188, 3, 12, 6, 0, 188, 189, 3, 12, 6, 0, 189, 190, 3, 12, 6, 0, 190, 191, 3, 12, 6, 0, 191, 192, 3, 12, 6, 0, 192, 193, 3, 12, 6, 0, 193, 194, 3, 12, 6, 0, 194, 195, 3, 12, 6, 0, 195, 196, 3, 12, 6, 0, 196, 197, 3, 12, 6, 0, 197, 198, 3, 14, 7, 0, 198, 213, 1, 0, 0, 0, 199, 200, 3, 12, 6, 0, 200, 201, 3, 12, 6, 0, 201, 202, 3, 12, 6, 0, 202, 203, 3, 12, 6, 0, 203, 204, 3, 12, 6, 0, 204, 205, 3, 12, 6, 0, 205, 206, 3, 12, 6, 0, 206, 207, 3, 12, 6, 0, 207, 208, 3, 12, 6, 0, 208, 209, 3, 12, 6, 0, 209, 210, 3, 12, 6, 0, 210, 211, 3, 14, 7, 0, 211, 213, 1, 0, 0, 0, 212, 136, 1, 0, 0, 0, 212, 142, 1, 0, 0, 0, 212, 149, 1, 0, 0, 0, 212, 157, 1, 0, 0, 0, 212, 166, 1, 0, 0, 0, 212, 176, 1, 0, 0, 0, 212, 187, 1, 0, 0, 0, 212, 199, 1, 0, 0, 0, 213, 9, 1, 0, 0, 0, 214, 215, 3, 12, 6, 0, 215, 216, 3, 12, 6, 0, 216, 217, 3, 12, 6, 0, 217, 218, 3, 12, 6, 0, 218, 219, 3, 12, 6, 0, 219, 220, 3, 12, 6, 0, 220, 221, 3, 12, 6, 0, 221, 222, 3, 12, 6, 0, 222, 223, 3, 12, 6, 0, 223, 224, 3, 12, 6, 0, 224, 226, 3, 12, 6, 0, 225, 227, 3, 12, 6, 0, 226, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 231, 3, 14, 7, 0, 231, 11, 1, 0, 0, 0, 232, 233, 3, 16, 8, 0, 233, 234, 5, 248, 0, 0, 234, 235, 3, 16, 8, 0, 235, 236, 5, 248, 0, 0, 236, 237, 3, 16, 8, 0, 237, 238, 5, 248, 0, 0, 238, 239, 3, 16, 8, 0, 239, 240, 5, 249, 0, 0, 240, 13, 1, 0, 0, 0, 241, 242, 3, 16, 8, 0, 242, 243, 5, 248, 0, 0, 243, 244, 3, 16, 8, 0, 244, 245, 5, 248, 0, 0, 245, 246, 3, 18, 9, 0, 246, 15, 1, 0, 0, 0, 247, 256, 3, 92, 46, 0, 248, 256, 3, 94, 47, 0, 249, 256, 3, 96, 48, 0, 250, 256, 3, 98, 49, 0, 251, 256, 3, 76, 38, 0, 252, 256, 3, 80, 40, 0, 253, 256, 3, 84, 42, 0, 254, 256, 3, 88, 44, 0, 255, 247, 1, 0, 0, 0, 255, 248, 1, 0, 0, 0, 255, 249, 1, 0, 0, 0, 255, 250, 1, 0, 0, 0, 255, 251, 1, 0, 0, 0, 255, 252, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 254, 1, 0, 0, 0, 256, 17, 1, 0, 0, 0, 257, 262, 3, 20, 10, 0, 258, 262, 3, 22, 11, 0, 259, 262, 3, 24, 12, 0, 260, 262, 3, 26, 13, 0, 261, 257, 1, 0, 0, 0, 261, 258, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 260, 1, 0, 0, 0, 262, 19, 1, 0, 0, 0, 263, 264, 3, 100, 50, 0, 264, 21, 1, 0, 0, 0, 265, 266, 3, 102, 51, 0, 266, 23, 1, 0, 0, 0, 267, 268, 3, 100, 50, 0, 268, 269, 3, 100, 50, 0, 269, 25, 1, 0, 0, 0, 270, 271, 3, 102, 51, 0, 271, 272, 3, 100, 50, 0, 272, 27, 1, 0, 0, 0, 273, 278, 3, 78, 39, 0, 274, 278, 3, 82, 41, 0, 275, 278, 3, 86, 43, 0, 276, 278, 3, 90, 45, 0, 277, 273, 1, 0, 0, 0, 277, 274, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 277, 276, 1, 0, 0, 0, 278, 29, 1, 0, 0, 0, 279, 284, 3, 92, 46, 0, 280, 284, 3, 94, 47, 0, 281, 284, 3, 96, 48, 0, 282, 284, 3, 98, 49, 0, 283, 279, 1, 0, 0, 0, 283, 280, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 283, 282, 1, 0, 0, 0, 284, 31, 1, 0, 0, 0, 285, 288, 3, 92, 46, 0, 286, 288, 3, 94, 47, 0, 287, 285, 1, 0, 0, 0, 287, 286, 1, 0, 0, 0, 288, 33, 1, 0, 0, 0, 289, 292, 3, 96, 48, 0, 290, 292, 3, 98, 49, 0, 291, 289, 1, 0, 0, 0, 291, 290, 1, 0, 0, 0, 292, 35, 1, 0, 0, 0, 293, 298, 3, 76, 38, 0, 294, 298, 3, 80, 40, 0, 295, 298, 3, 84, 42, 0, 296, 298, 3, 88, 44, 0, 297, 293, 1, 0, 0, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 297, 296, 1, 0, 0, 0, 298, 37, 1, 0, 0, 0, 299, 316, 3, 44, 22, 0, 300, 316, 3, 52, 26, 0, 301, 316, 3, 60, 30, 0, 302, 316, 3, 68, 34, 0, 303, 316, 3, 48, 24, 0, 304, 316, 3, 56, 28, 0, 305, 316, 3, 64, 32, 0, 306, 316, 3, 72, 36, 0, 307, 316, 3, 46, 23, 0, 308, 316, 3, 54, 27, 0, 309, 316, 3, 62, 31, 0, 310, 316, 3, 70, 35, 0, 311, 316, 3, 50, 25, 0, 312, 316, 3, 58, 29, 0, 313, 316, 3, 66, 33, 0, 314, 316, 3, 74, 37, 0, 315, 299, 1, 0, 0, 0, 315, 300, 1, 0, 0, 0, 315, 301, 1, 0, 0, 0, 315, 302, 1, 0, 0, 0, 315, 303, 1, 0, 0, 0, 315, 304, 1, 0, 0, 0, 315, 305, 1, 0, 0, 0, 315, 306, 1, 0, 0, 0, 315, 307, 1, 0, 0, 0, 315, 308, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 310, 1, 0, 0, 0, 315, 311, 1, 0, 0, 0, 315, 312, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 314, 1, 0, 0, 0, 316, 39, 1, 0, 0, 0, 317, 326, 3, 76, 38, 0, 318, 326, 3, 80, 40, 0, 319, 326, 3, 84, 42, 0, 320, 326, 3, 88, 44, 0, 321, 326, 3, 78, 39, 0, 322, 326, 3, 82, 41, 0, 323, 326, 3, 86, 43, 0, 324, 326, 3, 90, 45, 0, 325, 317, 1, 0, 0, 0, 325, 318, 1, 0, 0, 0, 325, 319, 1, 0, 0, 0, 325, 320, 1, 0, 0, 0, 325, 321, 1, 0, 0, 0, 325, 322, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 324, 1, 0, 0, 0, 326, 41, 1, 0, 0, 0, 327, 332, 3, 92, 46, 0, 328, 332, 3, 94, 47, 0, 329, 332, 3, 96, 48, 0, 330, 332, 3, 98, 49, 0, 331, 327, 1, 0, 0, 0, 331, 328, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 331, 330, 1, 0, 0, 0, 332, 43, 1, 0, 0, 0, 333, 334, 3, 76, 38, 0, 334, 335, 3, 100, 50, 0, 335, 45, 1, 0, 0, 0, 336, 337, 3, 76, 38, 0, 337, 338, 3, 104, 52, 0, 338, 47, 1, 0, 0, 0, 339, 340, 3, 78, 39, 0, 340, 341, 3, 100, 50, 0, 341, 49, 1, 0, 0, 0, 342, 343, 3, 78, 39, 0, 343, 344, 3, 104, 52, 0, 344, 51, 1, 0, 0, 0, 345, 346, 3, 80, 40, 0, 346, 347, 3, 100, 50, 0, 347, 53, 1, 0, 0, 0, 348, 349, 3, 80, 40, 0, 349, 350, 3, 104, 52, 0, 350, 55, 1, 0, 0, 0, 351, 352, 3, 82, 41, 0, 352, 353, 3, 100, 50, 0, 353, 57, 1, 0, 0, 0, 354, 355, 3, 82, 41, 0, 355, 356, 3, 104, 52, 0, 356, 59, 1, 0, 0, 0, 357, 358, 3, 84, 42, 0, 358, 359, 3, 100, 50, 0, 359, 61, 1, 0, 0, 0, 360, 361, 3, 84, 42, 0, 361, 362, 3, 104, 52, 0, 362, 63, 1, 0, 0, 0, 363, 364, 3, 86, 43, 0, 364, 365, 3, 100, 50, 0, 365, 65, 1, 0, 0, 0, 366, 367, 3, 86, 43, 0, 367, 368, 3, 104, 52, 0, 368, 67, 1, 0, 0, 0, 369, 370, 3, 88, 44, 0, 370, 371, 3, 100, 50, 0, 371, 69, 1, 0, 0, 0, 372, 373, 3, 88, 44, 0, 373, 374, 3, 104, 52, 0, 374, 71, 1, 0, 0, 0, 375, 376, 3, 90, 45, 0, 376, 377, 3, 100, 50, 0, 377, 73, 1, 0, 0, 0, 378, 379, 3, 90, 45, 0, 379, 380, 3, 104, 52, 0, 380, 75, 1, 0, 0, 0, 381, 382, 3, 92, 46, 0, 382, 383, 3, 100, 50, 0, 383, 77, 1, 0, 0, 0, 384, 385, 3, 92, 46, 0, 385, 386, 3, 104, 52, 0, 386, 79, 1, 0, 0, 0, 387, 388, 3, 94, 47, 0, 388, 389, 3, 100, 50, 0, 389, 81, 1, 0, 0, 0, 390, 391, 3, 94, 47, 0, 391, 392, 3, 104, 52, 0, 392, 83, 1, 0, 0, 0, 393, 394, 3, 96, 48, 0, 394, 395, 3, 100, 50, 0, 395, 85, 1, 0, 0, 0, 396, 397, 3, 96, 48, 0, 397, 398, 3, 104, 52, 0, 398, 87, 1, 0, 0, 0, 399, 400, 3, 98, 49, 0, 400, 401, 3, 100, 50, 0, 401, 89, 1, 0, 0, 0, 402, 403, 3, 98, 49, 0, 403, 404, 3, 104, 52, 0, 404, 91, 1, 0, 0, 0, 405, 406, 3, 100, 50, 0, 406, 407, 3, 100, 50, 0, 407, 93, 1, 0, 0, 0, 408, 409, 3, 102, 51, 0, 409, 410, 3, 100, 50, 0, 410, 95, 1, 0, 0, 0, 411, 412, 3, 102, 51, 0, 412, 413, 3, 104, 52, 0, 413, 97, 1, 0, 0, 0, 414, 415, 3, 100, 50, 0, 415, 416, 3, 104, 52, 0, 416, 99, 1, 0, 0, 0, 417, 421, 3, 112, 56, 0, 418, 421, 3, 114, 57, 0, 419, 421, 3, 110, 55, 0, 420, 417, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 420, 419, 1, 0, 0, 0, 421, 428, 1, 0, 0, 0, 422, 429, 3, 108, 54, 0, 423, 425, 3, 106, 53, 0, 424, 423, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 429, 1, 0, 0, 0, 428, 422, 1, 0, 0, 0, 428, 424, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 101, 1, 0, 0, 0, 430, 434, 3, 112, 56, 0, 431, 435, 3, 112, 56, 0, 432, 435, 3, 114, 57, 0, 433, 435, 3, 110, 55, 0, 434, 431, 1, 0, 0, 0, 434, 432, 1, 0, 0, 0, 434, 433, 1, 0, 0, 0, 435, 442, 1, 0, 0, 0, 436, 443, 3, 108, 54, 0, 437, 439, 3, 106, 53, 0, 438, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 443, 1, 0, 0, 0, 442, 436, 1, 0, 0, 0, 442, 438, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, 103, 1, 0, 0, 0, 444, 447, 3, 112, 56, 0, 445, 447, 3, 110, 55, 0, 446, 444, 1, 0, 0, 0, 446, 445, 1, 0, 0, 0, 447, 451, 1, 0, 0, 0, 448, 452, 3, 112, 56, 0, 449, 452, 3, 114, 57, 0, 450, 452, 3, 110, 55, 0, 451, 448, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 450, 1, 0, 0, 0, 452, 459, 1, 0, 0, 0, 453, 460, 3, 108, 54, 0, 454, 456, 3, 106, 53, 0, 455, 454, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 460, 1, 0, 0, 0, 459, 453, 1, 0, 0, 0, 459, 455, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 105, 1, 0, 0, 0, 461, 462, 7, 0, 0, 0, 462, 107, 1, 0, 0, 0, 463, 464, 5, 19, 0, 0, 464, 109, 1, 0, 0, 0, 465, 466, 7, 1, 0, 0, 466, 111, 1, 0, 0, 0, 467, 468, 7, 2, 0, 0, 468, 113, 1, 0, 0, 0, 469, 470, 7, 3, 0, 0, 470, 115, 1, 0, 0, 0, 23, 120, 212, 228, 255, 261, 277, 283, 287, 291, 297, 315, 325, 331, 420, 426, 428, 434, 440, 442, 446, 451, 457, 459] \ No newline at end of file diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.tokens" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.tokens" index e6be6e7..c562079 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.tokens" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.tokens" @@ -245,254 +245,252 @@ T__243=244 T__244=245 T__245=246 T__246=247 -T__247=248 -I=249 -'\n'=1 -'க்'=2 -'ச்'=3 -'ட்'=4 -'த்'=5 -'ப்'=6 -'ற்'=7 -'ஞ்'=8 -'ங்'=9 -'ண்'=10 -'ந்'=11 -'ம்'=12 -'ன்'=13 -'ய்'=14 -'ர்'=15 -'ல்'=16 -'வ்'=17 -'ழ்'=18 -'ள்'=19 -'அ'=20 -'இ'=21 -'உ'=22 -'எ'=23 -'ஒ'=24 -'க'=25 -'கி'=26 -'கு'=27 -'கெ'=28 -'கொ'=29 -'ங'=30 -'ஙி'=31 -'ஙு'=32 -'ஙெ'=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 -'ஏ'=118 -'ஐ'=119 -'ஓ'=120 -'ஒள'=121 -'கா'=122 -'கீ'=123 -'கூ'=124 -'கே'=125 -'கை'=126 -'கோ'=127 -'கௌ'=128 -'ஙா'=129 -'ஙீ'=130 -'ஙூ'=131 -'ஙே'=132 -'ஙை'=133 -'ஙோ'=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 -'ணோ'=162 -'ணௌ'=163 -'தா'=164 -'தீ'=165 -'தூ'=166 -'தே'=167 -'தை'=168 -'தோ'=169 -'தௌ'=170 -'நா'=171 -'நீ'=172 -'நூ'=173 -'நே'=174 -'நை'=175 -'நோ'=176 -'நௌ'=177 -'பா'=178 -'பீ'=179 -'பூ'=180 -'பே'=181 -'பை'=182 -'போ'=183 -'பௌ'=184 -'மா'=185 -'மீ'=186 -'மூ'=187 -'மே'=188 -'மை'=189 -'மோ'=190 -'மௌ'=191 -'யா'=192 -'யீ'=193 -'யூ'=194 -'யே'=195 -'யை'=196 -'யோ'=197 -'யௌ'=198 -'ரா'=199 -'ரீ'=200 -'ரூ'=201 -'ரே'=202 -'ரை'=203 -'ரோ'=204 -'ரௌ'=205 -'லா'=206 -'லீ'=207 -'லூ'=208 -'லே'=209 -'லை'=210 -'லோ'=211 -'லௌ'=212 -'வா'=213 -'வீ'=214 -'வூ'=215 -'வே'=216 -'வை'=217 -'வோ'=218 -'வௌ'=219 -'ழா'=220 -'ழீ'=221 -'ழூ'=222 -'ழே'=223 -'ழை'=224 -'ழோ'=225 -'ழௌ'=226 -'ளா'=227 -'ளீ'=228 -'ளூ'=229 -'ளே'=230 -'ளை'=231 -'ளோ'=232 -'ளௌ'=233 -'றா'=234 -'றீ'=235 -'றூ'=236 -'றே'=237 -'றை'=238 -'றோ'=239 -'றௌ'=240 -'னா'=241 -'னீ'=242 -'னூ'=243 -'னே'=244 -'னை'=245 +I=248 +NL=249 +'க்'=1 +'ச்'=2 +'ட்'=3 +'த்'=4 +'ப்'=5 +'ற்'=6 +'ஞ்'=7 +'ங்'=8 +'ண்'=9 +'ந்'=10 +'ம்'=11 +'ன்'=12 +'ய்'=13 +'ர்'=14 +'ல்'=15 +'வ்'=16 +'ழ்'=17 +'ள்'=18 +'ஃ'=19 +'கை'=20 +'ஙை'=21 +'சை'=22 +'ஞை'=23 +'டை'=24 +'ணை'=25 +'தை'=26 +'நை'=27 +'பை'=28 +'மை'=29 +'யை'=30 +'ரை'=31 +'லை'=32 +'வை'=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 +'ள'=118 +'ளி'=119 +'ளு'=120 +'ளெ'=121 +'ளொ'=122 +'ற'=123 +'றி'=124 +'று'=125 +'றெ'=126 +'றொ'=127 +'ன'=128 +'னி'=129 +'னு'=130 +'னெ'=131 +'னொ'=132 +'ஆ'=133 +'ஈ'=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 +'ஞோ'=162 +'ஞௌ'=163 +'டா'=164 +'டீ'=165 +'டூ'=166 +'டே'=167 +'டோ'=168 +'டௌ'=169 +'ணா'=170 +'ணீ'=171 +'ணூ'=172 +'ணே'=173 +'ணோ'=174 +'ணௌ'=175 +'தா'=176 +'தீ'=177 +'தூ'=178 +'தே'=179 +'தோ'=180 +'தௌ'=181 +'நா'=182 +'நீ'=183 +'நூ'=184 +'நே'=185 +'நோ'=186 +'நௌ'=187 +'பா'=188 +'பீ'=189 +'பூ'=190 +'பே'=191 +'போ'=192 +'பௌ'=193 +'மா'=194 +'மீ'=195 +'மூ'=196 +'மே'=197 +'மோ'=198 +'மௌ'=199 +'யா'=200 +'யீ'=201 +'யூ'=202 +'யே'=203 +'யோ'=204 +'யௌ'=205 +'ரா'=206 +'ரீ'=207 +'ரூ'=208 +'ரே'=209 +'ரோ'=210 +'ரௌ'=211 +'லா'=212 +'லீ'=213 +'லூ'=214 +'லே'=215 +'லோ'=216 +'லௌ'=217 +'வா'=218 +'வீ'=219 +'வூ'=220 +'வே'=221 +'வோ'=222 +'வௌ'=223 +'ழா'=224 +'ழீ'=225 +'ழூ'=226 +'ழே'=227 +'ழோ'=228 +'ழௌ'=229 +'ளா'=230 +'ளீ'=231 +'ளூ'=232 +'ளே'=233 +'ளோ'=234 +'ளௌ'=235 +'றா'=236 +'றீ'=237 +'றூ'=238 +'றே'=239 +'றோ'=240 +'றௌ'=241 +'னா'=242 +'னீ'=243 +'னூ'=244 +'னே'=245 'னோ'=246 'னௌ'=247 -'ஃ'=248 -' '=249 diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.interp" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.interp" index 946aaca..31428a7 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.interp" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.interp" @@ -1,6 +1,5 @@ token literal names: null -'\n' 'க்' 'ச்' 'ட்' @@ -19,6 +18,25 @@ null 'வ்' 'ழ்' 'ள்' +'ஃ' +'கை' +'ஙை' +'சை' +'ஞை' +'டை' +'ணை' +'தை' +'நை' +'பை' +'மை' +'யை' +'ரை' +'லை' +'வை' +'ழை' +'ளை' +'றை' +'னை' 'அ' 'இ' 'உ' @@ -120,135 +138,117 @@ null 'ஏ' 'ஐ' 'ஓ' -'ஒள' +'ஔ' 'கா' 'கீ' 'கூ' 'கே' -'கை' 'கோ' 'கௌ' 'ஙா' 'ஙீ' 'ஙூ' 'ஙே' -'ஙை' 'ஙோ' 'ஙௌ' 'சா' 'சீ' 'சூ' 'சே' -'சை' 'சோ' 'சௌ' 'ஞா' 'ஞீ' 'ஞூ' 'ஞே' -'ஞை' 'ஞோ' 'ஞௌ' 'டா' 'டீ' 'டூ' 'டே' -'டை' 'டோ' 'டௌ' 'ணா' 'ணீ' 'ணூ' 'ணே' -'ணை' 'ணோ' 'ணௌ' 'தா' 'தீ' 'தூ' 'தே' -'தை' 'தோ' 'தௌ' 'நா' 'நீ' 'நூ' 'நே' -'நை' 'நோ' 'நௌ' 'பா' 'பீ' 'பூ' 'பே' -'பை' 'போ' 'பௌ' 'மா' 'மீ' 'மூ' 'மே' -'மை' 'மோ' 'மௌ' 'யா' 'யீ' 'யூ' 'யே' -'யை' 'யோ' 'யௌ' 'ரா' 'ரீ' 'ரூ' 'ரே' -'ரை' 'ரோ' 'ரௌ' 'லா' 'லீ' 'லூ' 'லே' -'லை' 'லோ' 'லௌ' 'வா' 'வீ' 'வூ' 'வே' -'வை' 'வோ' 'வௌ' 'ழா' 'ழீ' 'ழூ' 'ழே' -'ழை' 'ழோ' 'ழௌ' 'ளா' 'ளீ' 'ளூ' 'ளே' -'ளை' 'ளோ' 'ளௌ' 'றா' 'றீ' 'றூ' 'றே' -'றை' 'றோ' 'றௌ' 'னா' 'னீ' 'னூ' 'னே' -'னை' 'னோ' 'னௌ' -'ஃ' -' ' +null +null token symbolic names: null @@ -499,8 +499,8 @@ null null null null -null I +NL rule names: T__0 @@ -750,8 +750,8 @@ T__243 T__244 T__245 T__246 -T__247 I +NL channel names: DEFAULT_TOKEN_CHANNEL @@ -761,4 +761,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 249, 1214, 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, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 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, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 248, 1, 248, 0, 0, 249, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 1, 0, 0, 1213, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 1, 499, 1, 0, 0, 0, 3, 501, 1, 0, 0, 0, 5, 504, 1, 0, 0, 0, 7, 507, 1, 0, 0, 0, 9, 510, 1, 0, 0, 0, 11, 513, 1, 0, 0, 0, 13, 516, 1, 0, 0, 0, 15, 519, 1, 0, 0, 0, 17, 522, 1, 0, 0, 0, 19, 525, 1, 0, 0, 0, 21, 528, 1, 0, 0, 0, 23, 531, 1, 0, 0, 0, 25, 534, 1, 0, 0, 0, 27, 537, 1, 0, 0, 0, 29, 540, 1, 0, 0, 0, 31, 543, 1, 0, 0, 0, 33, 546, 1, 0, 0, 0, 35, 549, 1, 0, 0, 0, 37, 552, 1, 0, 0, 0, 39, 555, 1, 0, 0, 0, 41, 557, 1, 0, 0, 0, 43, 559, 1, 0, 0, 0, 45, 561, 1, 0, 0, 0, 47, 563, 1, 0, 0, 0, 49, 565, 1, 0, 0, 0, 51, 567, 1, 0, 0, 0, 53, 570, 1, 0, 0, 0, 55, 573, 1, 0, 0, 0, 57, 576, 1, 0, 0, 0, 59, 579, 1, 0, 0, 0, 61, 581, 1, 0, 0, 0, 63, 584, 1, 0, 0, 0, 65, 587, 1, 0, 0, 0, 67, 590, 1, 0, 0, 0, 69, 593, 1, 0, 0, 0, 71, 595, 1, 0, 0, 0, 73, 598, 1, 0, 0, 0, 75, 601, 1, 0, 0, 0, 77, 604, 1, 0, 0, 0, 79, 607, 1, 0, 0, 0, 81, 609, 1, 0, 0, 0, 83, 612, 1, 0, 0, 0, 85, 615, 1, 0, 0, 0, 87, 618, 1, 0, 0, 0, 89, 621, 1, 0, 0, 0, 91, 623, 1, 0, 0, 0, 93, 626, 1, 0, 0, 0, 95, 629, 1, 0, 0, 0, 97, 632, 1, 0, 0, 0, 99, 635, 1, 0, 0, 0, 101, 637, 1, 0, 0, 0, 103, 640, 1, 0, 0, 0, 105, 643, 1, 0, 0, 0, 107, 646, 1, 0, 0, 0, 109, 649, 1, 0, 0, 0, 111, 651, 1, 0, 0, 0, 113, 654, 1, 0, 0, 0, 115, 657, 1, 0, 0, 0, 117, 660, 1, 0, 0, 0, 119, 663, 1, 0, 0, 0, 121, 665, 1, 0, 0, 0, 123, 668, 1, 0, 0, 0, 125, 671, 1, 0, 0, 0, 127, 674, 1, 0, 0, 0, 129, 677, 1, 0, 0, 0, 131, 679, 1, 0, 0, 0, 133, 682, 1, 0, 0, 0, 135, 685, 1, 0, 0, 0, 137, 688, 1, 0, 0, 0, 139, 691, 1, 0, 0, 0, 141, 693, 1, 0, 0, 0, 143, 696, 1, 0, 0, 0, 145, 699, 1, 0, 0, 0, 147, 702, 1, 0, 0, 0, 149, 705, 1, 0, 0, 0, 151, 707, 1, 0, 0, 0, 153, 710, 1, 0, 0, 0, 155, 713, 1, 0, 0, 0, 157, 716, 1, 0, 0, 0, 159, 719, 1, 0, 0, 0, 161, 721, 1, 0, 0, 0, 163, 724, 1, 0, 0, 0, 165, 727, 1, 0, 0, 0, 167, 730, 1, 0, 0, 0, 169, 733, 1, 0, 0, 0, 171, 735, 1, 0, 0, 0, 173, 738, 1, 0, 0, 0, 175, 741, 1, 0, 0, 0, 177, 744, 1, 0, 0, 0, 179, 747, 1, 0, 0, 0, 181, 749, 1, 0, 0, 0, 183, 752, 1, 0, 0, 0, 185, 755, 1, 0, 0, 0, 187, 758, 1, 0, 0, 0, 189, 761, 1, 0, 0, 0, 191, 763, 1, 0, 0, 0, 193, 766, 1, 0, 0, 0, 195, 769, 1, 0, 0, 0, 197, 772, 1, 0, 0, 0, 199, 775, 1, 0, 0, 0, 201, 777, 1, 0, 0, 0, 203, 780, 1, 0, 0, 0, 205, 783, 1, 0, 0, 0, 207, 786, 1, 0, 0, 0, 209, 789, 1, 0, 0, 0, 211, 791, 1, 0, 0, 0, 213, 794, 1, 0, 0, 0, 215, 797, 1, 0, 0, 0, 217, 800, 1, 0, 0, 0, 219, 803, 1, 0, 0, 0, 221, 805, 1, 0, 0, 0, 223, 808, 1, 0, 0, 0, 225, 811, 1, 0, 0, 0, 227, 814, 1, 0, 0, 0, 229, 817, 1, 0, 0, 0, 231, 819, 1, 0, 0, 0, 233, 821, 1, 0, 0, 0, 235, 823, 1, 0, 0, 0, 237, 825, 1, 0, 0, 0, 239, 827, 1, 0, 0, 0, 241, 829, 1, 0, 0, 0, 243, 832, 1, 0, 0, 0, 245, 835, 1, 0, 0, 0, 247, 838, 1, 0, 0, 0, 249, 841, 1, 0, 0, 0, 251, 844, 1, 0, 0, 0, 253, 847, 1, 0, 0, 0, 255, 850, 1, 0, 0, 0, 257, 853, 1, 0, 0, 0, 259, 856, 1, 0, 0, 0, 261, 859, 1, 0, 0, 0, 263, 862, 1, 0, 0, 0, 265, 865, 1, 0, 0, 0, 267, 868, 1, 0, 0, 0, 269, 871, 1, 0, 0, 0, 271, 874, 1, 0, 0, 0, 273, 877, 1, 0, 0, 0, 275, 880, 1, 0, 0, 0, 277, 883, 1, 0, 0, 0, 279, 886, 1, 0, 0, 0, 281, 889, 1, 0, 0, 0, 283, 892, 1, 0, 0, 0, 285, 895, 1, 0, 0, 0, 287, 898, 1, 0, 0, 0, 289, 901, 1, 0, 0, 0, 291, 904, 1, 0, 0, 0, 293, 907, 1, 0, 0, 0, 295, 910, 1, 0, 0, 0, 297, 913, 1, 0, 0, 0, 299, 916, 1, 0, 0, 0, 301, 919, 1, 0, 0, 0, 303, 922, 1, 0, 0, 0, 305, 925, 1, 0, 0, 0, 307, 928, 1, 0, 0, 0, 309, 931, 1, 0, 0, 0, 311, 934, 1, 0, 0, 0, 313, 937, 1, 0, 0, 0, 315, 940, 1, 0, 0, 0, 317, 943, 1, 0, 0, 0, 319, 946, 1, 0, 0, 0, 321, 949, 1, 0, 0, 0, 323, 952, 1, 0, 0, 0, 325, 955, 1, 0, 0, 0, 327, 958, 1, 0, 0, 0, 329, 961, 1, 0, 0, 0, 331, 964, 1, 0, 0, 0, 333, 967, 1, 0, 0, 0, 335, 970, 1, 0, 0, 0, 337, 973, 1, 0, 0, 0, 339, 976, 1, 0, 0, 0, 341, 979, 1, 0, 0, 0, 343, 982, 1, 0, 0, 0, 345, 985, 1, 0, 0, 0, 347, 988, 1, 0, 0, 0, 349, 991, 1, 0, 0, 0, 351, 994, 1, 0, 0, 0, 353, 997, 1, 0, 0, 0, 355, 1000, 1, 0, 0, 0, 357, 1003, 1, 0, 0, 0, 359, 1006, 1, 0, 0, 0, 361, 1009, 1, 0, 0, 0, 363, 1012, 1, 0, 0, 0, 365, 1015, 1, 0, 0, 0, 367, 1018, 1, 0, 0, 0, 369, 1021, 1, 0, 0, 0, 371, 1024, 1, 0, 0, 0, 373, 1027, 1, 0, 0, 0, 375, 1030, 1, 0, 0, 0, 377, 1033, 1, 0, 0, 0, 379, 1036, 1, 0, 0, 0, 381, 1039, 1, 0, 0, 0, 383, 1042, 1, 0, 0, 0, 385, 1045, 1, 0, 0, 0, 387, 1048, 1, 0, 0, 0, 389, 1051, 1, 0, 0, 0, 391, 1054, 1, 0, 0, 0, 393, 1057, 1, 0, 0, 0, 395, 1060, 1, 0, 0, 0, 397, 1063, 1, 0, 0, 0, 399, 1066, 1, 0, 0, 0, 401, 1069, 1, 0, 0, 0, 403, 1072, 1, 0, 0, 0, 405, 1075, 1, 0, 0, 0, 407, 1078, 1, 0, 0, 0, 409, 1081, 1, 0, 0, 0, 411, 1084, 1, 0, 0, 0, 413, 1087, 1, 0, 0, 0, 415, 1090, 1, 0, 0, 0, 417, 1093, 1, 0, 0, 0, 419, 1096, 1, 0, 0, 0, 421, 1099, 1, 0, 0, 0, 423, 1102, 1, 0, 0, 0, 425, 1105, 1, 0, 0, 0, 427, 1108, 1, 0, 0, 0, 429, 1111, 1, 0, 0, 0, 431, 1114, 1, 0, 0, 0, 433, 1117, 1, 0, 0, 0, 435, 1120, 1, 0, 0, 0, 437, 1123, 1, 0, 0, 0, 439, 1126, 1, 0, 0, 0, 441, 1129, 1, 0, 0, 0, 443, 1132, 1, 0, 0, 0, 445, 1135, 1, 0, 0, 0, 447, 1138, 1, 0, 0, 0, 449, 1141, 1, 0, 0, 0, 451, 1144, 1, 0, 0, 0, 453, 1147, 1, 0, 0, 0, 455, 1150, 1, 0, 0, 0, 457, 1153, 1, 0, 0, 0, 459, 1156, 1, 0, 0, 0, 461, 1159, 1, 0, 0, 0, 463, 1162, 1, 0, 0, 0, 465, 1165, 1, 0, 0, 0, 467, 1168, 1, 0, 0, 0, 469, 1171, 1, 0, 0, 0, 471, 1174, 1, 0, 0, 0, 473, 1177, 1, 0, 0, 0, 475, 1180, 1, 0, 0, 0, 477, 1183, 1, 0, 0, 0, 479, 1186, 1, 0, 0, 0, 481, 1189, 1, 0, 0, 0, 483, 1192, 1, 0, 0, 0, 485, 1195, 1, 0, 0, 0, 487, 1198, 1, 0, 0, 0, 489, 1201, 1, 0, 0, 0, 491, 1204, 1, 0, 0, 0, 493, 1207, 1, 0, 0, 0, 495, 1210, 1, 0, 0, 0, 497, 1212, 1, 0, 0, 0, 499, 500, 5, 10, 0, 0, 500, 2, 1, 0, 0, 0, 501, 502, 5, 2965, 0, 0, 502, 503, 5, 3021, 0, 0, 503, 4, 1, 0, 0, 0, 504, 505, 5, 2970, 0, 0, 505, 506, 5, 3021, 0, 0, 506, 6, 1, 0, 0, 0, 507, 508, 5, 2975, 0, 0, 508, 509, 5, 3021, 0, 0, 509, 8, 1, 0, 0, 0, 510, 511, 5, 2980, 0, 0, 511, 512, 5, 3021, 0, 0, 512, 10, 1, 0, 0, 0, 513, 514, 5, 2986, 0, 0, 514, 515, 5, 3021, 0, 0, 515, 12, 1, 0, 0, 0, 516, 517, 5, 2993, 0, 0, 517, 518, 5, 3021, 0, 0, 518, 14, 1, 0, 0, 0, 519, 520, 5, 2974, 0, 0, 520, 521, 5, 3021, 0, 0, 521, 16, 1, 0, 0, 0, 522, 523, 5, 2969, 0, 0, 523, 524, 5, 3021, 0, 0, 524, 18, 1, 0, 0, 0, 525, 526, 5, 2979, 0, 0, 526, 527, 5, 3021, 0, 0, 527, 20, 1, 0, 0, 0, 528, 529, 5, 2984, 0, 0, 529, 530, 5, 3021, 0, 0, 530, 22, 1, 0, 0, 0, 531, 532, 5, 2990, 0, 0, 532, 533, 5, 3021, 0, 0, 533, 24, 1, 0, 0, 0, 534, 535, 5, 2985, 0, 0, 535, 536, 5, 3021, 0, 0, 536, 26, 1, 0, 0, 0, 537, 538, 5, 2991, 0, 0, 538, 539, 5, 3021, 0, 0, 539, 28, 1, 0, 0, 0, 540, 541, 5, 2992, 0, 0, 541, 542, 5, 3021, 0, 0, 542, 30, 1, 0, 0, 0, 543, 544, 5, 2994, 0, 0, 544, 545, 5, 3021, 0, 0, 545, 32, 1, 0, 0, 0, 546, 547, 5, 2997, 0, 0, 547, 548, 5, 3021, 0, 0, 548, 34, 1, 0, 0, 0, 549, 550, 5, 2996, 0, 0, 550, 551, 5, 3021, 0, 0, 551, 36, 1, 0, 0, 0, 552, 553, 5, 2995, 0, 0, 553, 554, 5, 3021, 0, 0, 554, 38, 1, 0, 0, 0, 555, 556, 5, 2949, 0, 0, 556, 40, 1, 0, 0, 0, 557, 558, 5, 2951, 0, 0, 558, 42, 1, 0, 0, 0, 559, 560, 5, 2953, 0, 0, 560, 44, 1, 0, 0, 0, 561, 562, 5, 2958, 0, 0, 562, 46, 1, 0, 0, 0, 563, 564, 5, 2962, 0, 0, 564, 48, 1, 0, 0, 0, 565, 566, 5, 2965, 0, 0, 566, 50, 1, 0, 0, 0, 567, 568, 5, 2965, 0, 0, 568, 569, 5, 3007, 0, 0, 569, 52, 1, 0, 0, 0, 570, 571, 5, 2965, 0, 0, 571, 572, 5, 3009, 0, 0, 572, 54, 1, 0, 0, 0, 573, 574, 5, 2965, 0, 0, 574, 575, 5, 3014, 0, 0, 575, 56, 1, 0, 0, 0, 576, 577, 5, 2965, 0, 0, 577, 578, 5, 3018, 0, 0, 578, 58, 1, 0, 0, 0, 579, 580, 5, 2969, 0, 0, 580, 60, 1, 0, 0, 0, 581, 582, 5, 2969, 0, 0, 582, 583, 5, 3007, 0, 0, 583, 62, 1, 0, 0, 0, 584, 585, 5, 2969, 0, 0, 585, 586, 5, 3009, 0, 0, 586, 64, 1, 0, 0, 0, 587, 588, 5, 2969, 0, 0, 588, 589, 5, 3014, 0, 0, 589, 66, 1, 0, 0, 0, 590, 591, 5, 2969, 0, 0, 591, 592, 5, 3018, 0, 0, 592, 68, 1, 0, 0, 0, 593, 594, 5, 2970, 0, 0, 594, 70, 1, 0, 0, 0, 595, 596, 5, 2970, 0, 0, 596, 597, 5, 3007, 0, 0, 597, 72, 1, 0, 0, 0, 598, 599, 5, 2970, 0, 0, 599, 600, 5, 3009, 0, 0, 600, 74, 1, 0, 0, 0, 601, 602, 5, 2970, 0, 0, 602, 603, 5, 3014, 0, 0, 603, 76, 1, 0, 0, 0, 604, 605, 5, 2970, 0, 0, 605, 606, 5, 3018, 0, 0, 606, 78, 1, 0, 0, 0, 607, 608, 5, 2974, 0, 0, 608, 80, 1, 0, 0, 0, 609, 610, 5, 2974, 0, 0, 610, 611, 5, 3007, 0, 0, 611, 82, 1, 0, 0, 0, 612, 613, 5, 2974, 0, 0, 613, 614, 5, 3009, 0, 0, 614, 84, 1, 0, 0, 0, 615, 616, 5, 2974, 0, 0, 616, 617, 5, 3014, 0, 0, 617, 86, 1, 0, 0, 0, 618, 619, 5, 2974, 0, 0, 619, 620, 5, 3018, 0, 0, 620, 88, 1, 0, 0, 0, 621, 622, 5, 2975, 0, 0, 622, 90, 1, 0, 0, 0, 623, 624, 5, 2975, 0, 0, 624, 625, 5, 3007, 0, 0, 625, 92, 1, 0, 0, 0, 626, 627, 5, 2975, 0, 0, 627, 628, 5, 3009, 0, 0, 628, 94, 1, 0, 0, 0, 629, 630, 5, 2975, 0, 0, 630, 631, 5, 3014, 0, 0, 631, 96, 1, 0, 0, 0, 632, 633, 5, 2975, 0, 0, 633, 634, 5, 3018, 0, 0, 634, 98, 1, 0, 0, 0, 635, 636, 5, 2979, 0, 0, 636, 100, 1, 0, 0, 0, 637, 638, 5, 2979, 0, 0, 638, 639, 5, 3007, 0, 0, 639, 102, 1, 0, 0, 0, 640, 641, 5, 2979, 0, 0, 641, 642, 5, 3009, 0, 0, 642, 104, 1, 0, 0, 0, 643, 644, 5, 2979, 0, 0, 644, 645, 5, 3014, 0, 0, 645, 106, 1, 0, 0, 0, 646, 647, 5, 2979, 0, 0, 647, 648, 5, 3018, 0, 0, 648, 108, 1, 0, 0, 0, 649, 650, 5, 2980, 0, 0, 650, 110, 1, 0, 0, 0, 651, 652, 5, 2980, 0, 0, 652, 653, 5, 3007, 0, 0, 653, 112, 1, 0, 0, 0, 654, 655, 5, 2980, 0, 0, 655, 656, 5, 3009, 0, 0, 656, 114, 1, 0, 0, 0, 657, 658, 5, 2980, 0, 0, 658, 659, 5, 3014, 0, 0, 659, 116, 1, 0, 0, 0, 660, 661, 5, 2980, 0, 0, 661, 662, 5, 3018, 0, 0, 662, 118, 1, 0, 0, 0, 663, 664, 5, 2984, 0, 0, 664, 120, 1, 0, 0, 0, 665, 666, 5, 2984, 0, 0, 666, 667, 5, 3007, 0, 0, 667, 122, 1, 0, 0, 0, 668, 669, 5, 2984, 0, 0, 669, 670, 5, 3009, 0, 0, 670, 124, 1, 0, 0, 0, 671, 672, 5, 2984, 0, 0, 672, 673, 5, 3014, 0, 0, 673, 126, 1, 0, 0, 0, 674, 675, 5, 2984, 0, 0, 675, 676, 5, 3018, 0, 0, 676, 128, 1, 0, 0, 0, 677, 678, 5, 2986, 0, 0, 678, 130, 1, 0, 0, 0, 679, 680, 5, 2986, 0, 0, 680, 681, 5, 3007, 0, 0, 681, 132, 1, 0, 0, 0, 682, 683, 5, 2986, 0, 0, 683, 684, 5, 3009, 0, 0, 684, 134, 1, 0, 0, 0, 685, 686, 5, 2986, 0, 0, 686, 687, 5, 3014, 0, 0, 687, 136, 1, 0, 0, 0, 688, 689, 5, 2986, 0, 0, 689, 690, 5, 3018, 0, 0, 690, 138, 1, 0, 0, 0, 691, 692, 5, 2990, 0, 0, 692, 140, 1, 0, 0, 0, 693, 694, 5, 2990, 0, 0, 694, 695, 5, 3007, 0, 0, 695, 142, 1, 0, 0, 0, 696, 697, 5, 2990, 0, 0, 697, 698, 5, 3009, 0, 0, 698, 144, 1, 0, 0, 0, 699, 700, 5, 2990, 0, 0, 700, 701, 5, 3014, 0, 0, 701, 146, 1, 0, 0, 0, 702, 703, 5, 2990, 0, 0, 703, 704, 5, 3018, 0, 0, 704, 148, 1, 0, 0, 0, 705, 706, 5, 2991, 0, 0, 706, 150, 1, 0, 0, 0, 707, 708, 5, 2991, 0, 0, 708, 709, 5, 3007, 0, 0, 709, 152, 1, 0, 0, 0, 710, 711, 5, 2991, 0, 0, 711, 712, 5, 3009, 0, 0, 712, 154, 1, 0, 0, 0, 713, 714, 5, 2991, 0, 0, 714, 715, 5, 3014, 0, 0, 715, 156, 1, 0, 0, 0, 716, 717, 5, 2991, 0, 0, 717, 718, 5, 3018, 0, 0, 718, 158, 1, 0, 0, 0, 719, 720, 5, 2992, 0, 0, 720, 160, 1, 0, 0, 0, 721, 722, 5, 2992, 0, 0, 722, 723, 5, 3007, 0, 0, 723, 162, 1, 0, 0, 0, 724, 725, 5, 2992, 0, 0, 725, 726, 5, 3009, 0, 0, 726, 164, 1, 0, 0, 0, 727, 728, 5, 2992, 0, 0, 728, 729, 5, 3014, 0, 0, 729, 166, 1, 0, 0, 0, 730, 731, 5, 2992, 0, 0, 731, 732, 5, 3018, 0, 0, 732, 168, 1, 0, 0, 0, 733, 734, 5, 2994, 0, 0, 734, 170, 1, 0, 0, 0, 735, 736, 5, 2994, 0, 0, 736, 737, 5, 3007, 0, 0, 737, 172, 1, 0, 0, 0, 738, 739, 5, 2994, 0, 0, 739, 740, 5, 3009, 0, 0, 740, 174, 1, 0, 0, 0, 741, 742, 5, 2994, 0, 0, 742, 743, 5, 3014, 0, 0, 743, 176, 1, 0, 0, 0, 744, 745, 5, 2994, 0, 0, 745, 746, 5, 3018, 0, 0, 746, 178, 1, 0, 0, 0, 747, 748, 5, 2997, 0, 0, 748, 180, 1, 0, 0, 0, 749, 750, 5, 2997, 0, 0, 750, 751, 5, 3007, 0, 0, 751, 182, 1, 0, 0, 0, 752, 753, 5, 2997, 0, 0, 753, 754, 5, 3009, 0, 0, 754, 184, 1, 0, 0, 0, 755, 756, 5, 2997, 0, 0, 756, 757, 5, 3014, 0, 0, 757, 186, 1, 0, 0, 0, 758, 759, 5, 2997, 0, 0, 759, 760, 5, 3018, 0, 0, 760, 188, 1, 0, 0, 0, 761, 762, 5, 2996, 0, 0, 762, 190, 1, 0, 0, 0, 763, 764, 5, 2996, 0, 0, 764, 765, 5, 3007, 0, 0, 765, 192, 1, 0, 0, 0, 766, 767, 5, 2996, 0, 0, 767, 768, 5, 3009, 0, 0, 768, 194, 1, 0, 0, 0, 769, 770, 5, 2996, 0, 0, 770, 771, 5, 3014, 0, 0, 771, 196, 1, 0, 0, 0, 772, 773, 5, 2996, 0, 0, 773, 774, 5, 3018, 0, 0, 774, 198, 1, 0, 0, 0, 775, 776, 5, 2995, 0, 0, 776, 200, 1, 0, 0, 0, 777, 778, 5, 2995, 0, 0, 778, 779, 5, 3007, 0, 0, 779, 202, 1, 0, 0, 0, 780, 781, 5, 2995, 0, 0, 781, 782, 5, 3009, 0, 0, 782, 204, 1, 0, 0, 0, 783, 784, 5, 2995, 0, 0, 784, 785, 5, 3014, 0, 0, 785, 206, 1, 0, 0, 0, 786, 787, 5, 2995, 0, 0, 787, 788, 5, 3018, 0, 0, 788, 208, 1, 0, 0, 0, 789, 790, 5, 2993, 0, 0, 790, 210, 1, 0, 0, 0, 791, 792, 5, 2993, 0, 0, 792, 793, 5, 3007, 0, 0, 793, 212, 1, 0, 0, 0, 794, 795, 5, 2993, 0, 0, 795, 796, 5, 3009, 0, 0, 796, 214, 1, 0, 0, 0, 797, 798, 5, 2993, 0, 0, 798, 799, 5, 3014, 0, 0, 799, 216, 1, 0, 0, 0, 800, 801, 5, 2993, 0, 0, 801, 802, 5, 3018, 0, 0, 802, 218, 1, 0, 0, 0, 803, 804, 5, 2985, 0, 0, 804, 220, 1, 0, 0, 0, 805, 806, 5, 2985, 0, 0, 806, 807, 5, 3007, 0, 0, 807, 222, 1, 0, 0, 0, 808, 809, 5, 2985, 0, 0, 809, 810, 5, 3009, 0, 0, 810, 224, 1, 0, 0, 0, 811, 812, 5, 2985, 0, 0, 812, 813, 5, 3014, 0, 0, 813, 226, 1, 0, 0, 0, 814, 815, 5, 2985, 0, 0, 815, 816, 5, 3018, 0, 0, 816, 228, 1, 0, 0, 0, 817, 818, 5, 2950, 0, 0, 818, 230, 1, 0, 0, 0, 819, 820, 5, 2952, 0, 0, 820, 232, 1, 0, 0, 0, 821, 822, 5, 2954, 0, 0, 822, 234, 1, 0, 0, 0, 823, 824, 5, 2959, 0, 0, 824, 236, 1, 0, 0, 0, 825, 826, 5, 2960, 0, 0, 826, 238, 1, 0, 0, 0, 827, 828, 5, 2963, 0, 0, 828, 240, 1, 0, 0, 0, 829, 830, 5, 2962, 0, 0, 830, 831, 5, 2995, 0, 0, 831, 242, 1, 0, 0, 0, 832, 833, 5, 2965, 0, 0, 833, 834, 5, 3006, 0, 0, 834, 244, 1, 0, 0, 0, 835, 836, 5, 2965, 0, 0, 836, 837, 5, 3008, 0, 0, 837, 246, 1, 0, 0, 0, 838, 839, 5, 2965, 0, 0, 839, 840, 5, 3010, 0, 0, 840, 248, 1, 0, 0, 0, 841, 842, 5, 2965, 0, 0, 842, 843, 5, 3015, 0, 0, 843, 250, 1, 0, 0, 0, 844, 845, 5, 2965, 0, 0, 845, 846, 5, 3016, 0, 0, 846, 252, 1, 0, 0, 0, 847, 848, 5, 2965, 0, 0, 848, 849, 5, 3019, 0, 0, 849, 254, 1, 0, 0, 0, 850, 851, 5, 2965, 0, 0, 851, 852, 5, 3020, 0, 0, 852, 256, 1, 0, 0, 0, 853, 854, 5, 2969, 0, 0, 854, 855, 5, 3006, 0, 0, 855, 258, 1, 0, 0, 0, 856, 857, 5, 2969, 0, 0, 857, 858, 5, 3008, 0, 0, 858, 260, 1, 0, 0, 0, 859, 860, 5, 2969, 0, 0, 860, 861, 5, 3010, 0, 0, 861, 262, 1, 0, 0, 0, 862, 863, 5, 2969, 0, 0, 863, 864, 5, 3015, 0, 0, 864, 264, 1, 0, 0, 0, 865, 866, 5, 2969, 0, 0, 866, 867, 5, 3016, 0, 0, 867, 266, 1, 0, 0, 0, 868, 869, 5, 2969, 0, 0, 869, 870, 5, 3019, 0, 0, 870, 268, 1, 0, 0, 0, 871, 872, 5, 2969, 0, 0, 872, 873, 5, 3020, 0, 0, 873, 270, 1, 0, 0, 0, 874, 875, 5, 2970, 0, 0, 875, 876, 5, 3006, 0, 0, 876, 272, 1, 0, 0, 0, 877, 878, 5, 2970, 0, 0, 878, 879, 5, 3008, 0, 0, 879, 274, 1, 0, 0, 0, 880, 881, 5, 2970, 0, 0, 881, 882, 5, 3010, 0, 0, 882, 276, 1, 0, 0, 0, 883, 884, 5, 2970, 0, 0, 884, 885, 5, 3015, 0, 0, 885, 278, 1, 0, 0, 0, 886, 887, 5, 2970, 0, 0, 887, 888, 5, 3016, 0, 0, 888, 280, 1, 0, 0, 0, 889, 890, 5, 2970, 0, 0, 890, 891, 5, 3019, 0, 0, 891, 282, 1, 0, 0, 0, 892, 893, 5, 2970, 0, 0, 893, 894, 5, 3020, 0, 0, 894, 284, 1, 0, 0, 0, 895, 896, 5, 2974, 0, 0, 896, 897, 5, 3006, 0, 0, 897, 286, 1, 0, 0, 0, 898, 899, 5, 2974, 0, 0, 899, 900, 5, 3008, 0, 0, 900, 288, 1, 0, 0, 0, 901, 902, 5, 2974, 0, 0, 902, 903, 5, 3010, 0, 0, 903, 290, 1, 0, 0, 0, 904, 905, 5, 2974, 0, 0, 905, 906, 5, 3015, 0, 0, 906, 292, 1, 0, 0, 0, 907, 908, 5, 2974, 0, 0, 908, 909, 5, 3016, 0, 0, 909, 294, 1, 0, 0, 0, 910, 911, 5, 2974, 0, 0, 911, 912, 5, 3019, 0, 0, 912, 296, 1, 0, 0, 0, 913, 914, 5, 2974, 0, 0, 914, 915, 5, 3020, 0, 0, 915, 298, 1, 0, 0, 0, 916, 917, 5, 2975, 0, 0, 917, 918, 5, 3006, 0, 0, 918, 300, 1, 0, 0, 0, 919, 920, 5, 2975, 0, 0, 920, 921, 5, 3008, 0, 0, 921, 302, 1, 0, 0, 0, 922, 923, 5, 2975, 0, 0, 923, 924, 5, 3010, 0, 0, 924, 304, 1, 0, 0, 0, 925, 926, 5, 2975, 0, 0, 926, 927, 5, 3015, 0, 0, 927, 306, 1, 0, 0, 0, 928, 929, 5, 2975, 0, 0, 929, 930, 5, 3016, 0, 0, 930, 308, 1, 0, 0, 0, 931, 932, 5, 2975, 0, 0, 932, 933, 5, 3019, 0, 0, 933, 310, 1, 0, 0, 0, 934, 935, 5, 2975, 0, 0, 935, 936, 5, 3020, 0, 0, 936, 312, 1, 0, 0, 0, 937, 938, 5, 2979, 0, 0, 938, 939, 5, 3006, 0, 0, 939, 314, 1, 0, 0, 0, 940, 941, 5, 2979, 0, 0, 941, 942, 5, 3008, 0, 0, 942, 316, 1, 0, 0, 0, 943, 944, 5, 2979, 0, 0, 944, 945, 5, 3010, 0, 0, 945, 318, 1, 0, 0, 0, 946, 947, 5, 2979, 0, 0, 947, 948, 5, 3015, 0, 0, 948, 320, 1, 0, 0, 0, 949, 950, 5, 2979, 0, 0, 950, 951, 5, 3016, 0, 0, 951, 322, 1, 0, 0, 0, 952, 953, 5, 2979, 0, 0, 953, 954, 5, 3019, 0, 0, 954, 324, 1, 0, 0, 0, 955, 956, 5, 2979, 0, 0, 956, 957, 5, 3020, 0, 0, 957, 326, 1, 0, 0, 0, 958, 959, 5, 2980, 0, 0, 959, 960, 5, 3006, 0, 0, 960, 328, 1, 0, 0, 0, 961, 962, 5, 2980, 0, 0, 962, 963, 5, 3008, 0, 0, 963, 330, 1, 0, 0, 0, 964, 965, 5, 2980, 0, 0, 965, 966, 5, 3010, 0, 0, 966, 332, 1, 0, 0, 0, 967, 968, 5, 2980, 0, 0, 968, 969, 5, 3015, 0, 0, 969, 334, 1, 0, 0, 0, 970, 971, 5, 2980, 0, 0, 971, 972, 5, 3016, 0, 0, 972, 336, 1, 0, 0, 0, 973, 974, 5, 2980, 0, 0, 974, 975, 5, 3019, 0, 0, 975, 338, 1, 0, 0, 0, 976, 977, 5, 2980, 0, 0, 977, 978, 5, 3020, 0, 0, 978, 340, 1, 0, 0, 0, 979, 980, 5, 2984, 0, 0, 980, 981, 5, 3006, 0, 0, 981, 342, 1, 0, 0, 0, 982, 983, 5, 2984, 0, 0, 983, 984, 5, 3008, 0, 0, 984, 344, 1, 0, 0, 0, 985, 986, 5, 2984, 0, 0, 986, 987, 5, 3010, 0, 0, 987, 346, 1, 0, 0, 0, 988, 989, 5, 2984, 0, 0, 989, 990, 5, 3015, 0, 0, 990, 348, 1, 0, 0, 0, 991, 992, 5, 2984, 0, 0, 992, 993, 5, 3016, 0, 0, 993, 350, 1, 0, 0, 0, 994, 995, 5, 2984, 0, 0, 995, 996, 5, 3019, 0, 0, 996, 352, 1, 0, 0, 0, 997, 998, 5, 2984, 0, 0, 998, 999, 5, 3020, 0, 0, 999, 354, 1, 0, 0, 0, 1000, 1001, 5, 2986, 0, 0, 1001, 1002, 5, 3006, 0, 0, 1002, 356, 1, 0, 0, 0, 1003, 1004, 5, 2986, 0, 0, 1004, 1005, 5, 3008, 0, 0, 1005, 358, 1, 0, 0, 0, 1006, 1007, 5, 2986, 0, 0, 1007, 1008, 5, 3010, 0, 0, 1008, 360, 1, 0, 0, 0, 1009, 1010, 5, 2986, 0, 0, 1010, 1011, 5, 3015, 0, 0, 1011, 362, 1, 0, 0, 0, 1012, 1013, 5, 2986, 0, 0, 1013, 1014, 5, 3016, 0, 0, 1014, 364, 1, 0, 0, 0, 1015, 1016, 5, 2986, 0, 0, 1016, 1017, 5, 3019, 0, 0, 1017, 366, 1, 0, 0, 0, 1018, 1019, 5, 2986, 0, 0, 1019, 1020, 5, 3020, 0, 0, 1020, 368, 1, 0, 0, 0, 1021, 1022, 5, 2990, 0, 0, 1022, 1023, 5, 3006, 0, 0, 1023, 370, 1, 0, 0, 0, 1024, 1025, 5, 2990, 0, 0, 1025, 1026, 5, 3008, 0, 0, 1026, 372, 1, 0, 0, 0, 1027, 1028, 5, 2990, 0, 0, 1028, 1029, 5, 3010, 0, 0, 1029, 374, 1, 0, 0, 0, 1030, 1031, 5, 2990, 0, 0, 1031, 1032, 5, 3015, 0, 0, 1032, 376, 1, 0, 0, 0, 1033, 1034, 5, 2990, 0, 0, 1034, 1035, 5, 3016, 0, 0, 1035, 378, 1, 0, 0, 0, 1036, 1037, 5, 2990, 0, 0, 1037, 1038, 5, 3019, 0, 0, 1038, 380, 1, 0, 0, 0, 1039, 1040, 5, 2990, 0, 0, 1040, 1041, 5, 3020, 0, 0, 1041, 382, 1, 0, 0, 0, 1042, 1043, 5, 2991, 0, 0, 1043, 1044, 5, 3006, 0, 0, 1044, 384, 1, 0, 0, 0, 1045, 1046, 5, 2991, 0, 0, 1046, 1047, 5, 3008, 0, 0, 1047, 386, 1, 0, 0, 0, 1048, 1049, 5, 2991, 0, 0, 1049, 1050, 5, 3010, 0, 0, 1050, 388, 1, 0, 0, 0, 1051, 1052, 5, 2991, 0, 0, 1052, 1053, 5, 3015, 0, 0, 1053, 390, 1, 0, 0, 0, 1054, 1055, 5, 2991, 0, 0, 1055, 1056, 5, 3016, 0, 0, 1056, 392, 1, 0, 0, 0, 1057, 1058, 5, 2991, 0, 0, 1058, 1059, 5, 3019, 0, 0, 1059, 394, 1, 0, 0, 0, 1060, 1061, 5, 2991, 0, 0, 1061, 1062, 5, 3020, 0, 0, 1062, 396, 1, 0, 0, 0, 1063, 1064, 5, 2992, 0, 0, 1064, 1065, 5, 3006, 0, 0, 1065, 398, 1, 0, 0, 0, 1066, 1067, 5, 2992, 0, 0, 1067, 1068, 5, 3008, 0, 0, 1068, 400, 1, 0, 0, 0, 1069, 1070, 5, 2992, 0, 0, 1070, 1071, 5, 3010, 0, 0, 1071, 402, 1, 0, 0, 0, 1072, 1073, 5, 2992, 0, 0, 1073, 1074, 5, 3015, 0, 0, 1074, 404, 1, 0, 0, 0, 1075, 1076, 5, 2992, 0, 0, 1076, 1077, 5, 3016, 0, 0, 1077, 406, 1, 0, 0, 0, 1078, 1079, 5, 2992, 0, 0, 1079, 1080, 5, 3019, 0, 0, 1080, 408, 1, 0, 0, 0, 1081, 1082, 5, 2992, 0, 0, 1082, 1083, 5, 3020, 0, 0, 1083, 410, 1, 0, 0, 0, 1084, 1085, 5, 2994, 0, 0, 1085, 1086, 5, 3006, 0, 0, 1086, 412, 1, 0, 0, 0, 1087, 1088, 5, 2994, 0, 0, 1088, 1089, 5, 3008, 0, 0, 1089, 414, 1, 0, 0, 0, 1090, 1091, 5, 2994, 0, 0, 1091, 1092, 5, 3010, 0, 0, 1092, 416, 1, 0, 0, 0, 1093, 1094, 5, 2994, 0, 0, 1094, 1095, 5, 3015, 0, 0, 1095, 418, 1, 0, 0, 0, 1096, 1097, 5, 2994, 0, 0, 1097, 1098, 5, 3016, 0, 0, 1098, 420, 1, 0, 0, 0, 1099, 1100, 5, 2994, 0, 0, 1100, 1101, 5, 3019, 0, 0, 1101, 422, 1, 0, 0, 0, 1102, 1103, 5, 2994, 0, 0, 1103, 1104, 5, 3020, 0, 0, 1104, 424, 1, 0, 0, 0, 1105, 1106, 5, 2997, 0, 0, 1106, 1107, 5, 3006, 0, 0, 1107, 426, 1, 0, 0, 0, 1108, 1109, 5, 2997, 0, 0, 1109, 1110, 5, 3008, 0, 0, 1110, 428, 1, 0, 0, 0, 1111, 1112, 5, 2997, 0, 0, 1112, 1113, 5, 3010, 0, 0, 1113, 430, 1, 0, 0, 0, 1114, 1115, 5, 2997, 0, 0, 1115, 1116, 5, 3015, 0, 0, 1116, 432, 1, 0, 0, 0, 1117, 1118, 5, 2997, 0, 0, 1118, 1119, 5, 3016, 0, 0, 1119, 434, 1, 0, 0, 0, 1120, 1121, 5, 2997, 0, 0, 1121, 1122, 5, 3019, 0, 0, 1122, 436, 1, 0, 0, 0, 1123, 1124, 5, 2997, 0, 0, 1124, 1125, 5, 3020, 0, 0, 1125, 438, 1, 0, 0, 0, 1126, 1127, 5, 2996, 0, 0, 1127, 1128, 5, 3006, 0, 0, 1128, 440, 1, 0, 0, 0, 1129, 1130, 5, 2996, 0, 0, 1130, 1131, 5, 3008, 0, 0, 1131, 442, 1, 0, 0, 0, 1132, 1133, 5, 2996, 0, 0, 1133, 1134, 5, 3010, 0, 0, 1134, 444, 1, 0, 0, 0, 1135, 1136, 5, 2996, 0, 0, 1136, 1137, 5, 3015, 0, 0, 1137, 446, 1, 0, 0, 0, 1138, 1139, 5, 2996, 0, 0, 1139, 1140, 5, 3016, 0, 0, 1140, 448, 1, 0, 0, 0, 1141, 1142, 5, 2996, 0, 0, 1142, 1143, 5, 3019, 0, 0, 1143, 450, 1, 0, 0, 0, 1144, 1145, 5, 2996, 0, 0, 1145, 1146, 5, 3020, 0, 0, 1146, 452, 1, 0, 0, 0, 1147, 1148, 5, 2995, 0, 0, 1148, 1149, 5, 3006, 0, 0, 1149, 454, 1, 0, 0, 0, 1150, 1151, 5, 2995, 0, 0, 1151, 1152, 5, 3008, 0, 0, 1152, 456, 1, 0, 0, 0, 1153, 1154, 5, 2995, 0, 0, 1154, 1155, 5, 3010, 0, 0, 1155, 458, 1, 0, 0, 0, 1156, 1157, 5, 2995, 0, 0, 1157, 1158, 5, 3015, 0, 0, 1158, 460, 1, 0, 0, 0, 1159, 1160, 5, 2995, 0, 0, 1160, 1161, 5, 3016, 0, 0, 1161, 462, 1, 0, 0, 0, 1162, 1163, 5, 2995, 0, 0, 1163, 1164, 5, 3019, 0, 0, 1164, 464, 1, 0, 0, 0, 1165, 1166, 5, 2995, 0, 0, 1166, 1167, 5, 3020, 0, 0, 1167, 466, 1, 0, 0, 0, 1168, 1169, 5, 2993, 0, 0, 1169, 1170, 5, 3006, 0, 0, 1170, 468, 1, 0, 0, 0, 1171, 1172, 5, 2993, 0, 0, 1172, 1173, 5, 3008, 0, 0, 1173, 470, 1, 0, 0, 0, 1174, 1175, 5, 2993, 0, 0, 1175, 1176, 5, 3010, 0, 0, 1176, 472, 1, 0, 0, 0, 1177, 1178, 5, 2993, 0, 0, 1178, 1179, 5, 3015, 0, 0, 1179, 474, 1, 0, 0, 0, 1180, 1181, 5, 2993, 0, 0, 1181, 1182, 5, 3016, 0, 0, 1182, 476, 1, 0, 0, 0, 1183, 1184, 5, 2993, 0, 0, 1184, 1185, 5, 3019, 0, 0, 1185, 478, 1, 0, 0, 0, 1186, 1187, 5, 2993, 0, 0, 1187, 1188, 5, 3020, 0, 0, 1188, 480, 1, 0, 0, 0, 1189, 1190, 5, 2985, 0, 0, 1190, 1191, 5, 3006, 0, 0, 1191, 482, 1, 0, 0, 0, 1192, 1193, 5, 2985, 0, 0, 1193, 1194, 5, 3008, 0, 0, 1194, 484, 1, 0, 0, 0, 1195, 1196, 5, 2985, 0, 0, 1196, 1197, 5, 3010, 0, 0, 1197, 486, 1, 0, 0, 0, 1198, 1199, 5, 2985, 0, 0, 1199, 1200, 5, 3015, 0, 0, 1200, 488, 1, 0, 0, 0, 1201, 1202, 5, 2985, 0, 0, 1202, 1203, 5, 3016, 0, 0, 1203, 490, 1, 0, 0, 0, 1204, 1205, 5, 2985, 0, 0, 1205, 1206, 5, 3019, 0, 0, 1206, 492, 1, 0, 0, 0, 1207, 1208, 5, 2985, 0, 0, 1208, 1209, 5, 3020, 0, 0, 1209, 494, 1, 0, 0, 0, 1210, 1211, 5, 2947, 0, 0, 1211, 496, 1, 0, 0, 0, 1212, 1213, 5, 32, 0, 0, 1213, 498, 1, 0, 0, 0, 1, 0, 0] \ No newline at end of file +[4, 0, 249, 1219, 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, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 247, 4, 247, 1211, 8, 247, 11, 247, 12, 247, 1212, 1, 248, 3, 248, 1216, 8, 248, 1, 248, 1, 248, 0, 0, 249, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 1, 0, 1, 2, 0, 9, 9, 32, 32, 1220, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 1, 499, 1, 0, 0, 0, 3, 502, 1, 0, 0, 0, 5, 505, 1, 0, 0, 0, 7, 508, 1, 0, 0, 0, 9, 511, 1, 0, 0, 0, 11, 514, 1, 0, 0, 0, 13, 517, 1, 0, 0, 0, 15, 520, 1, 0, 0, 0, 17, 523, 1, 0, 0, 0, 19, 526, 1, 0, 0, 0, 21, 529, 1, 0, 0, 0, 23, 532, 1, 0, 0, 0, 25, 535, 1, 0, 0, 0, 27, 538, 1, 0, 0, 0, 29, 541, 1, 0, 0, 0, 31, 544, 1, 0, 0, 0, 33, 547, 1, 0, 0, 0, 35, 550, 1, 0, 0, 0, 37, 553, 1, 0, 0, 0, 39, 555, 1, 0, 0, 0, 41, 558, 1, 0, 0, 0, 43, 561, 1, 0, 0, 0, 45, 564, 1, 0, 0, 0, 47, 567, 1, 0, 0, 0, 49, 570, 1, 0, 0, 0, 51, 573, 1, 0, 0, 0, 53, 576, 1, 0, 0, 0, 55, 579, 1, 0, 0, 0, 57, 582, 1, 0, 0, 0, 59, 585, 1, 0, 0, 0, 61, 588, 1, 0, 0, 0, 63, 591, 1, 0, 0, 0, 65, 594, 1, 0, 0, 0, 67, 597, 1, 0, 0, 0, 69, 600, 1, 0, 0, 0, 71, 603, 1, 0, 0, 0, 73, 606, 1, 0, 0, 0, 75, 609, 1, 0, 0, 0, 77, 611, 1, 0, 0, 0, 79, 613, 1, 0, 0, 0, 81, 615, 1, 0, 0, 0, 83, 617, 1, 0, 0, 0, 85, 619, 1, 0, 0, 0, 87, 621, 1, 0, 0, 0, 89, 624, 1, 0, 0, 0, 91, 627, 1, 0, 0, 0, 93, 630, 1, 0, 0, 0, 95, 633, 1, 0, 0, 0, 97, 635, 1, 0, 0, 0, 99, 638, 1, 0, 0, 0, 101, 641, 1, 0, 0, 0, 103, 644, 1, 0, 0, 0, 105, 647, 1, 0, 0, 0, 107, 649, 1, 0, 0, 0, 109, 652, 1, 0, 0, 0, 111, 655, 1, 0, 0, 0, 113, 658, 1, 0, 0, 0, 115, 661, 1, 0, 0, 0, 117, 663, 1, 0, 0, 0, 119, 666, 1, 0, 0, 0, 121, 669, 1, 0, 0, 0, 123, 672, 1, 0, 0, 0, 125, 675, 1, 0, 0, 0, 127, 677, 1, 0, 0, 0, 129, 680, 1, 0, 0, 0, 131, 683, 1, 0, 0, 0, 133, 686, 1, 0, 0, 0, 135, 689, 1, 0, 0, 0, 137, 691, 1, 0, 0, 0, 139, 694, 1, 0, 0, 0, 141, 697, 1, 0, 0, 0, 143, 700, 1, 0, 0, 0, 145, 703, 1, 0, 0, 0, 147, 705, 1, 0, 0, 0, 149, 708, 1, 0, 0, 0, 151, 711, 1, 0, 0, 0, 153, 714, 1, 0, 0, 0, 155, 717, 1, 0, 0, 0, 157, 719, 1, 0, 0, 0, 159, 722, 1, 0, 0, 0, 161, 725, 1, 0, 0, 0, 163, 728, 1, 0, 0, 0, 165, 731, 1, 0, 0, 0, 167, 733, 1, 0, 0, 0, 169, 736, 1, 0, 0, 0, 171, 739, 1, 0, 0, 0, 173, 742, 1, 0, 0, 0, 175, 745, 1, 0, 0, 0, 177, 747, 1, 0, 0, 0, 179, 750, 1, 0, 0, 0, 181, 753, 1, 0, 0, 0, 183, 756, 1, 0, 0, 0, 185, 759, 1, 0, 0, 0, 187, 761, 1, 0, 0, 0, 189, 764, 1, 0, 0, 0, 191, 767, 1, 0, 0, 0, 193, 770, 1, 0, 0, 0, 195, 773, 1, 0, 0, 0, 197, 775, 1, 0, 0, 0, 199, 778, 1, 0, 0, 0, 201, 781, 1, 0, 0, 0, 203, 784, 1, 0, 0, 0, 205, 787, 1, 0, 0, 0, 207, 789, 1, 0, 0, 0, 209, 792, 1, 0, 0, 0, 211, 795, 1, 0, 0, 0, 213, 798, 1, 0, 0, 0, 215, 801, 1, 0, 0, 0, 217, 803, 1, 0, 0, 0, 219, 806, 1, 0, 0, 0, 221, 809, 1, 0, 0, 0, 223, 812, 1, 0, 0, 0, 225, 815, 1, 0, 0, 0, 227, 817, 1, 0, 0, 0, 229, 820, 1, 0, 0, 0, 231, 823, 1, 0, 0, 0, 233, 826, 1, 0, 0, 0, 235, 829, 1, 0, 0, 0, 237, 831, 1, 0, 0, 0, 239, 834, 1, 0, 0, 0, 241, 837, 1, 0, 0, 0, 243, 840, 1, 0, 0, 0, 245, 843, 1, 0, 0, 0, 247, 845, 1, 0, 0, 0, 249, 848, 1, 0, 0, 0, 251, 851, 1, 0, 0, 0, 253, 854, 1, 0, 0, 0, 255, 857, 1, 0, 0, 0, 257, 859, 1, 0, 0, 0, 259, 862, 1, 0, 0, 0, 261, 865, 1, 0, 0, 0, 263, 868, 1, 0, 0, 0, 265, 871, 1, 0, 0, 0, 267, 873, 1, 0, 0, 0, 269, 875, 1, 0, 0, 0, 271, 877, 1, 0, 0, 0, 273, 879, 1, 0, 0, 0, 275, 881, 1, 0, 0, 0, 277, 883, 1, 0, 0, 0, 279, 885, 1, 0, 0, 0, 281, 888, 1, 0, 0, 0, 283, 891, 1, 0, 0, 0, 285, 894, 1, 0, 0, 0, 287, 897, 1, 0, 0, 0, 289, 900, 1, 0, 0, 0, 291, 903, 1, 0, 0, 0, 293, 906, 1, 0, 0, 0, 295, 909, 1, 0, 0, 0, 297, 912, 1, 0, 0, 0, 299, 915, 1, 0, 0, 0, 301, 918, 1, 0, 0, 0, 303, 921, 1, 0, 0, 0, 305, 924, 1, 0, 0, 0, 307, 927, 1, 0, 0, 0, 309, 930, 1, 0, 0, 0, 311, 933, 1, 0, 0, 0, 313, 936, 1, 0, 0, 0, 315, 939, 1, 0, 0, 0, 317, 942, 1, 0, 0, 0, 319, 945, 1, 0, 0, 0, 321, 948, 1, 0, 0, 0, 323, 951, 1, 0, 0, 0, 325, 954, 1, 0, 0, 0, 327, 957, 1, 0, 0, 0, 329, 960, 1, 0, 0, 0, 331, 963, 1, 0, 0, 0, 333, 966, 1, 0, 0, 0, 335, 969, 1, 0, 0, 0, 337, 972, 1, 0, 0, 0, 339, 975, 1, 0, 0, 0, 341, 978, 1, 0, 0, 0, 343, 981, 1, 0, 0, 0, 345, 984, 1, 0, 0, 0, 347, 987, 1, 0, 0, 0, 349, 990, 1, 0, 0, 0, 351, 993, 1, 0, 0, 0, 353, 996, 1, 0, 0, 0, 355, 999, 1, 0, 0, 0, 357, 1002, 1, 0, 0, 0, 359, 1005, 1, 0, 0, 0, 361, 1008, 1, 0, 0, 0, 363, 1011, 1, 0, 0, 0, 365, 1014, 1, 0, 0, 0, 367, 1017, 1, 0, 0, 0, 369, 1020, 1, 0, 0, 0, 371, 1023, 1, 0, 0, 0, 373, 1026, 1, 0, 0, 0, 375, 1029, 1, 0, 0, 0, 377, 1032, 1, 0, 0, 0, 379, 1035, 1, 0, 0, 0, 381, 1038, 1, 0, 0, 0, 383, 1041, 1, 0, 0, 0, 385, 1044, 1, 0, 0, 0, 387, 1047, 1, 0, 0, 0, 389, 1050, 1, 0, 0, 0, 391, 1053, 1, 0, 0, 0, 393, 1056, 1, 0, 0, 0, 395, 1059, 1, 0, 0, 0, 397, 1062, 1, 0, 0, 0, 399, 1065, 1, 0, 0, 0, 401, 1068, 1, 0, 0, 0, 403, 1071, 1, 0, 0, 0, 405, 1074, 1, 0, 0, 0, 407, 1077, 1, 0, 0, 0, 409, 1080, 1, 0, 0, 0, 411, 1083, 1, 0, 0, 0, 413, 1086, 1, 0, 0, 0, 415, 1089, 1, 0, 0, 0, 417, 1092, 1, 0, 0, 0, 419, 1095, 1, 0, 0, 0, 421, 1098, 1, 0, 0, 0, 423, 1101, 1, 0, 0, 0, 425, 1104, 1, 0, 0, 0, 427, 1107, 1, 0, 0, 0, 429, 1110, 1, 0, 0, 0, 431, 1113, 1, 0, 0, 0, 433, 1116, 1, 0, 0, 0, 435, 1119, 1, 0, 0, 0, 437, 1122, 1, 0, 0, 0, 439, 1125, 1, 0, 0, 0, 441, 1128, 1, 0, 0, 0, 443, 1131, 1, 0, 0, 0, 445, 1134, 1, 0, 0, 0, 447, 1137, 1, 0, 0, 0, 449, 1140, 1, 0, 0, 0, 451, 1143, 1, 0, 0, 0, 453, 1146, 1, 0, 0, 0, 455, 1149, 1, 0, 0, 0, 457, 1152, 1, 0, 0, 0, 459, 1155, 1, 0, 0, 0, 461, 1158, 1, 0, 0, 0, 463, 1161, 1, 0, 0, 0, 465, 1164, 1, 0, 0, 0, 467, 1167, 1, 0, 0, 0, 469, 1170, 1, 0, 0, 0, 471, 1173, 1, 0, 0, 0, 473, 1176, 1, 0, 0, 0, 475, 1179, 1, 0, 0, 0, 477, 1182, 1, 0, 0, 0, 479, 1185, 1, 0, 0, 0, 481, 1188, 1, 0, 0, 0, 483, 1191, 1, 0, 0, 0, 485, 1194, 1, 0, 0, 0, 487, 1197, 1, 0, 0, 0, 489, 1200, 1, 0, 0, 0, 491, 1203, 1, 0, 0, 0, 493, 1206, 1, 0, 0, 0, 495, 1210, 1, 0, 0, 0, 497, 1215, 1, 0, 0, 0, 499, 500, 5, 2965, 0, 0, 500, 501, 5, 3021, 0, 0, 501, 2, 1, 0, 0, 0, 502, 503, 5, 2970, 0, 0, 503, 504, 5, 3021, 0, 0, 504, 4, 1, 0, 0, 0, 505, 506, 5, 2975, 0, 0, 506, 507, 5, 3021, 0, 0, 507, 6, 1, 0, 0, 0, 508, 509, 5, 2980, 0, 0, 509, 510, 5, 3021, 0, 0, 510, 8, 1, 0, 0, 0, 511, 512, 5, 2986, 0, 0, 512, 513, 5, 3021, 0, 0, 513, 10, 1, 0, 0, 0, 514, 515, 5, 2993, 0, 0, 515, 516, 5, 3021, 0, 0, 516, 12, 1, 0, 0, 0, 517, 518, 5, 2974, 0, 0, 518, 519, 5, 3021, 0, 0, 519, 14, 1, 0, 0, 0, 520, 521, 5, 2969, 0, 0, 521, 522, 5, 3021, 0, 0, 522, 16, 1, 0, 0, 0, 523, 524, 5, 2979, 0, 0, 524, 525, 5, 3021, 0, 0, 525, 18, 1, 0, 0, 0, 526, 527, 5, 2984, 0, 0, 527, 528, 5, 3021, 0, 0, 528, 20, 1, 0, 0, 0, 529, 530, 5, 2990, 0, 0, 530, 531, 5, 3021, 0, 0, 531, 22, 1, 0, 0, 0, 532, 533, 5, 2985, 0, 0, 533, 534, 5, 3021, 0, 0, 534, 24, 1, 0, 0, 0, 535, 536, 5, 2991, 0, 0, 536, 537, 5, 3021, 0, 0, 537, 26, 1, 0, 0, 0, 538, 539, 5, 2992, 0, 0, 539, 540, 5, 3021, 0, 0, 540, 28, 1, 0, 0, 0, 541, 542, 5, 2994, 0, 0, 542, 543, 5, 3021, 0, 0, 543, 30, 1, 0, 0, 0, 544, 545, 5, 2997, 0, 0, 545, 546, 5, 3021, 0, 0, 546, 32, 1, 0, 0, 0, 547, 548, 5, 2996, 0, 0, 548, 549, 5, 3021, 0, 0, 549, 34, 1, 0, 0, 0, 550, 551, 5, 2995, 0, 0, 551, 552, 5, 3021, 0, 0, 552, 36, 1, 0, 0, 0, 553, 554, 5, 2947, 0, 0, 554, 38, 1, 0, 0, 0, 555, 556, 5, 2965, 0, 0, 556, 557, 5, 3016, 0, 0, 557, 40, 1, 0, 0, 0, 558, 559, 5, 2969, 0, 0, 559, 560, 5, 3016, 0, 0, 560, 42, 1, 0, 0, 0, 561, 562, 5, 2970, 0, 0, 562, 563, 5, 3016, 0, 0, 563, 44, 1, 0, 0, 0, 564, 565, 5, 2974, 0, 0, 565, 566, 5, 3016, 0, 0, 566, 46, 1, 0, 0, 0, 567, 568, 5, 2975, 0, 0, 568, 569, 5, 3016, 0, 0, 569, 48, 1, 0, 0, 0, 570, 571, 5, 2979, 0, 0, 571, 572, 5, 3016, 0, 0, 572, 50, 1, 0, 0, 0, 573, 574, 5, 2980, 0, 0, 574, 575, 5, 3016, 0, 0, 575, 52, 1, 0, 0, 0, 576, 577, 5, 2984, 0, 0, 577, 578, 5, 3016, 0, 0, 578, 54, 1, 0, 0, 0, 579, 580, 5, 2986, 0, 0, 580, 581, 5, 3016, 0, 0, 581, 56, 1, 0, 0, 0, 582, 583, 5, 2990, 0, 0, 583, 584, 5, 3016, 0, 0, 584, 58, 1, 0, 0, 0, 585, 586, 5, 2991, 0, 0, 586, 587, 5, 3016, 0, 0, 587, 60, 1, 0, 0, 0, 588, 589, 5, 2992, 0, 0, 589, 590, 5, 3016, 0, 0, 590, 62, 1, 0, 0, 0, 591, 592, 5, 2994, 0, 0, 592, 593, 5, 3016, 0, 0, 593, 64, 1, 0, 0, 0, 594, 595, 5, 2997, 0, 0, 595, 596, 5, 3016, 0, 0, 596, 66, 1, 0, 0, 0, 597, 598, 5, 2996, 0, 0, 598, 599, 5, 3016, 0, 0, 599, 68, 1, 0, 0, 0, 600, 601, 5, 2995, 0, 0, 601, 602, 5, 3016, 0, 0, 602, 70, 1, 0, 0, 0, 603, 604, 5, 2993, 0, 0, 604, 605, 5, 3016, 0, 0, 605, 72, 1, 0, 0, 0, 606, 607, 5, 2985, 0, 0, 607, 608, 5, 3016, 0, 0, 608, 74, 1, 0, 0, 0, 609, 610, 5, 2949, 0, 0, 610, 76, 1, 0, 0, 0, 611, 612, 5, 2951, 0, 0, 612, 78, 1, 0, 0, 0, 613, 614, 5, 2953, 0, 0, 614, 80, 1, 0, 0, 0, 615, 616, 5, 2958, 0, 0, 616, 82, 1, 0, 0, 0, 617, 618, 5, 2962, 0, 0, 618, 84, 1, 0, 0, 0, 619, 620, 5, 2965, 0, 0, 620, 86, 1, 0, 0, 0, 621, 622, 5, 2965, 0, 0, 622, 623, 5, 3007, 0, 0, 623, 88, 1, 0, 0, 0, 624, 625, 5, 2965, 0, 0, 625, 626, 5, 3009, 0, 0, 626, 90, 1, 0, 0, 0, 627, 628, 5, 2965, 0, 0, 628, 629, 5, 3014, 0, 0, 629, 92, 1, 0, 0, 0, 630, 631, 5, 2965, 0, 0, 631, 632, 5, 3018, 0, 0, 632, 94, 1, 0, 0, 0, 633, 634, 5, 2969, 0, 0, 634, 96, 1, 0, 0, 0, 635, 636, 5, 2969, 0, 0, 636, 637, 5, 3007, 0, 0, 637, 98, 1, 0, 0, 0, 638, 639, 5, 2969, 0, 0, 639, 640, 5, 3009, 0, 0, 640, 100, 1, 0, 0, 0, 641, 642, 5, 2969, 0, 0, 642, 643, 5, 3014, 0, 0, 643, 102, 1, 0, 0, 0, 644, 645, 5, 2969, 0, 0, 645, 646, 5, 3018, 0, 0, 646, 104, 1, 0, 0, 0, 647, 648, 5, 2970, 0, 0, 648, 106, 1, 0, 0, 0, 649, 650, 5, 2970, 0, 0, 650, 651, 5, 3007, 0, 0, 651, 108, 1, 0, 0, 0, 652, 653, 5, 2970, 0, 0, 653, 654, 5, 3009, 0, 0, 654, 110, 1, 0, 0, 0, 655, 656, 5, 2970, 0, 0, 656, 657, 5, 3014, 0, 0, 657, 112, 1, 0, 0, 0, 658, 659, 5, 2970, 0, 0, 659, 660, 5, 3018, 0, 0, 660, 114, 1, 0, 0, 0, 661, 662, 5, 2974, 0, 0, 662, 116, 1, 0, 0, 0, 663, 664, 5, 2974, 0, 0, 664, 665, 5, 3007, 0, 0, 665, 118, 1, 0, 0, 0, 666, 667, 5, 2974, 0, 0, 667, 668, 5, 3009, 0, 0, 668, 120, 1, 0, 0, 0, 669, 670, 5, 2974, 0, 0, 670, 671, 5, 3014, 0, 0, 671, 122, 1, 0, 0, 0, 672, 673, 5, 2974, 0, 0, 673, 674, 5, 3018, 0, 0, 674, 124, 1, 0, 0, 0, 675, 676, 5, 2975, 0, 0, 676, 126, 1, 0, 0, 0, 677, 678, 5, 2975, 0, 0, 678, 679, 5, 3007, 0, 0, 679, 128, 1, 0, 0, 0, 680, 681, 5, 2975, 0, 0, 681, 682, 5, 3009, 0, 0, 682, 130, 1, 0, 0, 0, 683, 684, 5, 2975, 0, 0, 684, 685, 5, 3014, 0, 0, 685, 132, 1, 0, 0, 0, 686, 687, 5, 2975, 0, 0, 687, 688, 5, 3018, 0, 0, 688, 134, 1, 0, 0, 0, 689, 690, 5, 2979, 0, 0, 690, 136, 1, 0, 0, 0, 691, 692, 5, 2979, 0, 0, 692, 693, 5, 3007, 0, 0, 693, 138, 1, 0, 0, 0, 694, 695, 5, 2979, 0, 0, 695, 696, 5, 3009, 0, 0, 696, 140, 1, 0, 0, 0, 697, 698, 5, 2979, 0, 0, 698, 699, 5, 3014, 0, 0, 699, 142, 1, 0, 0, 0, 700, 701, 5, 2979, 0, 0, 701, 702, 5, 3018, 0, 0, 702, 144, 1, 0, 0, 0, 703, 704, 5, 2980, 0, 0, 704, 146, 1, 0, 0, 0, 705, 706, 5, 2980, 0, 0, 706, 707, 5, 3007, 0, 0, 707, 148, 1, 0, 0, 0, 708, 709, 5, 2980, 0, 0, 709, 710, 5, 3009, 0, 0, 710, 150, 1, 0, 0, 0, 711, 712, 5, 2980, 0, 0, 712, 713, 5, 3014, 0, 0, 713, 152, 1, 0, 0, 0, 714, 715, 5, 2980, 0, 0, 715, 716, 5, 3018, 0, 0, 716, 154, 1, 0, 0, 0, 717, 718, 5, 2984, 0, 0, 718, 156, 1, 0, 0, 0, 719, 720, 5, 2984, 0, 0, 720, 721, 5, 3007, 0, 0, 721, 158, 1, 0, 0, 0, 722, 723, 5, 2984, 0, 0, 723, 724, 5, 3009, 0, 0, 724, 160, 1, 0, 0, 0, 725, 726, 5, 2984, 0, 0, 726, 727, 5, 3014, 0, 0, 727, 162, 1, 0, 0, 0, 728, 729, 5, 2984, 0, 0, 729, 730, 5, 3018, 0, 0, 730, 164, 1, 0, 0, 0, 731, 732, 5, 2986, 0, 0, 732, 166, 1, 0, 0, 0, 733, 734, 5, 2986, 0, 0, 734, 735, 5, 3007, 0, 0, 735, 168, 1, 0, 0, 0, 736, 737, 5, 2986, 0, 0, 737, 738, 5, 3009, 0, 0, 738, 170, 1, 0, 0, 0, 739, 740, 5, 2986, 0, 0, 740, 741, 5, 3014, 0, 0, 741, 172, 1, 0, 0, 0, 742, 743, 5, 2986, 0, 0, 743, 744, 5, 3018, 0, 0, 744, 174, 1, 0, 0, 0, 745, 746, 5, 2990, 0, 0, 746, 176, 1, 0, 0, 0, 747, 748, 5, 2990, 0, 0, 748, 749, 5, 3007, 0, 0, 749, 178, 1, 0, 0, 0, 750, 751, 5, 2990, 0, 0, 751, 752, 5, 3009, 0, 0, 752, 180, 1, 0, 0, 0, 753, 754, 5, 2990, 0, 0, 754, 755, 5, 3014, 0, 0, 755, 182, 1, 0, 0, 0, 756, 757, 5, 2990, 0, 0, 757, 758, 5, 3018, 0, 0, 758, 184, 1, 0, 0, 0, 759, 760, 5, 2991, 0, 0, 760, 186, 1, 0, 0, 0, 761, 762, 5, 2991, 0, 0, 762, 763, 5, 3007, 0, 0, 763, 188, 1, 0, 0, 0, 764, 765, 5, 2991, 0, 0, 765, 766, 5, 3009, 0, 0, 766, 190, 1, 0, 0, 0, 767, 768, 5, 2991, 0, 0, 768, 769, 5, 3014, 0, 0, 769, 192, 1, 0, 0, 0, 770, 771, 5, 2991, 0, 0, 771, 772, 5, 3018, 0, 0, 772, 194, 1, 0, 0, 0, 773, 774, 5, 2992, 0, 0, 774, 196, 1, 0, 0, 0, 775, 776, 5, 2992, 0, 0, 776, 777, 5, 3007, 0, 0, 777, 198, 1, 0, 0, 0, 778, 779, 5, 2992, 0, 0, 779, 780, 5, 3009, 0, 0, 780, 200, 1, 0, 0, 0, 781, 782, 5, 2992, 0, 0, 782, 783, 5, 3014, 0, 0, 783, 202, 1, 0, 0, 0, 784, 785, 5, 2992, 0, 0, 785, 786, 5, 3018, 0, 0, 786, 204, 1, 0, 0, 0, 787, 788, 5, 2994, 0, 0, 788, 206, 1, 0, 0, 0, 789, 790, 5, 2994, 0, 0, 790, 791, 5, 3007, 0, 0, 791, 208, 1, 0, 0, 0, 792, 793, 5, 2994, 0, 0, 793, 794, 5, 3009, 0, 0, 794, 210, 1, 0, 0, 0, 795, 796, 5, 2994, 0, 0, 796, 797, 5, 3014, 0, 0, 797, 212, 1, 0, 0, 0, 798, 799, 5, 2994, 0, 0, 799, 800, 5, 3018, 0, 0, 800, 214, 1, 0, 0, 0, 801, 802, 5, 2997, 0, 0, 802, 216, 1, 0, 0, 0, 803, 804, 5, 2997, 0, 0, 804, 805, 5, 3007, 0, 0, 805, 218, 1, 0, 0, 0, 806, 807, 5, 2997, 0, 0, 807, 808, 5, 3009, 0, 0, 808, 220, 1, 0, 0, 0, 809, 810, 5, 2997, 0, 0, 810, 811, 5, 3014, 0, 0, 811, 222, 1, 0, 0, 0, 812, 813, 5, 2997, 0, 0, 813, 814, 5, 3018, 0, 0, 814, 224, 1, 0, 0, 0, 815, 816, 5, 2996, 0, 0, 816, 226, 1, 0, 0, 0, 817, 818, 5, 2996, 0, 0, 818, 819, 5, 3007, 0, 0, 819, 228, 1, 0, 0, 0, 820, 821, 5, 2996, 0, 0, 821, 822, 5, 3009, 0, 0, 822, 230, 1, 0, 0, 0, 823, 824, 5, 2996, 0, 0, 824, 825, 5, 3014, 0, 0, 825, 232, 1, 0, 0, 0, 826, 827, 5, 2996, 0, 0, 827, 828, 5, 3018, 0, 0, 828, 234, 1, 0, 0, 0, 829, 830, 5, 2995, 0, 0, 830, 236, 1, 0, 0, 0, 831, 832, 5, 2995, 0, 0, 832, 833, 5, 3007, 0, 0, 833, 238, 1, 0, 0, 0, 834, 835, 5, 2995, 0, 0, 835, 836, 5, 3009, 0, 0, 836, 240, 1, 0, 0, 0, 837, 838, 5, 2995, 0, 0, 838, 839, 5, 3014, 0, 0, 839, 242, 1, 0, 0, 0, 840, 841, 5, 2995, 0, 0, 841, 842, 5, 3018, 0, 0, 842, 244, 1, 0, 0, 0, 843, 844, 5, 2993, 0, 0, 844, 246, 1, 0, 0, 0, 845, 846, 5, 2993, 0, 0, 846, 847, 5, 3007, 0, 0, 847, 248, 1, 0, 0, 0, 848, 849, 5, 2993, 0, 0, 849, 850, 5, 3009, 0, 0, 850, 250, 1, 0, 0, 0, 851, 852, 5, 2993, 0, 0, 852, 853, 5, 3014, 0, 0, 853, 252, 1, 0, 0, 0, 854, 855, 5, 2993, 0, 0, 855, 856, 5, 3018, 0, 0, 856, 254, 1, 0, 0, 0, 857, 858, 5, 2985, 0, 0, 858, 256, 1, 0, 0, 0, 859, 860, 5, 2985, 0, 0, 860, 861, 5, 3007, 0, 0, 861, 258, 1, 0, 0, 0, 862, 863, 5, 2985, 0, 0, 863, 864, 5, 3009, 0, 0, 864, 260, 1, 0, 0, 0, 865, 866, 5, 2985, 0, 0, 866, 867, 5, 3014, 0, 0, 867, 262, 1, 0, 0, 0, 868, 869, 5, 2985, 0, 0, 869, 870, 5, 3018, 0, 0, 870, 264, 1, 0, 0, 0, 871, 872, 5, 2950, 0, 0, 872, 266, 1, 0, 0, 0, 873, 874, 5, 2952, 0, 0, 874, 268, 1, 0, 0, 0, 875, 876, 5, 2954, 0, 0, 876, 270, 1, 0, 0, 0, 877, 878, 5, 2959, 0, 0, 878, 272, 1, 0, 0, 0, 879, 880, 5, 2960, 0, 0, 880, 274, 1, 0, 0, 0, 881, 882, 5, 2963, 0, 0, 882, 276, 1, 0, 0, 0, 883, 884, 5, 2964, 0, 0, 884, 278, 1, 0, 0, 0, 885, 886, 5, 2965, 0, 0, 886, 887, 5, 3006, 0, 0, 887, 280, 1, 0, 0, 0, 888, 889, 5, 2965, 0, 0, 889, 890, 5, 3008, 0, 0, 890, 282, 1, 0, 0, 0, 891, 892, 5, 2965, 0, 0, 892, 893, 5, 3010, 0, 0, 893, 284, 1, 0, 0, 0, 894, 895, 5, 2965, 0, 0, 895, 896, 5, 3015, 0, 0, 896, 286, 1, 0, 0, 0, 897, 898, 5, 2965, 0, 0, 898, 899, 5, 3019, 0, 0, 899, 288, 1, 0, 0, 0, 900, 901, 5, 2965, 0, 0, 901, 902, 5, 3020, 0, 0, 902, 290, 1, 0, 0, 0, 903, 904, 5, 2969, 0, 0, 904, 905, 5, 3006, 0, 0, 905, 292, 1, 0, 0, 0, 906, 907, 5, 2969, 0, 0, 907, 908, 5, 3008, 0, 0, 908, 294, 1, 0, 0, 0, 909, 910, 5, 2969, 0, 0, 910, 911, 5, 3010, 0, 0, 911, 296, 1, 0, 0, 0, 912, 913, 5, 2969, 0, 0, 913, 914, 5, 3015, 0, 0, 914, 298, 1, 0, 0, 0, 915, 916, 5, 2969, 0, 0, 916, 917, 5, 3019, 0, 0, 917, 300, 1, 0, 0, 0, 918, 919, 5, 2969, 0, 0, 919, 920, 5, 3020, 0, 0, 920, 302, 1, 0, 0, 0, 921, 922, 5, 2970, 0, 0, 922, 923, 5, 3006, 0, 0, 923, 304, 1, 0, 0, 0, 924, 925, 5, 2970, 0, 0, 925, 926, 5, 3008, 0, 0, 926, 306, 1, 0, 0, 0, 927, 928, 5, 2970, 0, 0, 928, 929, 5, 3010, 0, 0, 929, 308, 1, 0, 0, 0, 930, 931, 5, 2970, 0, 0, 931, 932, 5, 3015, 0, 0, 932, 310, 1, 0, 0, 0, 933, 934, 5, 2970, 0, 0, 934, 935, 5, 3019, 0, 0, 935, 312, 1, 0, 0, 0, 936, 937, 5, 2970, 0, 0, 937, 938, 5, 3020, 0, 0, 938, 314, 1, 0, 0, 0, 939, 940, 5, 2974, 0, 0, 940, 941, 5, 3006, 0, 0, 941, 316, 1, 0, 0, 0, 942, 943, 5, 2974, 0, 0, 943, 944, 5, 3008, 0, 0, 944, 318, 1, 0, 0, 0, 945, 946, 5, 2974, 0, 0, 946, 947, 5, 3010, 0, 0, 947, 320, 1, 0, 0, 0, 948, 949, 5, 2974, 0, 0, 949, 950, 5, 3015, 0, 0, 950, 322, 1, 0, 0, 0, 951, 952, 5, 2974, 0, 0, 952, 953, 5, 3019, 0, 0, 953, 324, 1, 0, 0, 0, 954, 955, 5, 2974, 0, 0, 955, 956, 5, 3020, 0, 0, 956, 326, 1, 0, 0, 0, 957, 958, 5, 2975, 0, 0, 958, 959, 5, 3006, 0, 0, 959, 328, 1, 0, 0, 0, 960, 961, 5, 2975, 0, 0, 961, 962, 5, 3008, 0, 0, 962, 330, 1, 0, 0, 0, 963, 964, 5, 2975, 0, 0, 964, 965, 5, 3010, 0, 0, 965, 332, 1, 0, 0, 0, 966, 967, 5, 2975, 0, 0, 967, 968, 5, 3015, 0, 0, 968, 334, 1, 0, 0, 0, 969, 970, 5, 2975, 0, 0, 970, 971, 5, 3019, 0, 0, 971, 336, 1, 0, 0, 0, 972, 973, 5, 2975, 0, 0, 973, 974, 5, 3020, 0, 0, 974, 338, 1, 0, 0, 0, 975, 976, 5, 2979, 0, 0, 976, 977, 5, 3006, 0, 0, 977, 340, 1, 0, 0, 0, 978, 979, 5, 2979, 0, 0, 979, 980, 5, 3008, 0, 0, 980, 342, 1, 0, 0, 0, 981, 982, 5, 2979, 0, 0, 982, 983, 5, 3010, 0, 0, 983, 344, 1, 0, 0, 0, 984, 985, 5, 2979, 0, 0, 985, 986, 5, 3015, 0, 0, 986, 346, 1, 0, 0, 0, 987, 988, 5, 2979, 0, 0, 988, 989, 5, 3019, 0, 0, 989, 348, 1, 0, 0, 0, 990, 991, 5, 2979, 0, 0, 991, 992, 5, 3020, 0, 0, 992, 350, 1, 0, 0, 0, 993, 994, 5, 2980, 0, 0, 994, 995, 5, 3006, 0, 0, 995, 352, 1, 0, 0, 0, 996, 997, 5, 2980, 0, 0, 997, 998, 5, 3008, 0, 0, 998, 354, 1, 0, 0, 0, 999, 1000, 5, 2980, 0, 0, 1000, 1001, 5, 3010, 0, 0, 1001, 356, 1, 0, 0, 0, 1002, 1003, 5, 2980, 0, 0, 1003, 1004, 5, 3015, 0, 0, 1004, 358, 1, 0, 0, 0, 1005, 1006, 5, 2980, 0, 0, 1006, 1007, 5, 3019, 0, 0, 1007, 360, 1, 0, 0, 0, 1008, 1009, 5, 2980, 0, 0, 1009, 1010, 5, 3020, 0, 0, 1010, 362, 1, 0, 0, 0, 1011, 1012, 5, 2984, 0, 0, 1012, 1013, 5, 3006, 0, 0, 1013, 364, 1, 0, 0, 0, 1014, 1015, 5, 2984, 0, 0, 1015, 1016, 5, 3008, 0, 0, 1016, 366, 1, 0, 0, 0, 1017, 1018, 5, 2984, 0, 0, 1018, 1019, 5, 3010, 0, 0, 1019, 368, 1, 0, 0, 0, 1020, 1021, 5, 2984, 0, 0, 1021, 1022, 5, 3015, 0, 0, 1022, 370, 1, 0, 0, 0, 1023, 1024, 5, 2984, 0, 0, 1024, 1025, 5, 3019, 0, 0, 1025, 372, 1, 0, 0, 0, 1026, 1027, 5, 2984, 0, 0, 1027, 1028, 5, 3020, 0, 0, 1028, 374, 1, 0, 0, 0, 1029, 1030, 5, 2986, 0, 0, 1030, 1031, 5, 3006, 0, 0, 1031, 376, 1, 0, 0, 0, 1032, 1033, 5, 2986, 0, 0, 1033, 1034, 5, 3008, 0, 0, 1034, 378, 1, 0, 0, 0, 1035, 1036, 5, 2986, 0, 0, 1036, 1037, 5, 3010, 0, 0, 1037, 380, 1, 0, 0, 0, 1038, 1039, 5, 2986, 0, 0, 1039, 1040, 5, 3015, 0, 0, 1040, 382, 1, 0, 0, 0, 1041, 1042, 5, 2986, 0, 0, 1042, 1043, 5, 3019, 0, 0, 1043, 384, 1, 0, 0, 0, 1044, 1045, 5, 2986, 0, 0, 1045, 1046, 5, 3020, 0, 0, 1046, 386, 1, 0, 0, 0, 1047, 1048, 5, 2990, 0, 0, 1048, 1049, 5, 3006, 0, 0, 1049, 388, 1, 0, 0, 0, 1050, 1051, 5, 2990, 0, 0, 1051, 1052, 5, 3008, 0, 0, 1052, 390, 1, 0, 0, 0, 1053, 1054, 5, 2990, 0, 0, 1054, 1055, 5, 3010, 0, 0, 1055, 392, 1, 0, 0, 0, 1056, 1057, 5, 2990, 0, 0, 1057, 1058, 5, 3015, 0, 0, 1058, 394, 1, 0, 0, 0, 1059, 1060, 5, 2990, 0, 0, 1060, 1061, 5, 3019, 0, 0, 1061, 396, 1, 0, 0, 0, 1062, 1063, 5, 2990, 0, 0, 1063, 1064, 5, 3020, 0, 0, 1064, 398, 1, 0, 0, 0, 1065, 1066, 5, 2991, 0, 0, 1066, 1067, 5, 3006, 0, 0, 1067, 400, 1, 0, 0, 0, 1068, 1069, 5, 2991, 0, 0, 1069, 1070, 5, 3008, 0, 0, 1070, 402, 1, 0, 0, 0, 1071, 1072, 5, 2991, 0, 0, 1072, 1073, 5, 3010, 0, 0, 1073, 404, 1, 0, 0, 0, 1074, 1075, 5, 2991, 0, 0, 1075, 1076, 5, 3015, 0, 0, 1076, 406, 1, 0, 0, 0, 1077, 1078, 5, 2991, 0, 0, 1078, 1079, 5, 3019, 0, 0, 1079, 408, 1, 0, 0, 0, 1080, 1081, 5, 2991, 0, 0, 1081, 1082, 5, 3020, 0, 0, 1082, 410, 1, 0, 0, 0, 1083, 1084, 5, 2992, 0, 0, 1084, 1085, 5, 3006, 0, 0, 1085, 412, 1, 0, 0, 0, 1086, 1087, 5, 2992, 0, 0, 1087, 1088, 5, 3008, 0, 0, 1088, 414, 1, 0, 0, 0, 1089, 1090, 5, 2992, 0, 0, 1090, 1091, 5, 3010, 0, 0, 1091, 416, 1, 0, 0, 0, 1092, 1093, 5, 2992, 0, 0, 1093, 1094, 5, 3015, 0, 0, 1094, 418, 1, 0, 0, 0, 1095, 1096, 5, 2992, 0, 0, 1096, 1097, 5, 3019, 0, 0, 1097, 420, 1, 0, 0, 0, 1098, 1099, 5, 2992, 0, 0, 1099, 1100, 5, 3020, 0, 0, 1100, 422, 1, 0, 0, 0, 1101, 1102, 5, 2994, 0, 0, 1102, 1103, 5, 3006, 0, 0, 1103, 424, 1, 0, 0, 0, 1104, 1105, 5, 2994, 0, 0, 1105, 1106, 5, 3008, 0, 0, 1106, 426, 1, 0, 0, 0, 1107, 1108, 5, 2994, 0, 0, 1108, 1109, 5, 3010, 0, 0, 1109, 428, 1, 0, 0, 0, 1110, 1111, 5, 2994, 0, 0, 1111, 1112, 5, 3015, 0, 0, 1112, 430, 1, 0, 0, 0, 1113, 1114, 5, 2994, 0, 0, 1114, 1115, 5, 3019, 0, 0, 1115, 432, 1, 0, 0, 0, 1116, 1117, 5, 2994, 0, 0, 1117, 1118, 5, 3020, 0, 0, 1118, 434, 1, 0, 0, 0, 1119, 1120, 5, 2997, 0, 0, 1120, 1121, 5, 3006, 0, 0, 1121, 436, 1, 0, 0, 0, 1122, 1123, 5, 2997, 0, 0, 1123, 1124, 5, 3008, 0, 0, 1124, 438, 1, 0, 0, 0, 1125, 1126, 5, 2997, 0, 0, 1126, 1127, 5, 3010, 0, 0, 1127, 440, 1, 0, 0, 0, 1128, 1129, 5, 2997, 0, 0, 1129, 1130, 5, 3015, 0, 0, 1130, 442, 1, 0, 0, 0, 1131, 1132, 5, 2997, 0, 0, 1132, 1133, 5, 3019, 0, 0, 1133, 444, 1, 0, 0, 0, 1134, 1135, 5, 2997, 0, 0, 1135, 1136, 5, 3020, 0, 0, 1136, 446, 1, 0, 0, 0, 1137, 1138, 5, 2996, 0, 0, 1138, 1139, 5, 3006, 0, 0, 1139, 448, 1, 0, 0, 0, 1140, 1141, 5, 2996, 0, 0, 1141, 1142, 5, 3008, 0, 0, 1142, 450, 1, 0, 0, 0, 1143, 1144, 5, 2996, 0, 0, 1144, 1145, 5, 3010, 0, 0, 1145, 452, 1, 0, 0, 0, 1146, 1147, 5, 2996, 0, 0, 1147, 1148, 5, 3015, 0, 0, 1148, 454, 1, 0, 0, 0, 1149, 1150, 5, 2996, 0, 0, 1150, 1151, 5, 3019, 0, 0, 1151, 456, 1, 0, 0, 0, 1152, 1153, 5, 2996, 0, 0, 1153, 1154, 5, 3020, 0, 0, 1154, 458, 1, 0, 0, 0, 1155, 1156, 5, 2995, 0, 0, 1156, 1157, 5, 3006, 0, 0, 1157, 460, 1, 0, 0, 0, 1158, 1159, 5, 2995, 0, 0, 1159, 1160, 5, 3008, 0, 0, 1160, 462, 1, 0, 0, 0, 1161, 1162, 5, 2995, 0, 0, 1162, 1163, 5, 3010, 0, 0, 1163, 464, 1, 0, 0, 0, 1164, 1165, 5, 2995, 0, 0, 1165, 1166, 5, 3015, 0, 0, 1166, 466, 1, 0, 0, 0, 1167, 1168, 5, 2995, 0, 0, 1168, 1169, 5, 3019, 0, 0, 1169, 468, 1, 0, 0, 0, 1170, 1171, 5, 2995, 0, 0, 1171, 1172, 5, 3020, 0, 0, 1172, 470, 1, 0, 0, 0, 1173, 1174, 5, 2993, 0, 0, 1174, 1175, 5, 3006, 0, 0, 1175, 472, 1, 0, 0, 0, 1176, 1177, 5, 2993, 0, 0, 1177, 1178, 5, 3008, 0, 0, 1178, 474, 1, 0, 0, 0, 1179, 1180, 5, 2993, 0, 0, 1180, 1181, 5, 3010, 0, 0, 1181, 476, 1, 0, 0, 0, 1182, 1183, 5, 2993, 0, 0, 1183, 1184, 5, 3015, 0, 0, 1184, 478, 1, 0, 0, 0, 1185, 1186, 5, 2993, 0, 0, 1186, 1187, 5, 3019, 0, 0, 1187, 480, 1, 0, 0, 0, 1188, 1189, 5, 2993, 0, 0, 1189, 1190, 5, 3020, 0, 0, 1190, 482, 1, 0, 0, 0, 1191, 1192, 5, 2985, 0, 0, 1192, 1193, 5, 3006, 0, 0, 1193, 484, 1, 0, 0, 0, 1194, 1195, 5, 2985, 0, 0, 1195, 1196, 5, 3008, 0, 0, 1196, 486, 1, 0, 0, 0, 1197, 1198, 5, 2985, 0, 0, 1198, 1199, 5, 3010, 0, 0, 1199, 488, 1, 0, 0, 0, 1200, 1201, 5, 2985, 0, 0, 1201, 1202, 5, 3015, 0, 0, 1202, 490, 1, 0, 0, 0, 1203, 1204, 5, 2985, 0, 0, 1204, 1205, 5, 3019, 0, 0, 1205, 492, 1, 0, 0, 0, 1206, 1207, 5, 2985, 0, 0, 1207, 1208, 5, 3020, 0, 0, 1208, 494, 1, 0, 0, 0, 1209, 1211, 7, 0, 0, 0, 1210, 1209, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1210, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 496, 1, 0, 0, 0, 1214, 1216, 5, 13, 0, 0, 1215, 1214, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1218, 5, 10, 0, 0, 1218, 498, 1, 0, 0, 0, 3, 0, 1212, 1215, 0] \ No newline at end of file diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.py" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.py" index 3593a69..9940c7f 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.py" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.py" @@ -10,7 +10,7 @@ def serializedATN(): return [ - 4,0,249,1214,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, + 4,0,249,1219,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, @@ -52,412 +52,415 @@ def serializedATN(): 2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235, 7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240, 2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246, - 7,246,2,247,7,247,2,248,7,248,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1,2,1, - 3,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,7,1,8,1, - 8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1, - 13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1,17,1, - 17,1,17,1,18,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,25,1,26,1,26,1,26,1,27,1,27,1,27,1, - 28,1,28,1,28,1,29,1,29,1,30,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1, - 32,1,33,1,33,1,33,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1, - 37,1,37,1,38,1,38,1,38,1,39,1,39,1,40,1,40,1,40,1,41,1,41,1,41,1, - 42,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,45,1,45,1,45,1,46,1,46,1, - 46,1,47,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,50,1,50,1,50,1,51,1, - 51,1,51,1,52,1,52,1,52,1,53,1,53,1,53,1,54,1,54,1,55,1,55,1,55,1, - 56,1,56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,59,1,59,1,60,1,60,1, - 60,1,61,1,61,1,61,1,62,1,62,1,62,1,63,1,63,1,63,1,64,1,64,1,65,1, - 65,1,65,1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,68,1,69,1,69,1, - 70,1,70,1,70,1,71,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,73,1,74,1, - 74,1,75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1, - 79,1,79,1,80,1,80,1,80,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1, - 83,1,84,1,84,1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1, - 88,1,88,1,89,1,89,1,90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,1, - 93,1,93,1,93,1,94,1,94,1,95,1,95,1,95,1,96,1,96,1,96,1,97,1,97,1, - 97,1,98,1,98,1,98,1,99,1,99,1,100,1,100,1,100,1,101,1,101,1,101, - 1,102,1,102,1,102,1,103,1,103,1,103,1,104,1,104,1,105,1,105,1,105, - 1,106,1,106,1,106,1,107,1,107,1,107,1,108,1,108,1,108,1,109,1,109, - 1,110,1,110,1,110,1,111,1,111,1,111,1,112,1,112,1,112,1,113,1,113, - 1,113,1,114,1,114,1,115,1,115,1,116,1,116,1,117,1,117,1,118,1,118, - 1,119,1,119,1,120,1,120,1,120,1,121,1,121,1,121,1,122,1,122,1,122, - 1,123,1,123,1,123,1,124,1,124,1,124,1,125,1,125,1,125,1,126,1,126, - 1,126,1,127,1,127,1,127,1,128,1,128,1,128,1,129,1,129,1,129,1,130, - 1,130,1,130,1,131,1,131,1,131,1,132,1,132,1,132,1,133,1,133,1,133, - 1,134,1,134,1,134,1,135,1,135,1,135,1,136,1,136,1,136,1,137,1,137, - 1,137,1,138,1,138,1,138,1,139,1,139,1,139,1,140,1,140,1,140,1,141, - 1,141,1,141,1,142,1,142,1,142,1,143,1,143,1,143,1,144,1,144,1,144, - 1,145,1,145,1,145,1,146,1,146,1,146,1,147,1,147,1,147,1,148,1,148, - 1,148,1,149,1,149,1,149,1,150,1,150,1,150,1,151,1,151,1,151,1,152, - 1,152,1,152,1,153,1,153,1,153,1,154,1,154,1,154,1,155,1,155,1,155, - 1,156,1,156,1,156,1,157,1,157,1,157,1,158,1,158,1,158,1,159,1,159, - 1,159,1,160,1,160,1,160,1,161,1,161,1,161,1,162,1,162,1,162,1,163, - 1,163,1,163,1,164,1,164,1,164,1,165,1,165,1,165,1,166,1,166,1,166, - 1,167,1,167,1,167,1,168,1,168,1,168,1,169,1,169,1,169,1,170,1,170, - 1,170,1,171,1,171,1,171,1,172,1,172,1,172,1,173,1,173,1,173,1,174, - 1,174,1,174,1,175,1,175,1,175,1,176,1,176,1,176,1,177,1,177,1,177, - 1,178,1,178,1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,181,1,181, - 1,181,1,182,1,182,1,182,1,183,1,183,1,183,1,184,1,184,1,184,1,185, - 1,185,1,185,1,186,1,186,1,186,1,187,1,187,1,187,1,188,1,188,1,188, - 1,189,1,189,1,189,1,190,1,190,1,190,1,191,1,191,1,191,1,192,1,192, - 1,192,1,193,1,193,1,193,1,194,1,194,1,194,1,195,1,195,1,195,1,196, - 1,196,1,196,1,197,1,197,1,197,1,198,1,198,1,198,1,199,1,199,1,199, - 1,200,1,200,1,200,1,201,1,201,1,201,1,202,1,202,1,202,1,203,1,203, - 1,203,1,204,1,204,1,204,1,205,1,205,1,205,1,206,1,206,1,206,1,207, - 1,207,1,207,1,208,1,208,1,208,1,209,1,209,1,209,1,210,1,210,1,210, - 1,211,1,211,1,211,1,212,1,212,1,212,1,213,1,213,1,213,1,214,1,214, - 1,214,1,215,1,215,1,215,1,216,1,216,1,216,1,217,1,217,1,217,1,218, - 1,218,1,218,1,219,1,219,1,219,1,220,1,220,1,220,1,221,1,221,1,221, - 1,222,1,222,1,222,1,223,1,223,1,223,1,224,1,224,1,224,1,225,1,225, - 1,225,1,226,1,226,1,226,1,227,1,227,1,227,1,228,1,228,1,228,1,229, - 1,229,1,229,1,230,1,230,1,230,1,231,1,231,1,231,1,232,1,232,1,232, - 1,233,1,233,1,233,1,234,1,234,1,234,1,235,1,235,1,235,1,236,1,236, - 1,236,1,237,1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,239,1,240, - 1,240,1,240,1,241,1,241,1,241,1,242,1,242,1,242,1,243,1,243,1,243, - 1,244,1,244,1,244,1,245,1,245,1,245,1,246,1,246,1,246,1,247,1,247, - 1,248,1,248,0,0,249,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10, - 21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21, - 43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32, - 65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43, - 87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107, - 54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63, - 127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145, - 73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82, - 165,83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183, - 92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201, - 101,203,102,205,103,207,104,209,105,211,106,213,107,215,108,217, - 109,219,110,221,111,223,112,225,113,227,114,229,115,231,116,233, - 117,235,118,237,119,239,120,241,121,243,122,245,123,247,124,249, - 125,251,126,253,127,255,128,257,129,259,130,261,131,263,132,265, - 133,267,134,269,135,271,136,273,137,275,138,277,139,279,140,281, - 141,283,142,285,143,287,144,289,145,291,146,293,147,295,148,297, - 149,299,150,301,151,303,152,305,153,307,154,309,155,311,156,313, - 157,315,158,317,159,319,160,321,161,323,162,325,163,327,164,329, - 165,331,166,333,167,335,168,337,169,339,170,341,171,343,172,345, - 173,347,174,349,175,351,176,353,177,355,178,357,179,359,180,361, - 181,363,182,365,183,367,184,369,185,371,186,373,187,375,188,377, - 189,379,190,381,191,383,192,385,193,387,194,389,195,391,196,393, - 197,395,198,397,199,399,200,401,201,403,202,405,203,407,204,409, - 205,411,206,413,207,415,208,417,209,419,210,421,211,423,212,425, - 213,427,214,429,215,431,216,433,217,435,218,437,219,439,220,441, - 221,443,222,445,223,447,224,449,225,451,226,453,227,455,228,457, - 229,459,230,461,231,463,232,465,233,467,234,469,235,471,236,473, - 237,475,238,477,239,479,240,481,241,483,242,485,243,487,244,489, - 245,491,246,493,247,495,248,497,249,1,0,0,1213,0,1,1,0,0,0,0,3,1, - 0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0, - 0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0, - 0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0, - 0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0, - 0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0, - 0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0, - 0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0, - 0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0, - 0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0, - 0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1, - 0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0, - 113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0, - 0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131, - 1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0, - 0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1, - 0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0, - 159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0, - 0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177, - 1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0, - 0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1, - 0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0, - 205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0, - 0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223, - 1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0, - 0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1, - 0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0, - 251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0, - 0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269, - 1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0, - 0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1, - 0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0, - 297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0, - 0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315, - 1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0, - 0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1, - 0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0, - 343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0, - 0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361, - 1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0, - 0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1, - 0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0, - 389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0, - 0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407, - 1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0, - 0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1, - 0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0, - 435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0, - 0,0,0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453, - 1,0,0,0,0,455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0, - 0,463,1,0,0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1, - 0,0,0,0,473,1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0, - 481,1,0,0,0,0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0, - 0,0,0,491,1,0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,1,499, - 1,0,0,0,3,501,1,0,0,0,5,504,1,0,0,0,7,507,1,0,0,0,9,510,1,0,0,0, - 11,513,1,0,0,0,13,516,1,0,0,0,15,519,1,0,0,0,17,522,1,0,0,0,19,525, - 1,0,0,0,21,528,1,0,0,0,23,531,1,0,0,0,25,534,1,0,0,0,27,537,1,0, - 0,0,29,540,1,0,0,0,31,543,1,0,0,0,33,546,1,0,0,0,35,549,1,0,0,0, - 37,552,1,0,0,0,39,555,1,0,0,0,41,557,1,0,0,0,43,559,1,0,0,0,45,561, - 1,0,0,0,47,563,1,0,0,0,49,565,1,0,0,0,51,567,1,0,0,0,53,570,1,0, - 0,0,55,573,1,0,0,0,57,576,1,0,0,0,59,579,1,0,0,0,61,581,1,0,0,0, - 63,584,1,0,0,0,65,587,1,0,0,0,67,590,1,0,0,0,69,593,1,0,0,0,71,595, - 1,0,0,0,73,598,1,0,0,0,75,601,1,0,0,0,77,604,1,0,0,0,79,607,1,0, - 0,0,81,609,1,0,0,0,83,612,1,0,0,0,85,615,1,0,0,0,87,618,1,0,0,0, - 89,621,1,0,0,0,91,623,1,0,0,0,93,626,1,0,0,0,95,629,1,0,0,0,97,632, - 1,0,0,0,99,635,1,0,0,0,101,637,1,0,0,0,103,640,1,0,0,0,105,643,1, - 0,0,0,107,646,1,0,0,0,109,649,1,0,0,0,111,651,1,0,0,0,113,654,1, - 0,0,0,115,657,1,0,0,0,117,660,1,0,0,0,119,663,1,0,0,0,121,665,1, - 0,0,0,123,668,1,0,0,0,125,671,1,0,0,0,127,674,1,0,0,0,129,677,1, - 0,0,0,131,679,1,0,0,0,133,682,1,0,0,0,135,685,1,0,0,0,137,688,1, - 0,0,0,139,691,1,0,0,0,141,693,1,0,0,0,143,696,1,0,0,0,145,699,1, - 0,0,0,147,702,1,0,0,0,149,705,1,0,0,0,151,707,1,0,0,0,153,710,1, - 0,0,0,155,713,1,0,0,0,157,716,1,0,0,0,159,719,1,0,0,0,161,721,1, - 0,0,0,163,724,1,0,0,0,165,727,1,0,0,0,167,730,1,0,0,0,169,733,1, - 0,0,0,171,735,1,0,0,0,173,738,1,0,0,0,175,741,1,0,0,0,177,744,1, - 0,0,0,179,747,1,0,0,0,181,749,1,0,0,0,183,752,1,0,0,0,185,755,1, - 0,0,0,187,758,1,0,0,0,189,761,1,0,0,0,191,763,1,0,0,0,193,766,1, - 0,0,0,195,769,1,0,0,0,197,772,1,0,0,0,199,775,1,0,0,0,201,777,1, - 0,0,0,203,780,1,0,0,0,205,783,1,0,0,0,207,786,1,0,0,0,209,789,1, - 0,0,0,211,791,1,0,0,0,213,794,1,0,0,0,215,797,1,0,0,0,217,800,1, - 0,0,0,219,803,1,0,0,0,221,805,1,0,0,0,223,808,1,0,0,0,225,811,1, - 0,0,0,227,814,1,0,0,0,229,817,1,0,0,0,231,819,1,0,0,0,233,821,1, - 0,0,0,235,823,1,0,0,0,237,825,1,0,0,0,239,827,1,0,0,0,241,829,1, - 0,0,0,243,832,1,0,0,0,245,835,1,0,0,0,247,838,1,0,0,0,249,841,1, - 0,0,0,251,844,1,0,0,0,253,847,1,0,0,0,255,850,1,0,0,0,257,853,1, - 0,0,0,259,856,1,0,0,0,261,859,1,0,0,0,263,862,1,0,0,0,265,865,1, - 0,0,0,267,868,1,0,0,0,269,871,1,0,0,0,271,874,1,0,0,0,273,877,1, - 0,0,0,275,880,1,0,0,0,277,883,1,0,0,0,279,886,1,0,0,0,281,889,1, - 0,0,0,283,892,1,0,0,0,285,895,1,0,0,0,287,898,1,0,0,0,289,901,1, - 0,0,0,291,904,1,0,0,0,293,907,1,0,0,0,295,910,1,0,0,0,297,913,1, - 0,0,0,299,916,1,0,0,0,301,919,1,0,0,0,303,922,1,0,0,0,305,925,1, - 0,0,0,307,928,1,0,0,0,309,931,1,0,0,0,311,934,1,0,0,0,313,937,1, - 0,0,0,315,940,1,0,0,0,317,943,1,0,0,0,319,946,1,0,0,0,321,949,1, - 0,0,0,323,952,1,0,0,0,325,955,1,0,0,0,327,958,1,0,0,0,329,961,1, - 0,0,0,331,964,1,0,0,0,333,967,1,0,0,0,335,970,1,0,0,0,337,973,1, - 0,0,0,339,976,1,0,0,0,341,979,1,0,0,0,343,982,1,0,0,0,345,985,1, - 0,0,0,347,988,1,0,0,0,349,991,1,0,0,0,351,994,1,0,0,0,353,997,1, - 0,0,0,355,1000,1,0,0,0,357,1003,1,0,0,0,359,1006,1,0,0,0,361,1009, - 1,0,0,0,363,1012,1,0,0,0,365,1015,1,0,0,0,367,1018,1,0,0,0,369,1021, - 1,0,0,0,371,1024,1,0,0,0,373,1027,1,0,0,0,375,1030,1,0,0,0,377,1033, - 1,0,0,0,379,1036,1,0,0,0,381,1039,1,0,0,0,383,1042,1,0,0,0,385,1045, - 1,0,0,0,387,1048,1,0,0,0,389,1051,1,0,0,0,391,1054,1,0,0,0,393,1057, - 1,0,0,0,395,1060,1,0,0,0,397,1063,1,0,0,0,399,1066,1,0,0,0,401,1069, - 1,0,0,0,403,1072,1,0,0,0,405,1075,1,0,0,0,407,1078,1,0,0,0,409,1081, - 1,0,0,0,411,1084,1,0,0,0,413,1087,1,0,0,0,415,1090,1,0,0,0,417,1093, - 1,0,0,0,419,1096,1,0,0,0,421,1099,1,0,0,0,423,1102,1,0,0,0,425,1105, - 1,0,0,0,427,1108,1,0,0,0,429,1111,1,0,0,0,431,1114,1,0,0,0,433,1117, - 1,0,0,0,435,1120,1,0,0,0,437,1123,1,0,0,0,439,1126,1,0,0,0,441,1129, - 1,0,0,0,443,1132,1,0,0,0,445,1135,1,0,0,0,447,1138,1,0,0,0,449,1141, - 1,0,0,0,451,1144,1,0,0,0,453,1147,1,0,0,0,455,1150,1,0,0,0,457,1153, - 1,0,0,0,459,1156,1,0,0,0,461,1159,1,0,0,0,463,1162,1,0,0,0,465,1165, - 1,0,0,0,467,1168,1,0,0,0,469,1171,1,0,0,0,471,1174,1,0,0,0,473,1177, - 1,0,0,0,475,1180,1,0,0,0,477,1183,1,0,0,0,479,1186,1,0,0,0,481,1189, - 1,0,0,0,483,1192,1,0,0,0,485,1195,1,0,0,0,487,1198,1,0,0,0,489,1201, - 1,0,0,0,491,1204,1,0,0,0,493,1207,1,0,0,0,495,1210,1,0,0,0,497,1212, - 1,0,0,0,499,500,5,10,0,0,500,2,1,0,0,0,501,502,5,2965,0,0,502,503, - 5,3021,0,0,503,4,1,0,0,0,504,505,5,2970,0,0,505,506,5,3021,0,0,506, - 6,1,0,0,0,507,508,5,2975,0,0,508,509,5,3021,0,0,509,8,1,0,0,0,510, - 511,5,2980,0,0,511,512,5,3021,0,0,512,10,1,0,0,0,513,514,5,2986, - 0,0,514,515,5,3021,0,0,515,12,1,0,0,0,516,517,5,2993,0,0,517,518, - 5,3021,0,0,518,14,1,0,0,0,519,520,5,2974,0,0,520,521,5,3021,0,0, - 521,16,1,0,0,0,522,523,5,2969,0,0,523,524,5,3021,0,0,524,18,1,0, - 0,0,525,526,5,2979,0,0,526,527,5,3021,0,0,527,20,1,0,0,0,528,529, - 5,2984,0,0,529,530,5,3021,0,0,530,22,1,0,0,0,531,532,5,2990,0,0, - 532,533,5,3021,0,0,533,24,1,0,0,0,534,535,5,2985,0,0,535,536,5,3021, - 0,0,536,26,1,0,0,0,537,538,5,2991,0,0,538,539,5,3021,0,0,539,28, - 1,0,0,0,540,541,5,2992,0,0,541,542,5,3021,0,0,542,30,1,0,0,0,543, - 544,5,2994,0,0,544,545,5,3021,0,0,545,32,1,0,0,0,546,547,5,2997, - 0,0,547,548,5,3021,0,0,548,34,1,0,0,0,549,550,5,2996,0,0,550,551, - 5,3021,0,0,551,36,1,0,0,0,552,553,5,2995,0,0,553,554,5,3021,0,0, - 554,38,1,0,0,0,555,556,5,2949,0,0,556,40,1,0,0,0,557,558,5,2951, - 0,0,558,42,1,0,0,0,559,560,5,2953,0,0,560,44,1,0,0,0,561,562,5,2958, - 0,0,562,46,1,0,0,0,563,564,5,2962,0,0,564,48,1,0,0,0,565,566,5,2965, - 0,0,566,50,1,0,0,0,567,568,5,2965,0,0,568,569,5,3007,0,0,569,52, - 1,0,0,0,570,571,5,2965,0,0,571,572,5,3009,0,0,572,54,1,0,0,0,573, - 574,5,2965,0,0,574,575,5,3014,0,0,575,56,1,0,0,0,576,577,5,2965, - 0,0,577,578,5,3018,0,0,578,58,1,0,0,0,579,580,5,2969,0,0,580,60, - 1,0,0,0,581,582,5,2969,0,0,582,583,5,3007,0,0,583,62,1,0,0,0,584, - 585,5,2969,0,0,585,586,5,3009,0,0,586,64,1,0,0,0,587,588,5,2969, - 0,0,588,589,5,3014,0,0,589,66,1,0,0,0,590,591,5,2969,0,0,591,592, - 5,3018,0,0,592,68,1,0,0,0,593,594,5,2970,0,0,594,70,1,0,0,0,595, - 596,5,2970,0,0,596,597,5,3007,0,0,597,72,1,0,0,0,598,599,5,2970, - 0,0,599,600,5,3009,0,0,600,74,1,0,0,0,601,602,5,2970,0,0,602,603, - 5,3014,0,0,603,76,1,0,0,0,604,605,5,2970,0,0,605,606,5,3018,0,0, - 606,78,1,0,0,0,607,608,5,2974,0,0,608,80,1,0,0,0,609,610,5,2974, - 0,0,610,611,5,3007,0,0,611,82,1,0,0,0,612,613,5,2974,0,0,613,614, - 5,3009,0,0,614,84,1,0,0,0,615,616,5,2974,0,0,616,617,5,3014,0,0, - 617,86,1,0,0,0,618,619,5,2974,0,0,619,620,5,3018,0,0,620,88,1,0, - 0,0,621,622,5,2975,0,0,622,90,1,0,0,0,623,624,5,2975,0,0,624,625, - 5,3007,0,0,625,92,1,0,0,0,626,627,5,2975,0,0,627,628,5,3009,0,0, - 628,94,1,0,0,0,629,630,5,2975,0,0,630,631,5,3014,0,0,631,96,1,0, - 0,0,632,633,5,2975,0,0,633,634,5,3018,0,0,634,98,1,0,0,0,635,636, - 5,2979,0,0,636,100,1,0,0,0,637,638,5,2979,0,0,638,639,5,3007,0,0, - 639,102,1,0,0,0,640,641,5,2979,0,0,641,642,5,3009,0,0,642,104,1, - 0,0,0,643,644,5,2979,0,0,644,645,5,3014,0,0,645,106,1,0,0,0,646, - 647,5,2979,0,0,647,648,5,3018,0,0,648,108,1,0,0,0,649,650,5,2980, - 0,0,650,110,1,0,0,0,651,652,5,2980,0,0,652,653,5,3007,0,0,653,112, - 1,0,0,0,654,655,5,2980,0,0,655,656,5,3009,0,0,656,114,1,0,0,0,657, - 658,5,2980,0,0,658,659,5,3014,0,0,659,116,1,0,0,0,660,661,5,2980, - 0,0,661,662,5,3018,0,0,662,118,1,0,0,0,663,664,5,2984,0,0,664,120, - 1,0,0,0,665,666,5,2984,0,0,666,667,5,3007,0,0,667,122,1,0,0,0,668, - 669,5,2984,0,0,669,670,5,3009,0,0,670,124,1,0,0,0,671,672,5,2984, - 0,0,672,673,5,3014,0,0,673,126,1,0,0,0,674,675,5,2984,0,0,675,676, - 5,3018,0,0,676,128,1,0,0,0,677,678,5,2986,0,0,678,130,1,0,0,0,679, - 680,5,2986,0,0,680,681,5,3007,0,0,681,132,1,0,0,0,682,683,5,2986, - 0,0,683,684,5,3009,0,0,684,134,1,0,0,0,685,686,5,2986,0,0,686,687, - 5,3014,0,0,687,136,1,0,0,0,688,689,5,2986,0,0,689,690,5,3018,0,0, - 690,138,1,0,0,0,691,692,5,2990,0,0,692,140,1,0,0,0,693,694,5,2990, - 0,0,694,695,5,3007,0,0,695,142,1,0,0,0,696,697,5,2990,0,0,697,698, - 5,3009,0,0,698,144,1,0,0,0,699,700,5,2990,0,0,700,701,5,3014,0,0, - 701,146,1,0,0,0,702,703,5,2990,0,0,703,704,5,3018,0,0,704,148,1, - 0,0,0,705,706,5,2991,0,0,706,150,1,0,0,0,707,708,5,2991,0,0,708, - 709,5,3007,0,0,709,152,1,0,0,0,710,711,5,2991,0,0,711,712,5,3009, - 0,0,712,154,1,0,0,0,713,714,5,2991,0,0,714,715,5,3014,0,0,715,156, - 1,0,0,0,716,717,5,2991,0,0,717,718,5,3018,0,0,718,158,1,0,0,0,719, - 720,5,2992,0,0,720,160,1,0,0,0,721,722,5,2992,0,0,722,723,5,3007, - 0,0,723,162,1,0,0,0,724,725,5,2992,0,0,725,726,5,3009,0,0,726,164, - 1,0,0,0,727,728,5,2992,0,0,728,729,5,3014,0,0,729,166,1,0,0,0,730, - 731,5,2992,0,0,731,732,5,3018,0,0,732,168,1,0,0,0,733,734,5,2994, - 0,0,734,170,1,0,0,0,735,736,5,2994,0,0,736,737,5,3007,0,0,737,172, - 1,0,0,0,738,739,5,2994,0,0,739,740,5,3009,0,0,740,174,1,0,0,0,741, - 742,5,2994,0,0,742,743,5,3014,0,0,743,176,1,0,0,0,744,745,5,2994, - 0,0,745,746,5,3018,0,0,746,178,1,0,0,0,747,748,5,2997,0,0,748,180, - 1,0,0,0,749,750,5,2997,0,0,750,751,5,3007,0,0,751,182,1,0,0,0,752, - 753,5,2997,0,0,753,754,5,3009,0,0,754,184,1,0,0,0,755,756,5,2997, - 0,0,756,757,5,3014,0,0,757,186,1,0,0,0,758,759,5,2997,0,0,759,760, - 5,3018,0,0,760,188,1,0,0,0,761,762,5,2996,0,0,762,190,1,0,0,0,763, - 764,5,2996,0,0,764,765,5,3007,0,0,765,192,1,0,0,0,766,767,5,2996, - 0,0,767,768,5,3009,0,0,768,194,1,0,0,0,769,770,5,2996,0,0,770,771, - 5,3014,0,0,771,196,1,0,0,0,772,773,5,2996,0,0,773,774,5,3018,0,0, - 774,198,1,0,0,0,775,776,5,2995,0,0,776,200,1,0,0,0,777,778,5,2995, - 0,0,778,779,5,3007,0,0,779,202,1,0,0,0,780,781,5,2995,0,0,781,782, - 5,3009,0,0,782,204,1,0,0,0,783,784,5,2995,0,0,784,785,5,3014,0,0, - 785,206,1,0,0,0,786,787,5,2995,0,0,787,788,5,3018,0,0,788,208,1, - 0,0,0,789,790,5,2993,0,0,790,210,1,0,0,0,791,792,5,2993,0,0,792, - 793,5,3007,0,0,793,212,1,0,0,0,794,795,5,2993,0,0,795,796,5,3009, - 0,0,796,214,1,0,0,0,797,798,5,2993,0,0,798,799,5,3014,0,0,799,216, - 1,0,0,0,800,801,5,2993,0,0,801,802,5,3018,0,0,802,218,1,0,0,0,803, - 804,5,2985,0,0,804,220,1,0,0,0,805,806,5,2985,0,0,806,807,5,3007, - 0,0,807,222,1,0,0,0,808,809,5,2985,0,0,809,810,5,3009,0,0,810,224, - 1,0,0,0,811,812,5,2985,0,0,812,813,5,3014,0,0,813,226,1,0,0,0,814, - 815,5,2985,0,0,815,816,5,3018,0,0,816,228,1,0,0,0,817,818,5,2950, - 0,0,818,230,1,0,0,0,819,820,5,2952,0,0,820,232,1,0,0,0,821,822,5, - 2954,0,0,822,234,1,0,0,0,823,824,5,2959,0,0,824,236,1,0,0,0,825, - 826,5,2960,0,0,826,238,1,0,0,0,827,828,5,2963,0,0,828,240,1,0,0, - 0,829,830,5,2962,0,0,830,831,5,2995,0,0,831,242,1,0,0,0,832,833, - 5,2965,0,0,833,834,5,3006,0,0,834,244,1,0,0,0,835,836,5,2965,0,0, - 836,837,5,3008,0,0,837,246,1,0,0,0,838,839,5,2965,0,0,839,840,5, - 3010,0,0,840,248,1,0,0,0,841,842,5,2965,0,0,842,843,5,3015,0,0,843, - 250,1,0,0,0,844,845,5,2965,0,0,845,846,5,3016,0,0,846,252,1,0,0, - 0,847,848,5,2965,0,0,848,849,5,3019,0,0,849,254,1,0,0,0,850,851, - 5,2965,0,0,851,852,5,3020,0,0,852,256,1,0,0,0,853,854,5,2969,0,0, - 854,855,5,3006,0,0,855,258,1,0,0,0,856,857,5,2969,0,0,857,858,5, - 3008,0,0,858,260,1,0,0,0,859,860,5,2969,0,0,860,861,5,3010,0,0,861, - 262,1,0,0,0,862,863,5,2969,0,0,863,864,5,3015,0,0,864,264,1,0,0, - 0,865,866,5,2969,0,0,866,867,5,3016,0,0,867,266,1,0,0,0,868,869, - 5,2969,0,0,869,870,5,3019,0,0,870,268,1,0,0,0,871,872,5,2969,0,0, - 872,873,5,3020,0,0,873,270,1,0,0,0,874,875,5,2970,0,0,875,876,5, - 3006,0,0,876,272,1,0,0,0,877,878,5,2970,0,0,878,879,5,3008,0,0,879, - 274,1,0,0,0,880,881,5,2970,0,0,881,882,5,3010,0,0,882,276,1,0,0, - 0,883,884,5,2970,0,0,884,885,5,3015,0,0,885,278,1,0,0,0,886,887, - 5,2970,0,0,887,888,5,3016,0,0,888,280,1,0,0,0,889,890,5,2970,0,0, - 890,891,5,3019,0,0,891,282,1,0,0,0,892,893,5,2970,0,0,893,894,5, - 3020,0,0,894,284,1,0,0,0,895,896,5,2974,0,0,896,897,5,3006,0,0,897, - 286,1,0,0,0,898,899,5,2974,0,0,899,900,5,3008,0,0,900,288,1,0,0, - 0,901,902,5,2974,0,0,902,903,5,3010,0,0,903,290,1,0,0,0,904,905, - 5,2974,0,0,905,906,5,3015,0,0,906,292,1,0,0,0,907,908,5,2974,0,0, - 908,909,5,3016,0,0,909,294,1,0,0,0,910,911,5,2974,0,0,911,912,5, - 3019,0,0,912,296,1,0,0,0,913,914,5,2974,0,0,914,915,5,3020,0,0,915, - 298,1,0,0,0,916,917,5,2975,0,0,917,918,5,3006,0,0,918,300,1,0,0, - 0,919,920,5,2975,0,0,920,921,5,3008,0,0,921,302,1,0,0,0,922,923, - 5,2975,0,0,923,924,5,3010,0,0,924,304,1,0,0,0,925,926,5,2975,0,0, - 926,927,5,3015,0,0,927,306,1,0,0,0,928,929,5,2975,0,0,929,930,5, - 3016,0,0,930,308,1,0,0,0,931,932,5,2975,0,0,932,933,5,3019,0,0,933, - 310,1,0,0,0,934,935,5,2975,0,0,935,936,5,3020,0,0,936,312,1,0,0, - 0,937,938,5,2979,0,0,938,939,5,3006,0,0,939,314,1,0,0,0,940,941, - 5,2979,0,0,941,942,5,3008,0,0,942,316,1,0,0,0,943,944,5,2979,0,0, - 944,945,5,3010,0,0,945,318,1,0,0,0,946,947,5,2979,0,0,947,948,5, - 3015,0,0,948,320,1,0,0,0,949,950,5,2979,0,0,950,951,5,3016,0,0,951, - 322,1,0,0,0,952,953,5,2979,0,0,953,954,5,3019,0,0,954,324,1,0,0, - 0,955,956,5,2979,0,0,956,957,5,3020,0,0,957,326,1,0,0,0,958,959, - 5,2980,0,0,959,960,5,3006,0,0,960,328,1,0,0,0,961,962,5,2980,0,0, - 962,963,5,3008,0,0,963,330,1,0,0,0,964,965,5,2980,0,0,965,966,5, - 3010,0,0,966,332,1,0,0,0,967,968,5,2980,0,0,968,969,5,3015,0,0,969, - 334,1,0,0,0,970,971,5,2980,0,0,971,972,5,3016,0,0,972,336,1,0,0, - 0,973,974,5,2980,0,0,974,975,5,3019,0,0,975,338,1,0,0,0,976,977, - 5,2980,0,0,977,978,5,3020,0,0,978,340,1,0,0,0,979,980,5,2984,0,0, - 980,981,5,3006,0,0,981,342,1,0,0,0,982,983,5,2984,0,0,983,984,5, - 3008,0,0,984,344,1,0,0,0,985,986,5,2984,0,0,986,987,5,3010,0,0,987, - 346,1,0,0,0,988,989,5,2984,0,0,989,990,5,3015,0,0,990,348,1,0,0, - 0,991,992,5,2984,0,0,992,993,5,3016,0,0,993,350,1,0,0,0,994,995, - 5,2984,0,0,995,996,5,3019,0,0,996,352,1,0,0,0,997,998,5,2984,0,0, - 998,999,5,3020,0,0,999,354,1,0,0,0,1000,1001,5,2986,0,0,1001,1002, - 5,3006,0,0,1002,356,1,0,0,0,1003,1004,5,2986,0,0,1004,1005,5,3008, - 0,0,1005,358,1,0,0,0,1006,1007,5,2986,0,0,1007,1008,5,3010,0,0,1008, - 360,1,0,0,0,1009,1010,5,2986,0,0,1010,1011,5,3015,0,0,1011,362,1, - 0,0,0,1012,1013,5,2986,0,0,1013,1014,5,3016,0,0,1014,364,1,0,0,0, - 1015,1016,5,2986,0,0,1016,1017,5,3019,0,0,1017,366,1,0,0,0,1018, - 1019,5,2986,0,0,1019,1020,5,3020,0,0,1020,368,1,0,0,0,1021,1022, - 5,2990,0,0,1022,1023,5,3006,0,0,1023,370,1,0,0,0,1024,1025,5,2990, - 0,0,1025,1026,5,3008,0,0,1026,372,1,0,0,0,1027,1028,5,2990,0,0,1028, - 1029,5,3010,0,0,1029,374,1,0,0,0,1030,1031,5,2990,0,0,1031,1032, - 5,3015,0,0,1032,376,1,0,0,0,1033,1034,5,2990,0,0,1034,1035,5,3016, - 0,0,1035,378,1,0,0,0,1036,1037,5,2990,0,0,1037,1038,5,3019,0,0,1038, - 380,1,0,0,0,1039,1040,5,2990,0,0,1040,1041,5,3020,0,0,1041,382,1, - 0,0,0,1042,1043,5,2991,0,0,1043,1044,5,3006,0,0,1044,384,1,0,0,0, - 1045,1046,5,2991,0,0,1046,1047,5,3008,0,0,1047,386,1,0,0,0,1048, - 1049,5,2991,0,0,1049,1050,5,3010,0,0,1050,388,1,0,0,0,1051,1052, - 5,2991,0,0,1052,1053,5,3015,0,0,1053,390,1,0,0,0,1054,1055,5,2991, - 0,0,1055,1056,5,3016,0,0,1056,392,1,0,0,0,1057,1058,5,2991,0,0,1058, - 1059,5,3019,0,0,1059,394,1,0,0,0,1060,1061,5,2991,0,0,1061,1062, - 5,3020,0,0,1062,396,1,0,0,0,1063,1064,5,2992,0,0,1064,1065,5,3006, - 0,0,1065,398,1,0,0,0,1066,1067,5,2992,0,0,1067,1068,5,3008,0,0,1068, - 400,1,0,0,0,1069,1070,5,2992,0,0,1070,1071,5,3010,0,0,1071,402,1, - 0,0,0,1072,1073,5,2992,0,0,1073,1074,5,3015,0,0,1074,404,1,0,0,0, - 1075,1076,5,2992,0,0,1076,1077,5,3016,0,0,1077,406,1,0,0,0,1078, - 1079,5,2992,0,0,1079,1080,5,3019,0,0,1080,408,1,0,0,0,1081,1082, - 5,2992,0,0,1082,1083,5,3020,0,0,1083,410,1,0,0,0,1084,1085,5,2994, - 0,0,1085,1086,5,3006,0,0,1086,412,1,0,0,0,1087,1088,5,2994,0,0,1088, - 1089,5,3008,0,0,1089,414,1,0,0,0,1090,1091,5,2994,0,0,1091,1092, - 5,3010,0,0,1092,416,1,0,0,0,1093,1094,5,2994,0,0,1094,1095,5,3015, - 0,0,1095,418,1,0,0,0,1096,1097,5,2994,0,0,1097,1098,5,3016,0,0,1098, - 420,1,0,0,0,1099,1100,5,2994,0,0,1100,1101,5,3019,0,0,1101,422,1, - 0,0,0,1102,1103,5,2994,0,0,1103,1104,5,3020,0,0,1104,424,1,0,0,0, - 1105,1106,5,2997,0,0,1106,1107,5,3006,0,0,1107,426,1,0,0,0,1108, - 1109,5,2997,0,0,1109,1110,5,3008,0,0,1110,428,1,0,0,0,1111,1112, - 5,2997,0,0,1112,1113,5,3010,0,0,1113,430,1,0,0,0,1114,1115,5,2997, - 0,0,1115,1116,5,3015,0,0,1116,432,1,0,0,0,1117,1118,5,2997,0,0,1118, - 1119,5,3016,0,0,1119,434,1,0,0,0,1120,1121,5,2997,0,0,1121,1122, - 5,3019,0,0,1122,436,1,0,0,0,1123,1124,5,2997,0,0,1124,1125,5,3020, - 0,0,1125,438,1,0,0,0,1126,1127,5,2996,0,0,1127,1128,5,3006,0,0,1128, - 440,1,0,0,0,1129,1130,5,2996,0,0,1130,1131,5,3008,0,0,1131,442,1, - 0,0,0,1132,1133,5,2996,0,0,1133,1134,5,3010,0,0,1134,444,1,0,0,0, - 1135,1136,5,2996,0,0,1136,1137,5,3015,0,0,1137,446,1,0,0,0,1138, - 1139,5,2996,0,0,1139,1140,5,3016,0,0,1140,448,1,0,0,0,1141,1142, - 5,2996,0,0,1142,1143,5,3019,0,0,1143,450,1,0,0,0,1144,1145,5,2996, - 0,0,1145,1146,5,3020,0,0,1146,452,1,0,0,0,1147,1148,5,2995,0,0,1148, - 1149,5,3006,0,0,1149,454,1,0,0,0,1150,1151,5,2995,0,0,1151,1152, - 5,3008,0,0,1152,456,1,0,0,0,1153,1154,5,2995,0,0,1154,1155,5,3010, - 0,0,1155,458,1,0,0,0,1156,1157,5,2995,0,0,1157,1158,5,3015,0,0,1158, - 460,1,0,0,0,1159,1160,5,2995,0,0,1160,1161,5,3016,0,0,1161,462,1, - 0,0,0,1162,1163,5,2995,0,0,1163,1164,5,3019,0,0,1164,464,1,0,0,0, - 1165,1166,5,2995,0,0,1166,1167,5,3020,0,0,1167,466,1,0,0,0,1168, - 1169,5,2993,0,0,1169,1170,5,3006,0,0,1170,468,1,0,0,0,1171,1172, - 5,2993,0,0,1172,1173,5,3008,0,0,1173,470,1,0,0,0,1174,1175,5,2993, - 0,0,1175,1176,5,3010,0,0,1176,472,1,0,0,0,1177,1178,5,2993,0,0,1178, - 1179,5,3015,0,0,1179,474,1,0,0,0,1180,1181,5,2993,0,0,1181,1182, - 5,3016,0,0,1182,476,1,0,0,0,1183,1184,5,2993,0,0,1184,1185,5,3019, - 0,0,1185,478,1,0,0,0,1186,1187,5,2993,0,0,1187,1188,5,3020,0,0,1188, - 480,1,0,0,0,1189,1190,5,2985,0,0,1190,1191,5,3006,0,0,1191,482,1, - 0,0,0,1192,1193,5,2985,0,0,1193,1194,5,3008,0,0,1194,484,1,0,0,0, - 1195,1196,5,2985,0,0,1196,1197,5,3010,0,0,1197,486,1,0,0,0,1198, - 1199,5,2985,0,0,1199,1200,5,3015,0,0,1200,488,1,0,0,0,1201,1202, - 5,2985,0,0,1202,1203,5,3016,0,0,1203,490,1,0,0,0,1204,1205,5,2985, - 0,0,1205,1206,5,3019,0,0,1206,492,1,0,0,0,1207,1208,5,2985,0,0,1208, - 1209,5,3020,0,0,1209,494,1,0,0,0,1210,1211,5,2947,0,0,1211,496,1, - 0,0,0,1212,1213,5,32,0,0,1213,498,1,0,0,0,1,0,0 + 7,246,2,247,7,247,2,248,7,248,1,0,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1, + 2,1,3,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,7,1, + 8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1, + 12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1, + 17,1,17,1,17,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,20,1,21,1,21,1, + 21,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1, + 26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,28,1,29,1,29,1,29,1,30,1, + 30,1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,33,1,33,1,33,1,34,1,34,1, + 34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1, + 40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,45,1, + 45,1,45,1,46,1,46,1,46,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,49,1, + 50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,53,1,53,1,53,1,54,1,54,1, + 54,1,55,1,55,1,55,1,56,1,56,1,56,1,57,1,57,1,58,1,58,1,58,1,59,1, + 59,1,59,1,60,1,60,1,60,1,61,1,61,1,61,1,62,1,62,1,63,1,63,1,63,1, + 64,1,64,1,64,1,65,1,65,1,65,1,66,1,66,1,66,1,67,1,67,1,68,1,68,1, + 68,1,69,1,69,1,69,1,70,1,70,1,70,1,71,1,71,1,71,1,72,1,72,1,73,1, + 73,1,73,1,74,1,74,1,74,1,75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1, + 78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,81,1,81,1,81,1,82,1, + 82,1,83,1,83,1,83,1,84,1,84,1,84,1,85,1,85,1,85,1,86,1,86,1,86,1, + 87,1,87,1,88,1,88,1,88,1,89,1,89,1,89,1,90,1,90,1,90,1,91,1,91,1, + 91,1,92,1,92,1,93,1,93,1,93,1,94,1,94,1,94,1,95,1,95,1,95,1,96,1, + 96,1,96,1,97,1,97,1,98,1,98,1,98,1,99,1,99,1,99,1,100,1,100,1,100, + 1,101,1,101,1,101,1,102,1,102,1,103,1,103,1,103,1,104,1,104,1,104, + 1,105,1,105,1,105,1,106,1,106,1,106,1,107,1,107,1,108,1,108,1,108, + 1,109,1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,112,1,112, + 1,113,1,113,1,113,1,114,1,114,1,114,1,115,1,115,1,115,1,116,1,116, + 1,116,1,117,1,117,1,118,1,118,1,118,1,119,1,119,1,119,1,120,1,120, + 1,120,1,121,1,121,1,121,1,122,1,122,1,123,1,123,1,123,1,124,1,124, + 1,124,1,125,1,125,1,125,1,126,1,126,1,126,1,127,1,127,1,128,1,128, + 1,128,1,129,1,129,1,129,1,130,1,130,1,130,1,131,1,131,1,131,1,132, + 1,132,1,133,1,133,1,134,1,134,1,135,1,135,1,136,1,136,1,137,1,137, + 1,138,1,138,1,139,1,139,1,139,1,140,1,140,1,140,1,141,1,141,1,141, + 1,142,1,142,1,142,1,143,1,143,1,143,1,144,1,144,1,144,1,145,1,145, + 1,145,1,146,1,146,1,146,1,147,1,147,1,147,1,148,1,148,1,148,1,149, + 1,149,1,149,1,150,1,150,1,150,1,151,1,151,1,151,1,152,1,152,1,152, + 1,153,1,153,1,153,1,154,1,154,1,154,1,155,1,155,1,155,1,156,1,156, + 1,156,1,157,1,157,1,157,1,158,1,158,1,158,1,159,1,159,1,159,1,160, + 1,160,1,160,1,161,1,161,1,161,1,162,1,162,1,162,1,163,1,163,1,163, + 1,164,1,164,1,164,1,165,1,165,1,165,1,166,1,166,1,166,1,167,1,167, + 1,167,1,168,1,168,1,168,1,169,1,169,1,169,1,170,1,170,1,170,1,171, + 1,171,1,171,1,172,1,172,1,172,1,173,1,173,1,173,1,174,1,174,1,174, + 1,175,1,175,1,175,1,176,1,176,1,176,1,177,1,177,1,177,1,178,1,178, + 1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,181,1,181,1,181,1,182, + 1,182,1,182,1,183,1,183,1,183,1,184,1,184,1,184,1,185,1,185,1,185, + 1,186,1,186,1,186,1,187,1,187,1,187,1,188,1,188,1,188,1,189,1,189, + 1,189,1,190,1,190,1,190,1,191,1,191,1,191,1,192,1,192,1,192,1,193, + 1,193,1,193,1,194,1,194,1,194,1,195,1,195,1,195,1,196,1,196,1,196, + 1,197,1,197,1,197,1,198,1,198,1,198,1,199,1,199,1,199,1,200,1,200, + 1,200,1,201,1,201,1,201,1,202,1,202,1,202,1,203,1,203,1,203,1,204, + 1,204,1,204,1,205,1,205,1,205,1,206,1,206,1,206,1,207,1,207,1,207, + 1,208,1,208,1,208,1,209,1,209,1,209,1,210,1,210,1,210,1,211,1,211, + 1,211,1,212,1,212,1,212,1,213,1,213,1,213,1,214,1,214,1,214,1,215, + 1,215,1,215,1,216,1,216,1,216,1,217,1,217,1,217,1,218,1,218,1,218, + 1,219,1,219,1,219,1,220,1,220,1,220,1,221,1,221,1,221,1,222,1,222, + 1,222,1,223,1,223,1,223,1,224,1,224,1,224,1,225,1,225,1,225,1,226, + 1,226,1,226,1,227,1,227,1,227,1,228,1,228,1,228,1,229,1,229,1,229, + 1,230,1,230,1,230,1,231,1,231,1,231,1,232,1,232,1,232,1,233,1,233, + 1,233,1,234,1,234,1,234,1,235,1,235,1,235,1,236,1,236,1,236,1,237, + 1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,239,1,240,1,240,1,240, + 1,241,1,241,1,241,1,242,1,242,1,242,1,243,1,243,1,243,1,244,1,244, + 1,244,1,245,1,245,1,245,1,246,1,246,1,246,1,247,4,247,1211,8,247, + 11,247,12,247,1212,1,248,3,248,1216,8,248,1,248,1,248,0,0,249,1, + 1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27, + 14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49, + 25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71, + 36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93, + 47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113, + 57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66, + 133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151, + 76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85, + 171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189, + 95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207, + 104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223, + 112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239, + 120,241,121,243,122,245,123,247,124,249,125,251,126,253,127,255, + 128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271, + 136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287, + 144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303, + 152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319, + 160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335, + 168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351, + 176,353,177,355,178,357,179,359,180,361,181,363,182,365,183,367, + 184,369,185,371,186,373,187,375,188,377,189,379,190,381,191,383, + 192,385,193,387,194,389,195,391,196,393,197,395,198,397,199,399, + 200,401,201,403,202,405,203,407,204,409,205,411,206,413,207,415, + 208,417,209,419,210,421,211,423,212,425,213,427,214,429,215,431, + 216,433,217,435,218,437,219,439,220,441,221,443,222,445,223,447, + 224,449,225,451,226,453,227,455,228,457,229,459,230,461,231,463, + 232,465,233,467,234,469,235,471,236,473,237,475,238,477,239,479, + 240,481,241,483,242,485,243,487,244,489,245,491,246,493,247,495, + 248,497,249,1,0,1,2,0,9,9,32,32,1220,0,1,1,0,0,0,0,3,1,0,0,0,0,5, + 1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1, + 0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1, + 0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1, + 0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1, + 0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1, + 0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1, + 0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1, + 0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1, + 0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1, + 0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105, + 1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0, + 0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1, + 0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0, + 133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0, + 0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151, + 1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0, + 0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1, + 0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0, + 179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0, + 0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197, + 1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0, + 0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1, + 0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0, + 225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0, + 0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243, + 1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0, + 0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1, + 0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0, + 271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0, + 0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289, + 1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0, + 0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1, + 0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0, + 317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0, + 0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335, + 1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0, + 0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1, + 0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0, + 363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0, + 0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381, + 1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0, + 0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1, + 0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0, + 409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0, + 0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427, + 1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0, + 0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1, + 0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0, + 455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0, + 0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473, + 1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0, + 0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1, + 0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,1,499,1,0,0,0,3, + 502,1,0,0,0,5,505,1,0,0,0,7,508,1,0,0,0,9,511,1,0,0,0,11,514,1,0, + 0,0,13,517,1,0,0,0,15,520,1,0,0,0,17,523,1,0,0,0,19,526,1,0,0,0, + 21,529,1,0,0,0,23,532,1,0,0,0,25,535,1,0,0,0,27,538,1,0,0,0,29,541, + 1,0,0,0,31,544,1,0,0,0,33,547,1,0,0,0,35,550,1,0,0,0,37,553,1,0, + 0,0,39,555,1,0,0,0,41,558,1,0,0,0,43,561,1,0,0,0,45,564,1,0,0,0, + 47,567,1,0,0,0,49,570,1,0,0,0,51,573,1,0,0,0,53,576,1,0,0,0,55,579, + 1,0,0,0,57,582,1,0,0,0,59,585,1,0,0,0,61,588,1,0,0,0,63,591,1,0, + 0,0,65,594,1,0,0,0,67,597,1,0,0,0,69,600,1,0,0,0,71,603,1,0,0,0, + 73,606,1,0,0,0,75,609,1,0,0,0,77,611,1,0,0,0,79,613,1,0,0,0,81,615, + 1,0,0,0,83,617,1,0,0,0,85,619,1,0,0,0,87,621,1,0,0,0,89,624,1,0, + 0,0,91,627,1,0,0,0,93,630,1,0,0,0,95,633,1,0,0,0,97,635,1,0,0,0, + 99,638,1,0,0,0,101,641,1,0,0,0,103,644,1,0,0,0,105,647,1,0,0,0,107, + 649,1,0,0,0,109,652,1,0,0,0,111,655,1,0,0,0,113,658,1,0,0,0,115, + 661,1,0,0,0,117,663,1,0,0,0,119,666,1,0,0,0,121,669,1,0,0,0,123, + 672,1,0,0,0,125,675,1,0,0,0,127,677,1,0,0,0,129,680,1,0,0,0,131, + 683,1,0,0,0,133,686,1,0,0,0,135,689,1,0,0,0,137,691,1,0,0,0,139, + 694,1,0,0,0,141,697,1,0,0,0,143,700,1,0,0,0,145,703,1,0,0,0,147, + 705,1,0,0,0,149,708,1,0,0,0,151,711,1,0,0,0,153,714,1,0,0,0,155, + 717,1,0,0,0,157,719,1,0,0,0,159,722,1,0,0,0,161,725,1,0,0,0,163, + 728,1,0,0,0,165,731,1,0,0,0,167,733,1,0,0,0,169,736,1,0,0,0,171, + 739,1,0,0,0,173,742,1,0,0,0,175,745,1,0,0,0,177,747,1,0,0,0,179, + 750,1,0,0,0,181,753,1,0,0,0,183,756,1,0,0,0,185,759,1,0,0,0,187, + 761,1,0,0,0,189,764,1,0,0,0,191,767,1,0,0,0,193,770,1,0,0,0,195, + 773,1,0,0,0,197,775,1,0,0,0,199,778,1,0,0,0,201,781,1,0,0,0,203, + 784,1,0,0,0,205,787,1,0,0,0,207,789,1,0,0,0,209,792,1,0,0,0,211, + 795,1,0,0,0,213,798,1,0,0,0,215,801,1,0,0,0,217,803,1,0,0,0,219, + 806,1,0,0,0,221,809,1,0,0,0,223,812,1,0,0,0,225,815,1,0,0,0,227, + 817,1,0,0,0,229,820,1,0,0,0,231,823,1,0,0,0,233,826,1,0,0,0,235, + 829,1,0,0,0,237,831,1,0,0,0,239,834,1,0,0,0,241,837,1,0,0,0,243, + 840,1,0,0,0,245,843,1,0,0,0,247,845,1,0,0,0,249,848,1,0,0,0,251, + 851,1,0,0,0,253,854,1,0,0,0,255,857,1,0,0,0,257,859,1,0,0,0,259, + 862,1,0,0,0,261,865,1,0,0,0,263,868,1,0,0,0,265,871,1,0,0,0,267, + 873,1,0,0,0,269,875,1,0,0,0,271,877,1,0,0,0,273,879,1,0,0,0,275, + 881,1,0,0,0,277,883,1,0,0,0,279,885,1,0,0,0,281,888,1,0,0,0,283, + 891,1,0,0,0,285,894,1,0,0,0,287,897,1,0,0,0,289,900,1,0,0,0,291, + 903,1,0,0,0,293,906,1,0,0,0,295,909,1,0,0,0,297,912,1,0,0,0,299, + 915,1,0,0,0,301,918,1,0,0,0,303,921,1,0,0,0,305,924,1,0,0,0,307, + 927,1,0,0,0,309,930,1,0,0,0,311,933,1,0,0,0,313,936,1,0,0,0,315, + 939,1,0,0,0,317,942,1,0,0,0,319,945,1,0,0,0,321,948,1,0,0,0,323, + 951,1,0,0,0,325,954,1,0,0,0,327,957,1,0,0,0,329,960,1,0,0,0,331, + 963,1,0,0,0,333,966,1,0,0,0,335,969,1,0,0,0,337,972,1,0,0,0,339, + 975,1,0,0,0,341,978,1,0,0,0,343,981,1,0,0,0,345,984,1,0,0,0,347, + 987,1,0,0,0,349,990,1,0,0,0,351,993,1,0,0,0,353,996,1,0,0,0,355, + 999,1,0,0,0,357,1002,1,0,0,0,359,1005,1,0,0,0,361,1008,1,0,0,0,363, + 1011,1,0,0,0,365,1014,1,0,0,0,367,1017,1,0,0,0,369,1020,1,0,0,0, + 371,1023,1,0,0,0,373,1026,1,0,0,0,375,1029,1,0,0,0,377,1032,1,0, + 0,0,379,1035,1,0,0,0,381,1038,1,0,0,0,383,1041,1,0,0,0,385,1044, + 1,0,0,0,387,1047,1,0,0,0,389,1050,1,0,0,0,391,1053,1,0,0,0,393,1056, + 1,0,0,0,395,1059,1,0,0,0,397,1062,1,0,0,0,399,1065,1,0,0,0,401,1068, + 1,0,0,0,403,1071,1,0,0,0,405,1074,1,0,0,0,407,1077,1,0,0,0,409,1080, + 1,0,0,0,411,1083,1,0,0,0,413,1086,1,0,0,0,415,1089,1,0,0,0,417,1092, + 1,0,0,0,419,1095,1,0,0,0,421,1098,1,0,0,0,423,1101,1,0,0,0,425,1104, + 1,0,0,0,427,1107,1,0,0,0,429,1110,1,0,0,0,431,1113,1,0,0,0,433,1116, + 1,0,0,0,435,1119,1,0,0,0,437,1122,1,0,0,0,439,1125,1,0,0,0,441,1128, + 1,0,0,0,443,1131,1,0,0,0,445,1134,1,0,0,0,447,1137,1,0,0,0,449,1140, + 1,0,0,0,451,1143,1,0,0,0,453,1146,1,0,0,0,455,1149,1,0,0,0,457,1152, + 1,0,0,0,459,1155,1,0,0,0,461,1158,1,0,0,0,463,1161,1,0,0,0,465,1164, + 1,0,0,0,467,1167,1,0,0,0,469,1170,1,0,0,0,471,1173,1,0,0,0,473,1176, + 1,0,0,0,475,1179,1,0,0,0,477,1182,1,0,0,0,479,1185,1,0,0,0,481,1188, + 1,0,0,0,483,1191,1,0,0,0,485,1194,1,0,0,0,487,1197,1,0,0,0,489,1200, + 1,0,0,0,491,1203,1,0,0,0,493,1206,1,0,0,0,495,1210,1,0,0,0,497,1215, + 1,0,0,0,499,500,5,2965,0,0,500,501,5,3021,0,0,501,2,1,0,0,0,502, + 503,5,2970,0,0,503,504,5,3021,0,0,504,4,1,0,0,0,505,506,5,2975,0, + 0,506,507,5,3021,0,0,507,6,1,0,0,0,508,509,5,2980,0,0,509,510,5, + 3021,0,0,510,8,1,0,0,0,511,512,5,2986,0,0,512,513,5,3021,0,0,513, + 10,1,0,0,0,514,515,5,2993,0,0,515,516,5,3021,0,0,516,12,1,0,0,0, + 517,518,5,2974,0,0,518,519,5,3021,0,0,519,14,1,0,0,0,520,521,5,2969, + 0,0,521,522,5,3021,0,0,522,16,1,0,0,0,523,524,5,2979,0,0,524,525, + 5,3021,0,0,525,18,1,0,0,0,526,527,5,2984,0,0,527,528,5,3021,0,0, + 528,20,1,0,0,0,529,530,5,2990,0,0,530,531,5,3021,0,0,531,22,1,0, + 0,0,532,533,5,2985,0,0,533,534,5,3021,0,0,534,24,1,0,0,0,535,536, + 5,2991,0,0,536,537,5,3021,0,0,537,26,1,0,0,0,538,539,5,2992,0,0, + 539,540,5,3021,0,0,540,28,1,0,0,0,541,542,5,2994,0,0,542,543,5,3021, + 0,0,543,30,1,0,0,0,544,545,5,2997,0,0,545,546,5,3021,0,0,546,32, + 1,0,0,0,547,548,5,2996,0,0,548,549,5,3021,0,0,549,34,1,0,0,0,550, + 551,5,2995,0,0,551,552,5,3021,0,0,552,36,1,0,0,0,553,554,5,2947, + 0,0,554,38,1,0,0,0,555,556,5,2965,0,0,556,557,5,3016,0,0,557,40, + 1,0,0,0,558,559,5,2969,0,0,559,560,5,3016,0,0,560,42,1,0,0,0,561, + 562,5,2970,0,0,562,563,5,3016,0,0,563,44,1,0,0,0,564,565,5,2974, + 0,0,565,566,5,3016,0,0,566,46,1,0,0,0,567,568,5,2975,0,0,568,569, + 5,3016,0,0,569,48,1,0,0,0,570,571,5,2979,0,0,571,572,5,3016,0,0, + 572,50,1,0,0,0,573,574,5,2980,0,0,574,575,5,3016,0,0,575,52,1,0, + 0,0,576,577,5,2984,0,0,577,578,5,3016,0,0,578,54,1,0,0,0,579,580, + 5,2986,0,0,580,581,5,3016,0,0,581,56,1,0,0,0,582,583,5,2990,0,0, + 583,584,5,3016,0,0,584,58,1,0,0,0,585,586,5,2991,0,0,586,587,5,3016, + 0,0,587,60,1,0,0,0,588,589,5,2992,0,0,589,590,5,3016,0,0,590,62, + 1,0,0,0,591,592,5,2994,0,0,592,593,5,3016,0,0,593,64,1,0,0,0,594, + 595,5,2997,0,0,595,596,5,3016,0,0,596,66,1,0,0,0,597,598,5,2996, + 0,0,598,599,5,3016,0,0,599,68,1,0,0,0,600,601,5,2995,0,0,601,602, + 5,3016,0,0,602,70,1,0,0,0,603,604,5,2993,0,0,604,605,5,3016,0,0, + 605,72,1,0,0,0,606,607,5,2985,0,0,607,608,5,3016,0,0,608,74,1,0, + 0,0,609,610,5,2949,0,0,610,76,1,0,0,0,611,612,5,2951,0,0,612,78, + 1,0,0,0,613,614,5,2953,0,0,614,80,1,0,0,0,615,616,5,2958,0,0,616, + 82,1,0,0,0,617,618,5,2962,0,0,618,84,1,0,0,0,619,620,5,2965,0,0, + 620,86,1,0,0,0,621,622,5,2965,0,0,622,623,5,3007,0,0,623,88,1,0, + 0,0,624,625,5,2965,0,0,625,626,5,3009,0,0,626,90,1,0,0,0,627,628, + 5,2965,0,0,628,629,5,3014,0,0,629,92,1,0,0,0,630,631,5,2965,0,0, + 631,632,5,3018,0,0,632,94,1,0,0,0,633,634,5,2969,0,0,634,96,1,0, + 0,0,635,636,5,2969,0,0,636,637,5,3007,0,0,637,98,1,0,0,0,638,639, + 5,2969,0,0,639,640,5,3009,0,0,640,100,1,0,0,0,641,642,5,2969,0,0, + 642,643,5,3014,0,0,643,102,1,0,0,0,644,645,5,2969,0,0,645,646,5, + 3018,0,0,646,104,1,0,0,0,647,648,5,2970,0,0,648,106,1,0,0,0,649, + 650,5,2970,0,0,650,651,5,3007,0,0,651,108,1,0,0,0,652,653,5,2970, + 0,0,653,654,5,3009,0,0,654,110,1,0,0,0,655,656,5,2970,0,0,656,657, + 5,3014,0,0,657,112,1,0,0,0,658,659,5,2970,0,0,659,660,5,3018,0,0, + 660,114,1,0,0,0,661,662,5,2974,0,0,662,116,1,0,0,0,663,664,5,2974, + 0,0,664,665,5,3007,0,0,665,118,1,0,0,0,666,667,5,2974,0,0,667,668, + 5,3009,0,0,668,120,1,0,0,0,669,670,5,2974,0,0,670,671,5,3014,0,0, + 671,122,1,0,0,0,672,673,5,2974,0,0,673,674,5,3018,0,0,674,124,1, + 0,0,0,675,676,5,2975,0,0,676,126,1,0,0,0,677,678,5,2975,0,0,678, + 679,5,3007,0,0,679,128,1,0,0,0,680,681,5,2975,0,0,681,682,5,3009, + 0,0,682,130,1,0,0,0,683,684,5,2975,0,0,684,685,5,3014,0,0,685,132, + 1,0,0,0,686,687,5,2975,0,0,687,688,5,3018,0,0,688,134,1,0,0,0,689, + 690,5,2979,0,0,690,136,1,0,0,0,691,692,5,2979,0,0,692,693,5,3007, + 0,0,693,138,1,0,0,0,694,695,5,2979,0,0,695,696,5,3009,0,0,696,140, + 1,0,0,0,697,698,5,2979,0,0,698,699,5,3014,0,0,699,142,1,0,0,0,700, + 701,5,2979,0,0,701,702,5,3018,0,0,702,144,1,0,0,0,703,704,5,2980, + 0,0,704,146,1,0,0,0,705,706,5,2980,0,0,706,707,5,3007,0,0,707,148, + 1,0,0,0,708,709,5,2980,0,0,709,710,5,3009,0,0,710,150,1,0,0,0,711, + 712,5,2980,0,0,712,713,5,3014,0,0,713,152,1,0,0,0,714,715,5,2980, + 0,0,715,716,5,3018,0,0,716,154,1,0,0,0,717,718,5,2984,0,0,718,156, + 1,0,0,0,719,720,5,2984,0,0,720,721,5,3007,0,0,721,158,1,0,0,0,722, + 723,5,2984,0,0,723,724,5,3009,0,0,724,160,1,0,0,0,725,726,5,2984, + 0,0,726,727,5,3014,0,0,727,162,1,0,0,0,728,729,5,2984,0,0,729,730, + 5,3018,0,0,730,164,1,0,0,0,731,732,5,2986,0,0,732,166,1,0,0,0,733, + 734,5,2986,0,0,734,735,5,3007,0,0,735,168,1,0,0,0,736,737,5,2986, + 0,0,737,738,5,3009,0,0,738,170,1,0,0,0,739,740,5,2986,0,0,740,741, + 5,3014,0,0,741,172,1,0,0,0,742,743,5,2986,0,0,743,744,5,3018,0,0, + 744,174,1,0,0,0,745,746,5,2990,0,0,746,176,1,0,0,0,747,748,5,2990, + 0,0,748,749,5,3007,0,0,749,178,1,0,0,0,750,751,5,2990,0,0,751,752, + 5,3009,0,0,752,180,1,0,0,0,753,754,5,2990,0,0,754,755,5,3014,0,0, + 755,182,1,0,0,0,756,757,5,2990,0,0,757,758,5,3018,0,0,758,184,1, + 0,0,0,759,760,5,2991,0,0,760,186,1,0,0,0,761,762,5,2991,0,0,762, + 763,5,3007,0,0,763,188,1,0,0,0,764,765,5,2991,0,0,765,766,5,3009, + 0,0,766,190,1,0,0,0,767,768,5,2991,0,0,768,769,5,3014,0,0,769,192, + 1,0,0,0,770,771,5,2991,0,0,771,772,5,3018,0,0,772,194,1,0,0,0,773, + 774,5,2992,0,0,774,196,1,0,0,0,775,776,5,2992,0,0,776,777,5,3007, + 0,0,777,198,1,0,0,0,778,779,5,2992,0,0,779,780,5,3009,0,0,780,200, + 1,0,0,0,781,782,5,2992,0,0,782,783,5,3014,0,0,783,202,1,0,0,0,784, + 785,5,2992,0,0,785,786,5,3018,0,0,786,204,1,0,0,0,787,788,5,2994, + 0,0,788,206,1,0,0,0,789,790,5,2994,0,0,790,791,5,3007,0,0,791,208, + 1,0,0,0,792,793,5,2994,0,0,793,794,5,3009,0,0,794,210,1,0,0,0,795, + 796,5,2994,0,0,796,797,5,3014,0,0,797,212,1,0,0,0,798,799,5,2994, + 0,0,799,800,5,3018,0,0,800,214,1,0,0,0,801,802,5,2997,0,0,802,216, + 1,0,0,0,803,804,5,2997,0,0,804,805,5,3007,0,0,805,218,1,0,0,0,806, + 807,5,2997,0,0,807,808,5,3009,0,0,808,220,1,0,0,0,809,810,5,2997, + 0,0,810,811,5,3014,0,0,811,222,1,0,0,0,812,813,5,2997,0,0,813,814, + 5,3018,0,0,814,224,1,0,0,0,815,816,5,2996,0,0,816,226,1,0,0,0,817, + 818,5,2996,0,0,818,819,5,3007,0,0,819,228,1,0,0,0,820,821,5,2996, + 0,0,821,822,5,3009,0,0,822,230,1,0,0,0,823,824,5,2996,0,0,824,825, + 5,3014,0,0,825,232,1,0,0,0,826,827,5,2996,0,0,827,828,5,3018,0,0, + 828,234,1,0,0,0,829,830,5,2995,0,0,830,236,1,0,0,0,831,832,5,2995, + 0,0,832,833,5,3007,0,0,833,238,1,0,0,0,834,835,5,2995,0,0,835,836, + 5,3009,0,0,836,240,1,0,0,0,837,838,5,2995,0,0,838,839,5,3014,0,0, + 839,242,1,0,0,0,840,841,5,2995,0,0,841,842,5,3018,0,0,842,244,1, + 0,0,0,843,844,5,2993,0,0,844,246,1,0,0,0,845,846,5,2993,0,0,846, + 847,5,3007,0,0,847,248,1,0,0,0,848,849,5,2993,0,0,849,850,5,3009, + 0,0,850,250,1,0,0,0,851,852,5,2993,0,0,852,853,5,3014,0,0,853,252, + 1,0,0,0,854,855,5,2993,0,0,855,856,5,3018,0,0,856,254,1,0,0,0,857, + 858,5,2985,0,0,858,256,1,0,0,0,859,860,5,2985,0,0,860,861,5,3007, + 0,0,861,258,1,0,0,0,862,863,5,2985,0,0,863,864,5,3009,0,0,864,260, + 1,0,0,0,865,866,5,2985,0,0,866,867,5,3014,0,0,867,262,1,0,0,0,868, + 869,5,2985,0,0,869,870,5,3018,0,0,870,264,1,0,0,0,871,872,5,2950, + 0,0,872,266,1,0,0,0,873,874,5,2952,0,0,874,268,1,0,0,0,875,876,5, + 2954,0,0,876,270,1,0,0,0,877,878,5,2959,0,0,878,272,1,0,0,0,879, + 880,5,2960,0,0,880,274,1,0,0,0,881,882,5,2963,0,0,882,276,1,0,0, + 0,883,884,5,2964,0,0,884,278,1,0,0,0,885,886,5,2965,0,0,886,887, + 5,3006,0,0,887,280,1,0,0,0,888,889,5,2965,0,0,889,890,5,3008,0,0, + 890,282,1,0,0,0,891,892,5,2965,0,0,892,893,5,3010,0,0,893,284,1, + 0,0,0,894,895,5,2965,0,0,895,896,5,3015,0,0,896,286,1,0,0,0,897, + 898,5,2965,0,0,898,899,5,3019,0,0,899,288,1,0,0,0,900,901,5,2965, + 0,0,901,902,5,3020,0,0,902,290,1,0,0,0,903,904,5,2969,0,0,904,905, + 5,3006,0,0,905,292,1,0,0,0,906,907,5,2969,0,0,907,908,5,3008,0,0, + 908,294,1,0,0,0,909,910,5,2969,0,0,910,911,5,3010,0,0,911,296,1, + 0,0,0,912,913,5,2969,0,0,913,914,5,3015,0,0,914,298,1,0,0,0,915, + 916,5,2969,0,0,916,917,5,3019,0,0,917,300,1,0,0,0,918,919,5,2969, + 0,0,919,920,5,3020,0,0,920,302,1,0,0,0,921,922,5,2970,0,0,922,923, + 5,3006,0,0,923,304,1,0,0,0,924,925,5,2970,0,0,925,926,5,3008,0,0, + 926,306,1,0,0,0,927,928,5,2970,0,0,928,929,5,3010,0,0,929,308,1, + 0,0,0,930,931,5,2970,0,0,931,932,5,3015,0,0,932,310,1,0,0,0,933, + 934,5,2970,0,0,934,935,5,3019,0,0,935,312,1,0,0,0,936,937,5,2970, + 0,0,937,938,5,3020,0,0,938,314,1,0,0,0,939,940,5,2974,0,0,940,941, + 5,3006,0,0,941,316,1,0,0,0,942,943,5,2974,0,0,943,944,5,3008,0,0, + 944,318,1,0,0,0,945,946,5,2974,0,0,946,947,5,3010,0,0,947,320,1, + 0,0,0,948,949,5,2974,0,0,949,950,5,3015,0,0,950,322,1,0,0,0,951, + 952,5,2974,0,0,952,953,5,3019,0,0,953,324,1,0,0,0,954,955,5,2974, + 0,0,955,956,5,3020,0,0,956,326,1,0,0,0,957,958,5,2975,0,0,958,959, + 5,3006,0,0,959,328,1,0,0,0,960,961,5,2975,0,0,961,962,5,3008,0,0, + 962,330,1,0,0,0,963,964,5,2975,0,0,964,965,5,3010,0,0,965,332,1, + 0,0,0,966,967,5,2975,0,0,967,968,5,3015,0,0,968,334,1,0,0,0,969, + 970,5,2975,0,0,970,971,5,3019,0,0,971,336,1,0,0,0,972,973,5,2975, + 0,0,973,974,5,3020,0,0,974,338,1,0,0,0,975,976,5,2979,0,0,976,977, + 5,3006,0,0,977,340,1,0,0,0,978,979,5,2979,0,0,979,980,5,3008,0,0, + 980,342,1,0,0,0,981,982,5,2979,0,0,982,983,5,3010,0,0,983,344,1, + 0,0,0,984,985,5,2979,0,0,985,986,5,3015,0,0,986,346,1,0,0,0,987, + 988,5,2979,0,0,988,989,5,3019,0,0,989,348,1,0,0,0,990,991,5,2979, + 0,0,991,992,5,3020,0,0,992,350,1,0,0,0,993,994,5,2980,0,0,994,995, + 5,3006,0,0,995,352,1,0,0,0,996,997,5,2980,0,0,997,998,5,3008,0,0, + 998,354,1,0,0,0,999,1000,5,2980,0,0,1000,1001,5,3010,0,0,1001,356, + 1,0,0,0,1002,1003,5,2980,0,0,1003,1004,5,3015,0,0,1004,358,1,0,0, + 0,1005,1006,5,2980,0,0,1006,1007,5,3019,0,0,1007,360,1,0,0,0,1008, + 1009,5,2980,0,0,1009,1010,5,3020,0,0,1010,362,1,0,0,0,1011,1012, + 5,2984,0,0,1012,1013,5,3006,0,0,1013,364,1,0,0,0,1014,1015,5,2984, + 0,0,1015,1016,5,3008,0,0,1016,366,1,0,0,0,1017,1018,5,2984,0,0,1018, + 1019,5,3010,0,0,1019,368,1,0,0,0,1020,1021,5,2984,0,0,1021,1022, + 5,3015,0,0,1022,370,1,0,0,0,1023,1024,5,2984,0,0,1024,1025,5,3019, + 0,0,1025,372,1,0,0,0,1026,1027,5,2984,0,0,1027,1028,5,3020,0,0,1028, + 374,1,0,0,0,1029,1030,5,2986,0,0,1030,1031,5,3006,0,0,1031,376,1, + 0,0,0,1032,1033,5,2986,0,0,1033,1034,5,3008,0,0,1034,378,1,0,0,0, + 1035,1036,5,2986,0,0,1036,1037,5,3010,0,0,1037,380,1,0,0,0,1038, + 1039,5,2986,0,0,1039,1040,5,3015,0,0,1040,382,1,0,0,0,1041,1042, + 5,2986,0,0,1042,1043,5,3019,0,0,1043,384,1,0,0,0,1044,1045,5,2986, + 0,0,1045,1046,5,3020,0,0,1046,386,1,0,0,0,1047,1048,5,2990,0,0,1048, + 1049,5,3006,0,0,1049,388,1,0,0,0,1050,1051,5,2990,0,0,1051,1052, + 5,3008,0,0,1052,390,1,0,0,0,1053,1054,5,2990,0,0,1054,1055,5,3010, + 0,0,1055,392,1,0,0,0,1056,1057,5,2990,0,0,1057,1058,5,3015,0,0,1058, + 394,1,0,0,0,1059,1060,5,2990,0,0,1060,1061,5,3019,0,0,1061,396,1, + 0,0,0,1062,1063,5,2990,0,0,1063,1064,5,3020,0,0,1064,398,1,0,0,0, + 1065,1066,5,2991,0,0,1066,1067,5,3006,0,0,1067,400,1,0,0,0,1068, + 1069,5,2991,0,0,1069,1070,5,3008,0,0,1070,402,1,0,0,0,1071,1072, + 5,2991,0,0,1072,1073,5,3010,0,0,1073,404,1,0,0,0,1074,1075,5,2991, + 0,0,1075,1076,5,3015,0,0,1076,406,1,0,0,0,1077,1078,5,2991,0,0,1078, + 1079,5,3019,0,0,1079,408,1,0,0,0,1080,1081,5,2991,0,0,1081,1082, + 5,3020,0,0,1082,410,1,0,0,0,1083,1084,5,2992,0,0,1084,1085,5,3006, + 0,0,1085,412,1,0,0,0,1086,1087,5,2992,0,0,1087,1088,5,3008,0,0,1088, + 414,1,0,0,0,1089,1090,5,2992,0,0,1090,1091,5,3010,0,0,1091,416,1, + 0,0,0,1092,1093,5,2992,0,0,1093,1094,5,3015,0,0,1094,418,1,0,0,0, + 1095,1096,5,2992,0,0,1096,1097,5,3019,0,0,1097,420,1,0,0,0,1098, + 1099,5,2992,0,0,1099,1100,5,3020,0,0,1100,422,1,0,0,0,1101,1102, + 5,2994,0,0,1102,1103,5,3006,0,0,1103,424,1,0,0,0,1104,1105,5,2994, + 0,0,1105,1106,5,3008,0,0,1106,426,1,0,0,0,1107,1108,5,2994,0,0,1108, + 1109,5,3010,0,0,1109,428,1,0,0,0,1110,1111,5,2994,0,0,1111,1112, + 5,3015,0,0,1112,430,1,0,0,0,1113,1114,5,2994,0,0,1114,1115,5,3019, + 0,0,1115,432,1,0,0,0,1116,1117,5,2994,0,0,1117,1118,5,3020,0,0,1118, + 434,1,0,0,0,1119,1120,5,2997,0,0,1120,1121,5,3006,0,0,1121,436,1, + 0,0,0,1122,1123,5,2997,0,0,1123,1124,5,3008,0,0,1124,438,1,0,0,0, + 1125,1126,5,2997,0,0,1126,1127,5,3010,0,0,1127,440,1,0,0,0,1128, + 1129,5,2997,0,0,1129,1130,5,3015,0,0,1130,442,1,0,0,0,1131,1132, + 5,2997,0,0,1132,1133,5,3019,0,0,1133,444,1,0,0,0,1134,1135,5,2997, + 0,0,1135,1136,5,3020,0,0,1136,446,1,0,0,0,1137,1138,5,2996,0,0,1138, + 1139,5,3006,0,0,1139,448,1,0,0,0,1140,1141,5,2996,0,0,1141,1142, + 5,3008,0,0,1142,450,1,0,0,0,1143,1144,5,2996,0,0,1144,1145,5,3010, + 0,0,1145,452,1,0,0,0,1146,1147,5,2996,0,0,1147,1148,5,3015,0,0,1148, + 454,1,0,0,0,1149,1150,5,2996,0,0,1150,1151,5,3019,0,0,1151,456,1, + 0,0,0,1152,1153,5,2996,0,0,1153,1154,5,3020,0,0,1154,458,1,0,0,0, + 1155,1156,5,2995,0,0,1156,1157,5,3006,0,0,1157,460,1,0,0,0,1158, + 1159,5,2995,0,0,1159,1160,5,3008,0,0,1160,462,1,0,0,0,1161,1162, + 5,2995,0,0,1162,1163,5,3010,0,0,1163,464,1,0,0,0,1164,1165,5,2995, + 0,0,1165,1166,5,3015,0,0,1166,466,1,0,0,0,1167,1168,5,2995,0,0,1168, + 1169,5,3019,0,0,1169,468,1,0,0,0,1170,1171,5,2995,0,0,1171,1172, + 5,3020,0,0,1172,470,1,0,0,0,1173,1174,5,2993,0,0,1174,1175,5,3006, + 0,0,1175,472,1,0,0,0,1176,1177,5,2993,0,0,1177,1178,5,3008,0,0,1178, + 474,1,0,0,0,1179,1180,5,2993,0,0,1180,1181,5,3010,0,0,1181,476,1, + 0,0,0,1182,1183,5,2993,0,0,1183,1184,5,3015,0,0,1184,478,1,0,0,0, + 1185,1186,5,2993,0,0,1186,1187,5,3019,0,0,1187,480,1,0,0,0,1188, + 1189,5,2993,0,0,1189,1190,5,3020,0,0,1190,482,1,0,0,0,1191,1192, + 5,2985,0,0,1192,1193,5,3006,0,0,1193,484,1,0,0,0,1194,1195,5,2985, + 0,0,1195,1196,5,3008,0,0,1196,486,1,0,0,0,1197,1198,5,2985,0,0,1198, + 1199,5,3010,0,0,1199,488,1,0,0,0,1200,1201,5,2985,0,0,1201,1202, + 5,3015,0,0,1202,490,1,0,0,0,1203,1204,5,2985,0,0,1204,1205,5,3019, + 0,0,1205,492,1,0,0,0,1206,1207,5,2985,0,0,1207,1208,5,3020,0,0,1208, + 494,1,0,0,0,1209,1211,7,0,0,0,1210,1209,1,0,0,0,1211,1212,1,0,0, + 0,1212,1210,1,0,0,0,1212,1213,1,0,0,0,1213,496,1,0,0,0,1214,1216, + 5,13,0,0,1215,1214,1,0,0,0,1215,1216,1,0,0,0,1216,1217,1,0,0,0,1217, + 1218,5,10,0,0,1218,498,1,0,0,0,3,0,1212,1215,0 ] class வெண்பாLexer(Lexer): @@ -713,20 +716,26 @@ class வெண்பாLexer(Lexer): T__244 = 245 T__245 = 246 T__246 = 247 - T__247 = 248 - I = 249 + I = 248 + NL = 249 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] modeNames = [ "DEFAULT_MODE" ] literalNames = [ "", - "'\\n'", "'\\u0B95\\u0BCD'", "'\\u0B9A\\u0BCD'", "'\\u0B9F\\u0BCD'", + "'\\u0B95\\u0BCD'", "'\\u0B9A\\u0BCD'", "'\\u0B9F\\u0BCD'", "'\\u0BA4\\u0BCD'", "'\\u0BAA\\u0BCD'", "'\\u0BB1\\u0BCD'", "'\\u0B9E\\u0BCD'", "'\\u0B99\\u0BCD'", "'\\u0BA3\\u0BCD'", "'\\u0BA8\\u0BCD'", "'\\u0BAE\\u0BCD'", "'\\u0BA9\\u0BCD'", "'\\u0BAF\\u0BCD'", "'\\u0BB0\\u0BCD'", "'\\u0BB2\\u0BCD'", "'\\u0BB5\\u0BCD'", "'\\u0BB4\\u0BCD'", "'\\u0BB3\\u0BCD'", + "'\\u0B83'", "'\\u0B95\\u0BC8'", "'\\u0B99\\u0BC8'", "'\\u0B9A\\u0BC8'", + "'\\u0B9E\\u0BC8'", "'\\u0B9F\\u0BC8'", "'\\u0BA3\\u0BC8'", + "'\\u0BA4\\u0BC8'", "'\\u0BA8\\u0BC8'", "'\\u0BAA\\u0BC8'", + "'\\u0BAE\\u0BC8'", "'\\u0BAF\\u0BC8'", "'\\u0BB0\\u0BC8'", + "'\\u0BB2\\u0BC8'", "'\\u0BB5\\u0BC8'", "'\\u0BB4\\u0BC8'", + "'\\u0BB3\\u0BC8'", "'\\u0BB1\\u0BC8'", "'\\u0BA9\\u0BC8'", "'\\u0B85'", "'\\u0B87'", "'\\u0B89'", "'\\u0B8E'", "'\\u0B92'", "'\\u0B95'", "'\\u0B95\\u0BBF'", "'\\u0B95\\u0BC1'", "'\\u0B95\\u0BC6'", "'\\u0B95\\u0BCA'", "'\\u0B99'", "'\\u0B99\\u0BBF'", "'\\u0B99\\u0BC1'", @@ -753,52 +762,46 @@ class வெண்பாLexer(Lexer): "'\\u0BB1\\u0BC6'", "'\\u0BB1\\u0BCA'", "'\\u0BA9'", "'\\u0BA9\\u0BBF'", "'\\u0BA9\\u0BC1'", "'\\u0BA9\\u0BC6'", "'\\u0BA9\\u0BCA'", "'\\u0B86'", "'\\u0B88'", "'\\u0B8A'", "'\\u0B8F'", "'\\u0B90'", - "'\\u0B93'", "'\\u0B92\\u0BB3'", "'\\u0B95\\u0BBE'", "'\\u0B95\\u0BC0'", - "'\\u0B95\\u0BC2'", "'\\u0B95\\u0BC7'", "'\\u0B95\\u0BC8'", - "'\\u0B95\\u0BCB'", "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", - "'\\u0B99\\u0BC0'", "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", - "'\\u0B99\\u0BC8'", "'\\u0B99\\u0BCB'", "'\\u0B99\\u0BCC'", - "'\\u0B9A\\u0BBE'", "'\\u0B9A\\u0BC0'", "'\\u0B9A\\u0BC2'", - "'\\u0B9A\\u0BC7'", "'\\u0B9A\\u0BC8'", "'\\u0B9A\\u0BCB'", + "'\\u0B93'", "'\\u0B94'", "'\\u0B95\\u0BBE'", "'\\u0B95\\u0BC0'", + "'\\u0B95\\u0BC2'", "'\\u0B95\\u0BC7'", "'\\u0B95\\u0BCB'", + "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", "'\\u0B99\\u0BC0'", + "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", "'\\u0B99\\u0BCB'", + "'\\u0B99\\u0BCC'", "'\\u0B9A\\u0BBE'", "'\\u0B9A\\u0BC0'", + "'\\u0B9A\\u0BC2'", "'\\u0B9A\\u0BC7'", "'\\u0B9A\\u0BCB'", "'\\u0B9A\\u0BCC'", "'\\u0B9E\\u0BBE'", "'\\u0B9E\\u0BC0'", - "'\\u0B9E\\u0BC2'", "'\\u0B9E\\u0BC7'", "'\\u0B9E\\u0BC8'", - "'\\u0B9E\\u0BCB'", "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", - "'\\u0B9F\\u0BC0'", "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", - "'\\u0B9F\\u0BC8'", "'\\u0B9F\\u0BCB'", "'\\u0B9F\\u0BCC'", - "'\\u0BA3\\u0BBE'", "'\\u0BA3\\u0BC0'", "'\\u0BA3\\u0BC2'", - "'\\u0BA3\\u0BC7'", "'\\u0BA3\\u0BC8'", "'\\u0BA3\\u0BCB'", + "'\\u0B9E\\u0BC2'", "'\\u0B9E\\u0BC7'", "'\\u0B9E\\u0BCB'", + "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", "'\\u0B9F\\u0BC0'", + "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", "'\\u0B9F\\u0BCB'", + "'\\u0B9F\\u0BCC'", "'\\u0BA3\\u0BBE'", "'\\u0BA3\\u0BC0'", + "'\\u0BA3\\u0BC2'", "'\\u0BA3\\u0BC7'", "'\\u0BA3\\u0BCB'", "'\\u0BA3\\u0BCC'", "'\\u0BA4\\u0BBE'", "'\\u0BA4\\u0BC0'", - "'\\u0BA4\\u0BC2'", "'\\u0BA4\\u0BC7'", "'\\u0BA4\\u0BC8'", - "'\\u0BA4\\u0BCB'", "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", - "'\\u0BA8\\u0BC0'", "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", - "'\\u0BA8\\u0BC8'", "'\\u0BA8\\u0BCB'", "'\\u0BA8\\u0BCC'", - "'\\u0BAA\\u0BBE'", "'\\u0BAA\\u0BC0'", "'\\u0BAA\\u0BC2'", - "'\\u0BAA\\u0BC7'", "'\\u0BAA\\u0BC8'", "'\\u0BAA\\u0BCB'", + "'\\u0BA4\\u0BC2'", "'\\u0BA4\\u0BC7'", "'\\u0BA4\\u0BCB'", + "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", "'\\u0BA8\\u0BC0'", + "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", "'\\u0BA8\\u0BCB'", + "'\\u0BA8\\u0BCC'", "'\\u0BAA\\u0BBE'", "'\\u0BAA\\u0BC0'", + "'\\u0BAA\\u0BC2'", "'\\u0BAA\\u0BC7'", "'\\u0BAA\\u0BCB'", "'\\u0BAA\\u0BCC'", "'\\u0BAE\\u0BBE'", "'\\u0BAE\\u0BC0'", - "'\\u0BAE\\u0BC2'", "'\\u0BAE\\u0BC7'", "'\\u0BAE\\u0BC8'", - "'\\u0BAE\\u0BCB'", "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", - "'\\u0BAF\\u0BC0'", "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", - "'\\u0BAF\\u0BC8'", "'\\u0BAF\\u0BCB'", "'\\u0BAF\\u0BCC'", - "'\\u0BB0\\u0BBE'", "'\\u0BB0\\u0BC0'", "'\\u0BB0\\u0BC2'", - "'\\u0BB0\\u0BC7'", "'\\u0BB0\\u0BC8'", "'\\u0BB0\\u0BCB'", + "'\\u0BAE\\u0BC2'", "'\\u0BAE\\u0BC7'", "'\\u0BAE\\u0BCB'", + "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", "'\\u0BAF\\u0BC0'", + "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", "'\\u0BAF\\u0BCB'", + "'\\u0BAF\\u0BCC'", "'\\u0BB0\\u0BBE'", "'\\u0BB0\\u0BC0'", + "'\\u0BB0\\u0BC2'", "'\\u0BB0\\u0BC7'", "'\\u0BB0\\u0BCB'", "'\\u0BB0\\u0BCC'", "'\\u0BB2\\u0BBE'", "'\\u0BB2\\u0BC0'", - "'\\u0BB2\\u0BC2'", "'\\u0BB2\\u0BC7'", "'\\u0BB2\\u0BC8'", - "'\\u0BB2\\u0BCB'", "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", - "'\\u0BB5\\u0BC0'", "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", - "'\\u0BB5\\u0BC8'", "'\\u0BB5\\u0BCB'", "'\\u0BB5\\u0BCC'", - "'\\u0BB4\\u0BBE'", "'\\u0BB4\\u0BC0'", "'\\u0BB4\\u0BC2'", - "'\\u0BB4\\u0BC7'", "'\\u0BB4\\u0BC8'", "'\\u0BB4\\u0BCB'", + "'\\u0BB2\\u0BC2'", "'\\u0BB2\\u0BC7'", "'\\u0BB2\\u0BCB'", + "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", "'\\u0BB5\\u0BC0'", + "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", "'\\u0BB5\\u0BCB'", + "'\\u0BB5\\u0BCC'", "'\\u0BB4\\u0BBE'", "'\\u0BB4\\u0BC0'", + "'\\u0BB4\\u0BC2'", "'\\u0BB4\\u0BC7'", "'\\u0BB4\\u0BCB'", "'\\u0BB4\\u0BCC'", "'\\u0BB3\\u0BBE'", "'\\u0BB3\\u0BC0'", - "'\\u0BB3\\u0BC2'", "'\\u0BB3\\u0BC7'", "'\\u0BB3\\u0BC8'", - "'\\u0BB3\\u0BCB'", "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", - "'\\u0BB1\\u0BC0'", "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", - "'\\u0BB1\\u0BC8'", "'\\u0BB1\\u0BCB'", "'\\u0BB1\\u0BCC'", - "'\\u0BA9\\u0BBE'", "'\\u0BA9\\u0BC0'", "'\\u0BA9\\u0BC2'", - "'\\u0BA9\\u0BC7'", "'\\u0BA9\\u0BC8'", "'\\u0BA9\\u0BCB'", - "'\\u0BA9\\u0BCC'", "'\\u0B83'", "' '" ] + "'\\u0BB3\\u0BC2'", "'\\u0BB3\\u0BC7'", "'\\u0BB3\\u0BCB'", + "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", "'\\u0BB1\\u0BC0'", + "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", "'\\u0BB1\\u0BCB'", + "'\\u0BB1\\u0BCC'", "'\\u0BA9\\u0BBE'", "'\\u0BA9\\u0BC0'", + "'\\u0BA9\\u0BC2'", "'\\u0BA9\\u0BC7'", "'\\u0BA9\\u0BCB'", + "'\\u0BA9\\u0BCC'" ] symbolicNames = [ "", - "I" ] + "I", "NL" ] ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", @@ -840,8 +843,8 @@ class வெண்பாLexer(Lexer): "T__224", "T__225", "T__226", "T__227", "T__228", "T__229", "T__230", "T__231", "T__232", "T__233", "T__234", "T__235", "T__236", "T__237", "T__238", "T__239", "T__240", "T__241", - "T__242", "T__243", "T__244", "T__245", "T__246", "T__247", - "I" ] + "T__242", "T__243", "T__244", "T__245", "T__246", "I", + "NL" ] grammarFileName = "வெண்பா.g4" diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.tokens" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.tokens" index e6be6e7..c562079 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.tokens" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Lexer.tokens" @@ -245,254 +245,252 @@ T__243=244 T__244=245 T__245=246 T__246=247 -T__247=248 -I=249 -'\n'=1 -'க்'=2 -'ச்'=3 -'ட்'=4 -'த்'=5 -'ப்'=6 -'ற்'=7 -'ஞ்'=8 -'ங்'=9 -'ண்'=10 -'ந்'=11 -'ம்'=12 -'ன்'=13 -'ய்'=14 -'ர்'=15 -'ல்'=16 -'வ்'=17 -'ழ்'=18 -'ள்'=19 -'அ'=20 -'இ'=21 -'உ'=22 -'எ'=23 -'ஒ'=24 -'க'=25 -'கி'=26 -'கு'=27 -'கெ'=28 -'கொ'=29 -'ங'=30 -'ஙி'=31 -'ஙு'=32 -'ஙெ'=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 -'ஏ'=118 -'ஐ'=119 -'ஓ'=120 -'ஒள'=121 -'கா'=122 -'கீ'=123 -'கூ'=124 -'கே'=125 -'கை'=126 -'கோ'=127 -'கௌ'=128 -'ஙா'=129 -'ஙீ'=130 -'ஙூ'=131 -'ஙே'=132 -'ஙை'=133 -'ஙோ'=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 -'ணோ'=162 -'ணௌ'=163 -'தா'=164 -'தீ'=165 -'தூ'=166 -'தே'=167 -'தை'=168 -'தோ'=169 -'தௌ'=170 -'நா'=171 -'நீ'=172 -'நூ'=173 -'நே'=174 -'நை'=175 -'நோ'=176 -'நௌ'=177 -'பா'=178 -'பீ'=179 -'பூ'=180 -'பே'=181 -'பை'=182 -'போ'=183 -'பௌ'=184 -'மா'=185 -'மீ'=186 -'மூ'=187 -'மே'=188 -'மை'=189 -'மோ'=190 -'மௌ'=191 -'யா'=192 -'யீ'=193 -'யூ'=194 -'யே'=195 -'யை'=196 -'யோ'=197 -'யௌ'=198 -'ரா'=199 -'ரீ'=200 -'ரூ'=201 -'ரே'=202 -'ரை'=203 -'ரோ'=204 -'ரௌ'=205 -'லா'=206 -'லீ'=207 -'லூ'=208 -'லே'=209 -'லை'=210 -'லோ'=211 -'லௌ'=212 -'வா'=213 -'வீ'=214 -'வூ'=215 -'வே'=216 -'வை'=217 -'வோ'=218 -'வௌ'=219 -'ழா'=220 -'ழீ'=221 -'ழூ'=222 -'ழே'=223 -'ழை'=224 -'ழோ'=225 -'ழௌ'=226 -'ளா'=227 -'ளீ'=228 -'ளூ'=229 -'ளே'=230 -'ளை'=231 -'ளோ'=232 -'ளௌ'=233 -'றா'=234 -'றீ'=235 -'றூ'=236 -'றே'=237 -'றை'=238 -'றோ'=239 -'றௌ'=240 -'னா'=241 -'னீ'=242 -'னூ'=243 -'னே'=244 -'னை'=245 +I=248 +NL=249 +'க்'=1 +'ச்'=2 +'ட்'=3 +'த்'=4 +'ப்'=5 +'ற்'=6 +'ஞ்'=7 +'ங்'=8 +'ண்'=9 +'ந்'=10 +'ம்'=11 +'ன்'=12 +'ய்'=13 +'ர்'=14 +'ல்'=15 +'வ்'=16 +'ழ்'=17 +'ள்'=18 +'ஃ'=19 +'கை'=20 +'ஙை'=21 +'சை'=22 +'ஞை'=23 +'டை'=24 +'ணை'=25 +'தை'=26 +'நை'=27 +'பை'=28 +'மை'=29 +'யை'=30 +'ரை'=31 +'லை'=32 +'வை'=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 +'ள'=118 +'ளி'=119 +'ளு'=120 +'ளெ'=121 +'ளொ'=122 +'ற'=123 +'றி'=124 +'று'=125 +'றெ'=126 +'றொ'=127 +'ன'=128 +'னி'=129 +'னு'=130 +'னெ'=131 +'னொ'=132 +'ஆ'=133 +'ஈ'=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 +'ஞோ'=162 +'ஞௌ'=163 +'டா'=164 +'டீ'=165 +'டூ'=166 +'டே'=167 +'டோ'=168 +'டௌ'=169 +'ணா'=170 +'ணீ'=171 +'ணூ'=172 +'ணே'=173 +'ணோ'=174 +'ணௌ'=175 +'தா'=176 +'தீ'=177 +'தூ'=178 +'தே'=179 +'தோ'=180 +'தௌ'=181 +'நா'=182 +'நீ'=183 +'நூ'=184 +'நே'=185 +'நோ'=186 +'நௌ'=187 +'பா'=188 +'பீ'=189 +'பூ'=190 +'பே'=191 +'போ'=192 +'பௌ'=193 +'மா'=194 +'மீ'=195 +'மூ'=196 +'மே'=197 +'மோ'=198 +'மௌ'=199 +'யா'=200 +'யீ'=201 +'யூ'=202 +'யே'=203 +'யோ'=204 +'யௌ'=205 +'ரா'=206 +'ரீ'=207 +'ரூ'=208 +'ரே'=209 +'ரோ'=210 +'ரௌ'=211 +'லா'=212 +'லீ'=213 +'லூ'=214 +'லே'=215 +'லோ'=216 +'லௌ'=217 +'வா'=218 +'வீ'=219 +'வூ'=220 +'வே'=221 +'வோ'=222 +'வௌ'=223 +'ழா'=224 +'ழீ'=225 +'ழூ'=226 +'ழே'=227 +'ழோ'=228 +'ழௌ'=229 +'ளா'=230 +'ளீ'=231 +'ளூ'=232 +'ளே'=233 +'ளோ'=234 +'ளௌ'=235 +'றா'=236 +'றீ'=237 +'றூ'=238 +'றே'=239 +'றோ'=240 +'றௌ'=241 +'னா'=242 +'னீ'=243 +'னூ'=244 +'னே'=245 'னோ'=246 'னௌ'=247 -'ஃ'=248 -' '=249 diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Listener.py" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Listener.py" index 3afe474..66aa1cf 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Listener.py" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Listener.py" @@ -98,78 +98,6 @@ def exitஈற்றுச்சீர்(self, ctx:வெண்பாParser.ஈ pass - # Enter a parse tree produced by வெண்பாParser#தேமா. - def enterதேமா(self, ctx:வெண்பாParser.தேமாContext): - pass - - # Exit a parse tree produced by வெண்பாParser#தேமா. - def exitதேமா(self, ctx:வெண்பாParser.தேமாContext): - pass - - - # Enter a parse tree produced by வெண்பாParser#புளிமா. - def enterபுளிமா(self, ctx:வெண்பாParser.புளிமாContext): - pass - - # Exit a parse tree produced by வெண்பாParser#புளிமா. - def exitபுளிமா(self, ctx:வெண்பாParser.புளிமாContext): - pass - - - # Enter a parse tree produced by வெண்பாParser#கருவிளம். - def enterகருவிளம்(self, ctx:வெண்பாParser.கருவிளம்Context): - pass - - # Exit a parse tree produced by வெண்பாParser#கருவிளம். - def exitகருவிளம்(self, ctx:வெண்பாParser.கருவிளம்Context): - pass - - - # Enter a parse tree produced by வெண்பாParser#கூவிளம். - def enterகூவிளம்(self, ctx:வெண்பாParser.கூவிளம்Context): - pass - - # Exit a parse tree produced by வெண்பாParser#கூவிளம். - def exitகூவிளம்(self, ctx:வெண்பாParser.கூவிளம்Context): - pass - - - # Enter a parse tree produced by வெண்பாParser#தேமாங்காய். - def enterதேமாங்காய்(self, ctx:வெண்பாParser.தேமாங்காய்Context): - pass - - # Exit a parse tree produced by வெண்பாParser#தேமாங்காய். - def exitதேமாங்காய்(self, ctx:வெண்பாParser.தேமாங்காய்Context): - pass - - - # Enter a parse tree produced by வெண்பாParser#புளிமாங்காய். - def enterபுளிமாங்காய்(self, ctx:வெண்பாParser.புளிமாங்காய்Context): - pass - - # Exit a parse tree produced by வெண்பாParser#புளிமாங்காய். - def exitபுளிமாங்காய்(self, ctx:வெண்பாParser.புளிமாங்காய்Context): - pass - - - # Enter a parse tree produced by வெண்பாParser#கருவிளங்காய். - def enterகருவிளங்காய்(self, ctx:வெண்பாParser.கருவிளங்காய்Context): - pass - - # Exit a parse tree produced by வெண்பாParser#கருவிளங்காய். - def exitகருவிளங்காய்(self, ctx:வெண்பாParser.கருவிளங்காய்Context): - pass - - - # Enter a parse tree produced by வெண்பாParser#கூவிளங்காய். - def enterகூவிளங்காய்(self, ctx:வெண்பாParser.கூவிளங்காய்Context): - pass - - # Exit a parse tree produced by வெண்பாParser#கூவிளங்காய். - def exitகூவிளங்காய்(self, ctx:வெண்பாParser.கூவிளங்காய்Context): - pass - - # Enter a parse tree produced by வெண்பாParser#நாள். def enterநாள்(self, ctx:வெண்பாParser.நாள்Context): pass @@ -422,6 +350,15 @@ def exitகூவிளநறுநிழல்(self, ctx:வெண்பாPars pass + # Enter a parse tree produced by வெண்பாParser#தேமாங்காய். + def enterதேமாங்காய்(self, ctx:வெண்பாParser.தேமாங்காய்Context): + pass + + # Exit a parse tree produced by வெண்பாParser#தேமாங்காய். + def exitதேமாங்காய்(self, ctx:வெண்பாParser.தேமாங்காய்Context): + pass + + # Enter a parse tree produced by வெண்பாParser#தேமாங்கனி. def enterதேமாங்கனி(self, ctx:வெண்பாParser.தேமாங்கனிContext): pass @@ -431,6 +368,15 @@ def exitதேமாங்கனி(self, ctx:வெண்பாParser.தேம pass + # Enter a parse tree produced by வெண்பாParser#புளிமாங்காய். + def enterபுளிமாங்காய்(self, ctx:வெண்பாParser.புளிமாங்காய்Context): + pass + + # Exit a parse tree produced by வெண்பாParser#புளிமாங்காய். + def exitபுளிமாங்காய்(self, ctx:வெண்பாParser.புளிமாங்காய்Context): + pass + + # Enter a parse tree produced by வெண்பாParser#புளிமாங்கனி. def enterபுளிமாங்கனி(self, ctx:வெண்பாParser.புளிமாங்கனிContext): pass @@ -440,6 +386,15 @@ def exitபுளிமாங்கனி(self, ctx:வெண்பாParser.ப pass + # Enter a parse tree produced by வெண்பாParser#கருவிளங்காய். + def enterகருவிளங்காய்(self, ctx:வெண்பாParser.கருவிளங்காய்Context): + pass + + # Exit a parse tree produced by வெண்பாParser#கருவிளங்காய். + def exitகருவிளங்காய்(self, ctx:வெண்பாParser.கருவிளங்காய்Context): + pass + + # Enter a parse tree produced by வெண்பாParser#கருவிளங்கனி. def enterகருவிளங்கனி(self, ctx:வெண்பாParser.கருவிளங்கனிContext): pass @@ -449,6 +404,15 @@ def exitகருவிளங்கனி(self, ctx:வெண்பாParser.க pass + # Enter a parse tree produced by வெண்பாParser#கூவிளங்காய். + def enterகூவிளங்காய்(self, ctx:வெண்பாParser.கூவிளங்காய்Context): + pass + + # Exit a parse tree produced by வெண்பாParser#கூவிளங்காய். + def exitகூவிளங்காய்(self, ctx:வெண்பாParser.கூவிளங்காய்Context): + pass + + # Enter a parse tree produced by வெண்பாParser#கூவிளங்கனி. def enterகூவிளங்கனி(self, ctx:வெண்பாParser.கூவிளங்கனிContext): pass @@ -458,6 +422,42 @@ def exitகூவிளங்கனி(self, ctx:வெண்பாParser.கூ pass + # Enter a parse tree produced by வெண்பாParser#தேமா. + def enterதேமா(self, ctx:வெண்பாParser.தேமாContext): + pass + + # Exit a parse tree produced by வெண்பாParser#தேமா. + def exitதேமா(self, ctx:வெண்பாParser.தேமாContext): + pass + + + # Enter a parse tree produced by வெண்பாParser#புளிமா. + def enterபுளிமா(self, ctx:வெண்பாParser.புளிமாContext): + pass + + # Exit a parse tree produced by வெண்பாParser#புளிமா. + def exitபுளிமா(self, ctx:வெண்பாParser.புளிமாContext): + pass + + + # Enter a parse tree produced by வெண்பாParser#கருவிளம். + def enterகருவிளம்(self, ctx:வெண்பாParser.கருவிளம்Context): + pass + + # Exit a parse tree produced by வெண்பாParser#கருவிளம். + def exitகருவிளம்(self, ctx:வெண்பாParser.கருவிளம்Context): + pass + + + # Enter a parse tree produced by வெண்பாParser#கூவிளம். + def enterகூவிளம்(self, ctx:வெண்பாParser.கூவிளம்Context): + pass + + # Exit a parse tree produced by வெண்பாParser#கூவிளம். + def exitகூவிளம்(self, ctx:வெண்பாParser.கூவிளம்Context): + pass + + # Enter a parse tree produced by வெண்பாParser#நேர். def enterநேர்(self, ctx:வெண்பாParser.நேர்Context): pass @@ -467,6 +467,15 @@ def exitநேர்(self, ctx:வெண்பாParser.நேர்Context): pass + # Enter a parse tree produced by வெண்பாParser#முதல்நிரை. + def enterமுதல்நிரை(self, ctx:வெண்பாParser.முதல்நிரைContext): + pass + + # Exit a parse tree produced by வெண்பாParser#முதல்நிரை. + def exitமுதல்நிரை(self, ctx:வெண்பாParser.முதல்நிரைContext): + pass + + # Enter a parse tree produced by வெண்பாParser#நிரை. def enterநிரை(self, ctx:வெண்பாParser.நிரைContext): pass @@ -485,6 +494,24 @@ def exitஒற்று(self, ctx:வெண்பாParser.ஒற்றுContex pass + # Enter a parse tree produced by வெண்பாParser#ஆய்தம். + def enterஆய்தம்(self, ctx:வெண்பாParser.ஆய்தம்Context): + pass + + # Exit a parse tree produced by வெண்பாParser#ஆய்தம். + def exitஆய்தம்(self, ctx:வெண்பாParser.ஆய்தம்Context): + pass + + + # Enter a parse tree produced by வெண்பாParser#ஐகாரக்குறுக்கம். + def enterஐகாரக்குறுக்கம்(self, ctx:வெண்பாParser.ஐகாரக்குறுக்கம்Context): + pass + + # Exit a parse tree produced by வெண்பாParser#ஐகாரக்குறுக்கம். + def exitஐகாரக்குறுக்கம்(self, ctx:வெண்பாParser.ஐகாரக்குறுக்கம்Context): + pass + + # Enter a parse tree produced by வெண்பாParser#குறில். def enterகுறில்(self, ctx:வெண்பாParser.குறில்Context): pass @@ -503,14 +530,5 @@ def exitநெடில்(self, ctx:வெண்பாParser.நெடில் pass - # Enter a parse tree produced by வெண்பாParser#ஆய்தம். - def enterஆய்தம்(self, ctx:வெண்பாParser.ஆய்தம்Context): - pass - - # Exit a parse tree produced by வெண்பாParser#ஆய்தம். - def exitஆய்தம்(self, ctx:வெண்பாParser.ஆய்தம்Context): - pass - - del வெண்பாParser \ No newline at end of file diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Parser.py" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Parser.py" index d0a8023..b3dc3a0 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Parser.py" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/codegen/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276Parser.py" @@ -10,7 +10,7 @@ def serializedATN(): return [ - 4,1,249,470,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, + 4,1,249,472,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, @@ -18,163 +18,164 @@ def serializedATN(): 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,1,0,1,0,1,0,1,0,3,0,117,8,0,1,1, - 1,1,1,1,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4, + 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,1,0,1,0,1,0, + 1,0,3,0,121,8,0,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,3,1,3,1,3, + 1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,207,8,4,1,5,1,5,1,5,1,5,1,5,1,5, - 1,5,1,5,1,5,1,5,1,5,1,5,4,5,221,8,5,11,5,12,5,222,1,5,1,5,1,6,1, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,3,8,250,8,8,1,9,1,9,1,9,1,9,3,9,256,8,9,1, - 10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,1,14,1, - 14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1, - 19,1,19,1,20,1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,22,1,22,3,22,296, - 8,22,1,23,1,23,1,23,1,23,3,23,302,8,23,1,24,1,24,3,24,306,8,24,1, - 25,1,25,3,25,310,8,25,1,26,1,26,1,26,1,26,3,26,316,8,26,1,27,1,27, - 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27, - 1,27,3,27,334,8,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28, - 344,8,28,1,29,1,29,1,29,1,29,3,29,350,8,29,1,30,1,30,1,30,1,31,1, - 31,1,31,1,32,1,32,1,32,1,33,1,33,1,33,1,34,1,34,1,34,1,35,1,35,1, - 35,1,36,1,36,1,36,1,37,1,37,1,37,1,38,1,38,1,38,1,39,1,39,1,39,1, - 40,1,40,1,40,1,41,1,41,1,41,1,42,1,42,1,42,1,43,1,43,1,43,1,44,1, - 44,1,44,1,45,1,45,1,45,1,46,1,46,1,46,1,47,1,47,1,47,1,48,1,48,1, - 48,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,4,50,417,8,50,11,50,12, - 50,418,3,50,421,8,50,1,50,1,50,1,50,4,50,426,8,50,11,50,12,50,427, - 3,50,430,8,50,3,50,432,8,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1, - 51,1,51,1,51,4,51,444,8,51,11,51,12,51,445,3,51,448,8,51,1,51,1, - 51,1,51,1,51,4,51,454,8,51,11,51,12,51,455,3,51,458,8,51,3,51,460, - 8,51,1,52,1,52,1,53,1,53,1,54,1,54,1,55,1,55,1,55,0,0,56,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,0,3,1,0,2,19,1,0,20,114,1,0,115,247, - 484,0,116,1,0,0,0,2,118,1,0,0,0,4,121,1,0,0,0,6,125,1,0,0,0,8,206, - 1,0,0,0,10,208,1,0,0,0,12,226,1,0,0,0,14,235,1,0,0,0,16,249,1,0, - 0,0,18,255,1,0,0,0,20,257,1,0,0,0,22,260,1,0,0,0,24,263,1,0,0,0, - 26,266,1,0,0,0,28,269,1,0,0,0,30,272,1,0,0,0,32,275,1,0,0,0,34,278, - 1,0,0,0,36,281,1,0,0,0,38,283,1,0,0,0,40,285,1,0,0,0,42,288,1,0, - 0,0,44,295,1,0,0,0,46,301,1,0,0,0,48,305,1,0,0,0,50,309,1,0,0,0, - 52,315,1,0,0,0,54,333,1,0,0,0,56,343,1,0,0,0,58,349,1,0,0,0,60,351, - 1,0,0,0,62,354,1,0,0,0,64,357,1,0,0,0,66,360,1,0,0,0,68,363,1,0, - 0,0,70,366,1,0,0,0,72,369,1,0,0,0,74,372,1,0,0,0,76,375,1,0,0,0, - 78,378,1,0,0,0,80,381,1,0,0,0,82,384,1,0,0,0,84,387,1,0,0,0,86,390, - 1,0,0,0,88,393,1,0,0,0,90,396,1,0,0,0,92,399,1,0,0,0,94,402,1,0, - 0,0,96,405,1,0,0,0,98,408,1,0,0,0,100,431,1,0,0,0,102,459,1,0,0, - 0,104,461,1,0,0,0,106,463,1,0,0,0,108,465,1,0,0,0,110,467,1,0,0, - 0,112,117,3,2,1,0,113,117,3,6,3,0,114,117,3,8,4,0,115,117,3,10,5, - 0,116,112,1,0,0,0,116,113,1,0,0,0,116,114,1,0,0,0,116,115,1,0,0, - 0,117,1,1,0,0,0,118,119,3,12,6,0,119,120,3,14,7,0,120,3,1,0,0,0, - 121,122,3,12,6,0,122,123,3,12,6,0,123,124,3,14,7,0,124,5,1,0,0,0, - 125,126,3,12,6,0,126,127,3,12,6,0,127,128,3,12,6,0,128,129,3,14, - 7,0,129,7,1,0,0,0,130,131,3,12,6,0,131,132,3,12,6,0,132,133,3,12, - 6,0,133,134,3,12,6,0,134,135,3,14,7,0,135,207,1,0,0,0,136,137,3, - 12,6,0,137,138,3,12,6,0,138,139,3,12,6,0,139,140,3,12,6,0,140,141, - 3,12,6,0,141,142,3,14,7,0,142,207,1,0,0,0,143,144,3,12,6,0,144,145, - 3,12,6,0,145,146,3,12,6,0,146,147,3,12,6,0,147,148,3,12,6,0,148, - 149,3,12,6,0,149,150,3,14,7,0,150,207,1,0,0,0,151,152,3,12,6,0,152, - 153,3,12,6,0,153,154,3,12,6,0,154,155,3,12,6,0,155,156,3,12,6,0, - 156,157,3,12,6,0,157,158,3,12,6,0,158,159,3,14,7,0,159,207,1,0,0, - 0,160,161,3,12,6,0,161,162,3,12,6,0,162,163,3,12,6,0,163,164,3,12, - 6,0,164,165,3,12,6,0,165,166,3,12,6,0,166,167,3,12,6,0,167,168,3, - 12,6,0,168,169,3,14,7,0,169,207,1,0,0,0,170,171,3,12,6,0,171,172, - 3,12,6,0,172,173,3,12,6,0,173,174,3,12,6,0,174,175,3,12,6,0,175, - 176,3,12,6,0,176,177,3,12,6,0,177,178,3,12,6,0,178,179,3,12,6,0, - 179,180,3,14,7,0,180,207,1,0,0,0,181,182,3,12,6,0,182,183,3,12,6, - 0,183,184,3,12,6,0,184,185,3,12,6,0,185,186,3,12,6,0,186,187,3,12, - 6,0,187,188,3,12,6,0,188,189,3,12,6,0,189,190,3,12,6,0,190,191,3, - 12,6,0,191,192,3,14,7,0,192,207,1,0,0,0,193,194,3,12,6,0,194,195, - 3,12,6,0,195,196,3,12,6,0,196,197,3,12,6,0,197,198,3,12,6,0,198, - 199,3,12,6,0,199,200,3,12,6,0,200,201,3,12,6,0,201,202,3,12,6,0, - 202,203,3,12,6,0,203,204,3,12,6,0,204,205,3,14,7,0,205,207,1,0,0, - 0,206,130,1,0,0,0,206,136,1,0,0,0,206,143,1,0,0,0,206,151,1,0,0, - 0,206,160,1,0,0,0,206,170,1,0,0,0,206,181,1,0,0,0,206,193,1,0,0, - 0,207,9,1,0,0,0,208,209,3,12,6,0,209,210,3,12,6,0,210,211,3,12,6, - 0,211,212,3,12,6,0,212,213,3,12,6,0,213,214,3,12,6,0,214,215,3,12, - 6,0,215,216,3,12,6,0,216,217,3,12,6,0,217,218,3,12,6,0,218,220,3, - 12,6,0,219,221,3,12,6,0,220,219,1,0,0,0,221,222,1,0,0,0,222,220, - 1,0,0,0,222,223,1,0,0,0,223,224,1,0,0,0,224,225,3,14,7,0,225,11, - 1,0,0,0,226,227,3,16,8,0,227,228,5,249,0,0,228,229,3,16,8,0,229, - 230,5,249,0,0,230,231,3,16,8,0,231,232,5,249,0,0,232,233,3,16,8, - 0,233,234,5,1,0,0,234,13,1,0,0,0,235,236,3,16,8,0,236,237,5,249, - 0,0,237,238,3,16,8,0,238,239,5,249,0,0,239,240,3,18,9,0,240,15,1, - 0,0,0,241,250,3,20,10,0,242,250,3,22,11,0,243,250,3,24,12,0,244, - 250,3,26,13,0,245,250,3,28,14,0,246,250,3,30,15,0,247,250,3,32,16, - 0,248,250,3,34,17,0,249,241,1,0,0,0,249,242,1,0,0,0,249,243,1,0, - 0,0,249,244,1,0,0,0,249,245,1,0,0,0,249,246,1,0,0,0,249,247,1,0, - 0,0,249,248,1,0,0,0,250,17,1,0,0,0,251,256,3,36,18,0,252,256,3,38, - 19,0,253,256,3,40,20,0,254,256,3,42,21,0,255,251,1,0,0,0,255,252, - 1,0,0,0,255,253,1,0,0,0,255,254,1,0,0,0,256,19,1,0,0,0,257,258,3, - 100,50,0,258,259,3,100,50,0,259,21,1,0,0,0,260,261,3,102,51,0,261, - 262,3,100,50,0,262,23,1,0,0,0,263,264,3,102,51,0,264,265,3,102,51, - 0,265,25,1,0,0,0,266,267,3,100,50,0,267,268,3,102,51,0,268,27,1, - 0,0,0,269,270,3,20,10,0,270,271,3,100,50,0,271,29,1,0,0,0,272,273, - 3,22,11,0,273,274,3,100,50,0,274,31,1,0,0,0,275,276,3,24,12,0,276, - 277,3,100,50,0,277,33,1,0,0,0,278,279,3,26,13,0,279,280,3,100,50, - 0,280,35,1,0,0,0,281,282,3,100,50,0,282,37,1,0,0,0,283,284,3,102, - 51,0,284,39,1,0,0,0,285,286,3,100,50,0,286,287,3,100,50,0,287,41, - 1,0,0,0,288,289,3,102,51,0,289,290,3,100,50,0,290,43,1,0,0,0,291, - 296,3,92,46,0,292,296,3,94,47,0,293,296,3,96,48,0,294,296,3,98,49, - 0,295,291,1,0,0,0,295,292,1,0,0,0,295,293,1,0,0,0,295,294,1,0,0, - 0,296,45,1,0,0,0,297,302,3,20,10,0,298,302,3,22,11,0,299,302,3,24, - 12,0,300,302,3,26,13,0,301,297,1,0,0,0,301,298,1,0,0,0,301,299,1, - 0,0,0,301,300,1,0,0,0,302,47,1,0,0,0,303,306,3,20,10,0,304,306,3, - 22,11,0,305,303,1,0,0,0,305,304,1,0,0,0,306,49,1,0,0,0,307,310,3, - 24,12,0,308,310,3,26,13,0,309,307,1,0,0,0,309,308,1,0,0,0,310,51, - 1,0,0,0,311,316,3,28,14,0,312,316,3,30,15,0,313,316,3,32,16,0,314, - 316,3,34,17,0,315,311,1,0,0,0,315,312,1,0,0,0,315,313,1,0,0,0,315, - 314,1,0,0,0,316,53,1,0,0,0,317,334,3,60,30,0,318,334,3,62,31,0,319, - 334,3,64,32,0,320,334,3,66,33,0,321,334,3,68,34,0,322,334,3,70,35, - 0,323,334,3,72,36,0,324,334,3,74,37,0,325,334,3,76,38,0,326,334, - 3,78,39,0,327,334,3,80,40,0,328,334,3,82,41,0,329,334,3,84,42,0, - 330,334,3,86,43,0,331,334,3,88,44,0,332,334,3,90,45,0,333,317,1, - 0,0,0,333,318,1,0,0,0,333,319,1,0,0,0,333,320,1,0,0,0,333,321,1, - 0,0,0,333,322,1,0,0,0,333,323,1,0,0,0,333,324,1,0,0,0,333,325,1, - 0,0,0,333,326,1,0,0,0,333,327,1,0,0,0,333,328,1,0,0,0,333,329,1, - 0,0,0,333,330,1,0,0,0,333,331,1,0,0,0,333,332,1,0,0,0,334,55,1,0, - 0,0,335,344,3,28,14,0,336,344,3,92,46,0,337,344,3,30,15,0,338,344, - 3,94,47,0,339,344,3,32,16,0,340,344,3,96,48,0,341,344,3,34,17,0, - 342,344,3,98,49,0,343,335,1,0,0,0,343,336,1,0,0,0,343,337,1,0,0, - 0,343,338,1,0,0,0,343,339,1,0,0,0,343,340,1,0,0,0,343,341,1,0,0, - 0,343,342,1,0,0,0,344,57,1,0,0,0,345,350,3,20,10,0,346,350,3,22, - 11,0,347,350,3,24,12,0,348,350,3,26,13,0,349,345,1,0,0,0,349,346, - 1,0,0,0,349,347,1,0,0,0,349,348,1,0,0,0,350,59,1,0,0,0,351,352,3, - 28,14,0,352,353,3,100,50,0,353,61,1,0,0,0,354,355,3,28,14,0,355, - 356,3,102,51,0,356,63,1,0,0,0,357,358,3,92,46,0,358,359,3,100,50, - 0,359,65,1,0,0,0,360,361,3,92,46,0,361,362,3,102,51,0,362,67,1,0, - 0,0,363,364,3,30,15,0,364,365,3,100,50,0,365,69,1,0,0,0,366,367, - 3,30,15,0,367,368,3,102,51,0,368,71,1,0,0,0,369,370,3,94,47,0,370, - 371,3,100,50,0,371,73,1,0,0,0,372,373,3,94,47,0,373,374,3,102,51, - 0,374,75,1,0,0,0,375,376,3,32,16,0,376,377,3,100,50,0,377,77,1,0, - 0,0,378,379,3,32,16,0,379,380,3,102,51,0,380,79,1,0,0,0,381,382, - 3,96,48,0,382,383,3,100,50,0,383,81,1,0,0,0,384,385,3,96,48,0,385, - 386,3,102,51,0,386,83,1,0,0,0,387,388,3,34,17,0,388,389,3,100,50, - 0,389,85,1,0,0,0,390,391,3,34,17,0,391,392,3,102,51,0,392,87,1,0, - 0,0,393,394,3,98,49,0,394,395,3,100,50,0,395,89,1,0,0,0,396,397, - 3,98,49,0,397,398,3,102,51,0,398,91,1,0,0,0,399,400,3,20,10,0,400, - 401,3,102,51,0,401,93,1,0,0,0,402,403,3,22,11,0,403,404,3,102,51, - 0,404,95,1,0,0,0,405,406,3,24,12,0,406,407,3,102,51,0,407,97,1,0, - 0,0,408,409,3,26,13,0,409,410,3,102,51,0,410,99,1,0,0,0,411,432, - 3,106,53,0,412,432,3,108,54,0,413,420,3,106,53,0,414,421,3,110,55, - 0,415,417,3,104,52,0,416,415,1,0,0,0,417,418,1,0,0,0,418,416,1,0, - 0,0,418,419,1,0,0,0,419,421,1,0,0,0,420,414,1,0,0,0,420,416,1,0, - 0,0,421,432,1,0,0,0,422,429,3,108,54,0,423,430,3,110,55,0,424,426, - 3,104,52,0,425,424,1,0,0,0,426,427,1,0,0,0,427,425,1,0,0,0,427,428, - 1,0,0,0,428,430,1,0,0,0,429,423,1,0,0,0,429,425,1,0,0,0,430,432, - 1,0,0,0,431,411,1,0,0,0,431,412,1,0,0,0,431,413,1,0,0,0,431,422, - 1,0,0,0,432,101,1,0,0,0,433,434,3,106,53,0,434,435,3,106,53,0,435, - 460,1,0,0,0,436,437,3,106,53,0,437,438,3,108,54,0,438,460,1,0,0, - 0,439,440,3,106,53,0,440,447,3,106,53,0,441,448,3,110,55,0,442,444, - 3,104,52,0,443,442,1,0,0,0,444,445,1,0,0,0,445,443,1,0,0,0,445,446, - 1,0,0,0,446,448,1,0,0,0,447,441,1,0,0,0,447,443,1,0,0,0,448,460, - 1,0,0,0,449,450,3,106,53,0,450,457,3,108,54,0,451,458,3,110,55,0, - 452,454,3,104,52,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,458,1,0,0,0,457,451,1,0,0,0,457,453,1,0,0, - 0,458,460,1,0,0,0,459,433,1,0,0,0,459,436,1,0,0,0,459,439,1,0,0, - 0,459,449,1,0,0,0,460,103,1,0,0,0,461,462,7,0,0,0,462,105,1,0,0, - 0,463,464,7,1,0,0,464,107,1,0,0,0,465,466,7,2,0,0,466,109,1,0,0, - 0,467,468,5,248,0,0,468,111,1,0,0,0,23,116,206,222,249,255,295,301, - 305,309,315,333,343,349,418,420,427,429,431,445,447,455,457,459 + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,213, + 8,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,4,5,227,8,5, + 11,5,12,5,228,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1, + 7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,256,8,8,1, + 9,1,9,1,9,1,9,3,9,262,8,9,1,10,1,10,1,11,1,11,1,12,1,12,1,12,1,13, + 1,13,1,13,1,14,1,14,1,14,1,14,3,14,278,8,14,1,15,1,15,1,15,1,15, + 3,15,284,8,15,1,16,1,16,3,16,288,8,16,1,17,1,17,3,17,292,8,17,1, + 18,1,18,1,18,1,18,3,18,298,8,18,1,19,1,19,1,19,1,19,1,19,1,19,1, + 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,316,8,19,1, + 20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,3,20,326,8,20,1,21,1,21,1, + 21,1,21,3,21,332,8,21,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1, + 24,1,25,1,25,1,25,1,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,28,1, + 29,1,29,1,29,1,30,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,33,1, + 33,1,33,1,34,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,37,1,37,1, + 37,1,38,1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,40,1,41,1,41,1,41,1, + 42,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,45,1,45,1,45,1,46,1, + 46,1,46,1,47,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,49,1,50,1,50,1, + 50,3,50,421,8,50,1,50,1,50,4,50,425,8,50,11,50,12,50,426,3,50,429, + 8,50,1,51,1,51,1,51,1,51,3,51,435,8,51,1,51,1,51,4,51,439,8,51,11, + 51,12,51,440,3,51,443,8,51,1,52,1,52,3,52,447,8,52,1,52,1,52,1,52, + 3,52,452,8,52,1,52,1,52,4,52,456,8,52,11,52,12,52,457,3,52,460,8, + 52,1,53,1,53,1,54,1,54,1,55,1,55,1,56,1,56,1,57,1,57,1,57,0,0,58, + 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,0,4,1,0,1,18,1,0, + 20,37,1,0,38,132,1,0,133,247,486,0,120,1,0,0,0,2,124,1,0,0,0,4,127, + 1,0,0,0,6,131,1,0,0,0,8,212,1,0,0,0,10,214,1,0,0,0,12,232,1,0,0, + 0,14,241,1,0,0,0,16,255,1,0,0,0,18,261,1,0,0,0,20,263,1,0,0,0,22, + 265,1,0,0,0,24,267,1,0,0,0,26,270,1,0,0,0,28,277,1,0,0,0,30,283, + 1,0,0,0,32,287,1,0,0,0,34,291,1,0,0,0,36,297,1,0,0,0,38,315,1,0, + 0,0,40,325,1,0,0,0,42,331,1,0,0,0,44,333,1,0,0,0,46,336,1,0,0,0, + 48,339,1,0,0,0,50,342,1,0,0,0,52,345,1,0,0,0,54,348,1,0,0,0,56,351, + 1,0,0,0,58,354,1,0,0,0,60,357,1,0,0,0,62,360,1,0,0,0,64,363,1,0, + 0,0,66,366,1,0,0,0,68,369,1,0,0,0,70,372,1,0,0,0,72,375,1,0,0,0, + 74,378,1,0,0,0,76,381,1,0,0,0,78,384,1,0,0,0,80,387,1,0,0,0,82,390, + 1,0,0,0,84,393,1,0,0,0,86,396,1,0,0,0,88,399,1,0,0,0,90,402,1,0, + 0,0,92,405,1,0,0,0,94,408,1,0,0,0,96,411,1,0,0,0,98,414,1,0,0,0, + 100,420,1,0,0,0,102,430,1,0,0,0,104,446,1,0,0,0,106,461,1,0,0,0, + 108,463,1,0,0,0,110,465,1,0,0,0,112,467,1,0,0,0,114,469,1,0,0,0, + 116,121,3,2,1,0,117,121,3,6,3,0,118,121,3,8,4,0,119,121,3,10,5,0, + 120,116,1,0,0,0,120,117,1,0,0,0,120,118,1,0,0,0,120,119,1,0,0,0, + 121,122,1,0,0,0,122,123,5,0,0,1,123,1,1,0,0,0,124,125,3,12,6,0,125, + 126,3,14,7,0,126,3,1,0,0,0,127,128,3,12,6,0,128,129,3,12,6,0,129, + 130,3,14,7,0,130,5,1,0,0,0,131,132,3,12,6,0,132,133,3,12,6,0,133, + 134,3,12,6,0,134,135,3,14,7,0,135,7,1,0,0,0,136,137,3,12,6,0,137, + 138,3,12,6,0,138,139,3,12,6,0,139,140,3,12,6,0,140,141,3,14,7,0, + 141,213,1,0,0,0,142,143,3,12,6,0,143,144,3,12,6,0,144,145,3,12,6, + 0,145,146,3,12,6,0,146,147,3,12,6,0,147,148,3,14,7,0,148,213,1,0, + 0,0,149,150,3,12,6,0,150,151,3,12,6,0,151,152,3,12,6,0,152,153,3, + 12,6,0,153,154,3,12,6,0,154,155,3,12,6,0,155,156,3,14,7,0,156,213, + 1,0,0,0,157,158,3,12,6,0,158,159,3,12,6,0,159,160,3,12,6,0,160,161, + 3,12,6,0,161,162,3,12,6,0,162,163,3,12,6,0,163,164,3,12,6,0,164, + 165,3,14,7,0,165,213,1,0,0,0,166,167,3,12,6,0,167,168,3,12,6,0,168, + 169,3,12,6,0,169,170,3,12,6,0,170,171,3,12,6,0,171,172,3,12,6,0, + 172,173,3,12,6,0,173,174,3,12,6,0,174,175,3,14,7,0,175,213,1,0,0, + 0,176,177,3,12,6,0,177,178,3,12,6,0,178,179,3,12,6,0,179,180,3,12, + 6,0,180,181,3,12,6,0,181,182,3,12,6,0,182,183,3,12,6,0,183,184,3, + 12,6,0,184,185,3,12,6,0,185,186,3,14,7,0,186,213,1,0,0,0,187,188, + 3,12,6,0,188,189,3,12,6,0,189,190,3,12,6,0,190,191,3,12,6,0,191, + 192,3,12,6,0,192,193,3,12,6,0,193,194,3,12,6,0,194,195,3,12,6,0, + 195,196,3,12,6,0,196,197,3,12,6,0,197,198,3,14,7,0,198,213,1,0,0, + 0,199,200,3,12,6,0,200,201,3,12,6,0,201,202,3,12,6,0,202,203,3,12, + 6,0,203,204,3,12,6,0,204,205,3,12,6,0,205,206,3,12,6,0,206,207,3, + 12,6,0,207,208,3,12,6,0,208,209,3,12,6,0,209,210,3,12,6,0,210,211, + 3,14,7,0,211,213,1,0,0,0,212,136,1,0,0,0,212,142,1,0,0,0,212,149, + 1,0,0,0,212,157,1,0,0,0,212,166,1,0,0,0,212,176,1,0,0,0,212,187, + 1,0,0,0,212,199,1,0,0,0,213,9,1,0,0,0,214,215,3,12,6,0,215,216,3, + 12,6,0,216,217,3,12,6,0,217,218,3,12,6,0,218,219,3,12,6,0,219,220, + 3,12,6,0,220,221,3,12,6,0,221,222,3,12,6,0,222,223,3,12,6,0,223, + 224,3,12,6,0,224,226,3,12,6,0,225,227,3,12,6,0,226,225,1,0,0,0,227, + 228,1,0,0,0,228,226,1,0,0,0,228,229,1,0,0,0,229,230,1,0,0,0,230, + 231,3,14,7,0,231,11,1,0,0,0,232,233,3,16,8,0,233,234,5,248,0,0,234, + 235,3,16,8,0,235,236,5,248,0,0,236,237,3,16,8,0,237,238,5,248,0, + 0,238,239,3,16,8,0,239,240,5,249,0,0,240,13,1,0,0,0,241,242,3,16, + 8,0,242,243,5,248,0,0,243,244,3,16,8,0,244,245,5,248,0,0,245,246, + 3,18,9,0,246,15,1,0,0,0,247,256,3,92,46,0,248,256,3,94,47,0,249, + 256,3,96,48,0,250,256,3,98,49,0,251,256,3,76,38,0,252,256,3,80,40, + 0,253,256,3,84,42,0,254,256,3,88,44,0,255,247,1,0,0,0,255,248,1, + 0,0,0,255,249,1,0,0,0,255,250,1,0,0,0,255,251,1,0,0,0,255,252,1, + 0,0,0,255,253,1,0,0,0,255,254,1,0,0,0,256,17,1,0,0,0,257,262,3,20, + 10,0,258,262,3,22,11,0,259,262,3,24,12,0,260,262,3,26,13,0,261,257, + 1,0,0,0,261,258,1,0,0,0,261,259,1,0,0,0,261,260,1,0,0,0,262,19,1, + 0,0,0,263,264,3,100,50,0,264,21,1,0,0,0,265,266,3,102,51,0,266,23, + 1,0,0,0,267,268,3,100,50,0,268,269,3,100,50,0,269,25,1,0,0,0,270, + 271,3,102,51,0,271,272,3,100,50,0,272,27,1,0,0,0,273,278,3,78,39, + 0,274,278,3,82,41,0,275,278,3,86,43,0,276,278,3,90,45,0,277,273, + 1,0,0,0,277,274,1,0,0,0,277,275,1,0,0,0,277,276,1,0,0,0,278,29,1, + 0,0,0,279,284,3,92,46,0,280,284,3,94,47,0,281,284,3,96,48,0,282, + 284,3,98,49,0,283,279,1,0,0,0,283,280,1,0,0,0,283,281,1,0,0,0,283, + 282,1,0,0,0,284,31,1,0,0,0,285,288,3,92,46,0,286,288,3,94,47,0,287, + 285,1,0,0,0,287,286,1,0,0,0,288,33,1,0,0,0,289,292,3,96,48,0,290, + 292,3,98,49,0,291,289,1,0,0,0,291,290,1,0,0,0,292,35,1,0,0,0,293, + 298,3,76,38,0,294,298,3,80,40,0,295,298,3,84,42,0,296,298,3,88,44, + 0,297,293,1,0,0,0,297,294,1,0,0,0,297,295,1,0,0,0,297,296,1,0,0, + 0,298,37,1,0,0,0,299,316,3,44,22,0,300,316,3,52,26,0,301,316,3,60, + 30,0,302,316,3,68,34,0,303,316,3,48,24,0,304,316,3,56,28,0,305,316, + 3,64,32,0,306,316,3,72,36,0,307,316,3,46,23,0,308,316,3,54,27,0, + 309,316,3,62,31,0,310,316,3,70,35,0,311,316,3,50,25,0,312,316,3, + 58,29,0,313,316,3,66,33,0,314,316,3,74,37,0,315,299,1,0,0,0,315, + 300,1,0,0,0,315,301,1,0,0,0,315,302,1,0,0,0,315,303,1,0,0,0,315, + 304,1,0,0,0,315,305,1,0,0,0,315,306,1,0,0,0,315,307,1,0,0,0,315, + 308,1,0,0,0,315,309,1,0,0,0,315,310,1,0,0,0,315,311,1,0,0,0,315, + 312,1,0,0,0,315,313,1,0,0,0,315,314,1,0,0,0,316,39,1,0,0,0,317,326, + 3,76,38,0,318,326,3,80,40,0,319,326,3,84,42,0,320,326,3,88,44,0, + 321,326,3,78,39,0,322,326,3,82,41,0,323,326,3,86,43,0,324,326,3, + 90,45,0,325,317,1,0,0,0,325,318,1,0,0,0,325,319,1,0,0,0,325,320, + 1,0,0,0,325,321,1,0,0,0,325,322,1,0,0,0,325,323,1,0,0,0,325,324, + 1,0,0,0,326,41,1,0,0,0,327,332,3,92,46,0,328,332,3,94,47,0,329,332, + 3,96,48,0,330,332,3,98,49,0,331,327,1,0,0,0,331,328,1,0,0,0,331, + 329,1,0,0,0,331,330,1,0,0,0,332,43,1,0,0,0,333,334,3,76,38,0,334, + 335,3,100,50,0,335,45,1,0,0,0,336,337,3,76,38,0,337,338,3,104,52, + 0,338,47,1,0,0,0,339,340,3,78,39,0,340,341,3,100,50,0,341,49,1,0, + 0,0,342,343,3,78,39,0,343,344,3,104,52,0,344,51,1,0,0,0,345,346, + 3,80,40,0,346,347,3,100,50,0,347,53,1,0,0,0,348,349,3,80,40,0,349, + 350,3,104,52,0,350,55,1,0,0,0,351,352,3,82,41,0,352,353,3,100,50, + 0,353,57,1,0,0,0,354,355,3,82,41,0,355,356,3,104,52,0,356,59,1,0, + 0,0,357,358,3,84,42,0,358,359,3,100,50,0,359,61,1,0,0,0,360,361, + 3,84,42,0,361,362,3,104,52,0,362,63,1,0,0,0,363,364,3,86,43,0,364, + 365,3,100,50,0,365,65,1,0,0,0,366,367,3,86,43,0,367,368,3,104,52, + 0,368,67,1,0,0,0,369,370,3,88,44,0,370,371,3,100,50,0,371,69,1,0, + 0,0,372,373,3,88,44,0,373,374,3,104,52,0,374,71,1,0,0,0,375,376, + 3,90,45,0,376,377,3,100,50,0,377,73,1,0,0,0,378,379,3,90,45,0,379, + 380,3,104,52,0,380,75,1,0,0,0,381,382,3,92,46,0,382,383,3,100,50, + 0,383,77,1,0,0,0,384,385,3,92,46,0,385,386,3,104,52,0,386,79,1,0, + 0,0,387,388,3,94,47,0,388,389,3,100,50,0,389,81,1,0,0,0,390,391, + 3,94,47,0,391,392,3,104,52,0,392,83,1,0,0,0,393,394,3,96,48,0,394, + 395,3,100,50,0,395,85,1,0,0,0,396,397,3,96,48,0,397,398,3,104,52, + 0,398,87,1,0,0,0,399,400,3,98,49,0,400,401,3,100,50,0,401,89,1,0, + 0,0,402,403,3,98,49,0,403,404,3,104,52,0,404,91,1,0,0,0,405,406, + 3,100,50,0,406,407,3,100,50,0,407,93,1,0,0,0,408,409,3,102,51,0, + 409,410,3,100,50,0,410,95,1,0,0,0,411,412,3,102,51,0,412,413,3,104, + 52,0,413,97,1,0,0,0,414,415,3,100,50,0,415,416,3,104,52,0,416,99, + 1,0,0,0,417,421,3,112,56,0,418,421,3,114,57,0,419,421,3,110,55,0, + 420,417,1,0,0,0,420,418,1,0,0,0,420,419,1,0,0,0,421,428,1,0,0,0, + 422,429,3,108,54,0,423,425,3,106,53,0,424,423,1,0,0,0,425,426,1, + 0,0,0,426,424,1,0,0,0,426,427,1,0,0,0,427,429,1,0,0,0,428,422,1, + 0,0,0,428,424,1,0,0,0,428,429,1,0,0,0,429,101,1,0,0,0,430,434,3, + 112,56,0,431,435,3,112,56,0,432,435,3,114,57,0,433,435,3,110,55, + 0,434,431,1,0,0,0,434,432,1,0,0,0,434,433,1,0,0,0,435,442,1,0,0, + 0,436,443,3,108,54,0,437,439,3,106,53,0,438,437,1,0,0,0,439,440, + 1,0,0,0,440,438,1,0,0,0,440,441,1,0,0,0,441,443,1,0,0,0,442,436, + 1,0,0,0,442,438,1,0,0,0,442,443,1,0,0,0,443,103,1,0,0,0,444,447, + 3,112,56,0,445,447,3,110,55,0,446,444,1,0,0,0,446,445,1,0,0,0,447, + 451,1,0,0,0,448,452,3,112,56,0,449,452,3,114,57,0,450,452,3,110, + 55,0,451,448,1,0,0,0,451,449,1,0,0,0,451,450,1,0,0,0,452,459,1,0, + 0,0,453,460,3,108,54,0,454,456,3,106,53,0,455,454,1,0,0,0,456,457, + 1,0,0,0,457,455,1,0,0,0,457,458,1,0,0,0,458,460,1,0,0,0,459,453, + 1,0,0,0,459,455,1,0,0,0,459,460,1,0,0,0,460,105,1,0,0,0,461,462, + 7,0,0,0,462,107,1,0,0,0,463,464,5,19,0,0,464,109,1,0,0,0,465,466, + 7,1,0,0,466,111,1,0,0,0,467,468,7,2,0,0,468,113,1,0,0,0,469,470, + 7,3,0,0,470,115,1,0,0,0,23,120,212,228,255,261,277,283,287,291,297, + 315,325,331,420,426,428,434,440,442,446,451,457,459 ] class வெண்பாParser ( Parser ): @@ -187,88 +188,88 @@ class வெண்பாParser ( Parser ): sharedContextCache = PredictionContextCache() - literalNames = [ "", "'\\n'", "'\\u0B95\\u0BCD'", "'\\u0B9A\\u0BCD'", + literalNames = [ "", "'\\u0B95\\u0BCD'", "'\\u0B9A\\u0BCD'", "'\\u0B9F\\u0BCD'", "'\\u0BA4\\u0BCD'", "'\\u0BAA\\u0BCD'", "'\\u0BB1\\u0BCD'", "'\\u0B9E\\u0BCD'", "'\\u0B99\\u0BCD'", "'\\u0BA3\\u0BCD'", "'\\u0BA8\\u0BCD'", "'\\u0BAE\\u0BCD'", "'\\u0BA9\\u0BCD'", "'\\u0BAF\\u0BCD'", "'\\u0BB0\\u0BCD'", "'\\u0BB2\\u0BCD'", "'\\u0BB5\\u0BCD'", "'\\u0BB4\\u0BCD'", - "'\\u0BB3\\u0BCD'", "'\\u0B85'", "'\\u0B87'", "'\\u0B89'", - "'\\u0B8E'", "'\\u0B92'", "'\\u0B95'", "'\\u0B95\\u0BBF'", - "'\\u0B95\\u0BC1'", "'\\u0B95\\u0BC6'", "'\\u0B95\\u0BCA'", - "'\\u0B99'", "'\\u0B99\\u0BBF'", "'\\u0B99\\u0BC1'", - "'\\u0B99\\u0BC6'", "'\\u0B99\\u0BCA'", "'\\u0B9A'", - "'\\u0B9A\\u0BBF'", "'\\u0B9A\\u0BC1'", "'\\u0B9A\\u0BC6'", - "'\\u0B9A\\u0BCA'", "'\\u0B9E'", "'\\u0B9E\\u0BBF'", - "'\\u0B9E\\u0BC1'", "'\\u0B9E\\u0BC6'", "'\\u0B9E\\u0BCA'", - "'\\u0B9F'", "'\\u0B9F\\u0BBF'", "'\\u0B9F\\u0BC1'", - "'\\u0B9F\\u0BC6'", "'\\u0B9F\\u0BCA'", "'\\u0BA3'", - "'\\u0BA3\\u0BBF'", "'\\u0BA3\\u0BC1'", "'\\u0BA3\\u0BC6'", - "'\\u0BA3\\u0BCA'", "'\\u0BA4'", "'\\u0BA4\\u0BBF'", - "'\\u0BA4\\u0BC1'", "'\\u0BA4\\u0BC6'", "'\\u0BA4\\u0BCA'", - "'\\u0BA8'", "'\\u0BA8\\u0BBF'", "'\\u0BA8\\u0BC1'", - "'\\u0BA8\\u0BC6'", "'\\u0BA8\\u0BCA'", "'\\u0BAA'", - "'\\u0BAA\\u0BBF'", "'\\u0BAA\\u0BC1'", "'\\u0BAA\\u0BC6'", - "'\\u0BAA\\u0BCA'", "'\\u0BAE'", "'\\u0BAE\\u0BBF'", - "'\\u0BAE\\u0BC1'", "'\\u0BAE\\u0BC6'", "'\\u0BAE\\u0BCA'", - "'\\u0BAF'", "'\\u0BAF\\u0BBF'", "'\\u0BAF\\u0BC1'", - "'\\u0BAF\\u0BC6'", "'\\u0BAF\\u0BCA'", "'\\u0BB0'", - "'\\u0BB0\\u0BBF'", "'\\u0BB0\\u0BC1'", "'\\u0BB0\\u0BC6'", - "'\\u0BB0\\u0BCA'", "'\\u0BB2'", "'\\u0BB2\\u0BBF'", - "'\\u0BB2\\u0BC1'", "'\\u0BB2\\u0BC6'", "'\\u0BB2\\u0BCA'", - "'\\u0BB5'", "'\\u0BB5\\u0BBF'", "'\\u0BB5\\u0BC1'", - "'\\u0BB5\\u0BC6'", "'\\u0BB5\\u0BCA'", "'\\u0BB4'", - "'\\u0BB4\\u0BBF'", "'\\u0BB4\\u0BC1'", "'\\u0BB4\\u0BC6'", - "'\\u0BB4\\u0BCA'", "'\\u0BB3'", "'\\u0BB3\\u0BBF'", - "'\\u0BB3\\u0BC1'", "'\\u0BB3\\u0BC6'", "'\\u0BB3\\u0BCA'", - "'\\u0BB1'", "'\\u0BB1\\u0BBF'", "'\\u0BB1\\u0BC1'", - "'\\u0BB1\\u0BC6'", "'\\u0BB1\\u0BCA'", "'\\u0BA9'", - "'\\u0BA9\\u0BBF'", "'\\u0BA9\\u0BC1'", "'\\u0BA9\\u0BC6'", - "'\\u0BA9\\u0BCA'", "'\\u0B86'", "'\\u0B88'", "'\\u0B8A'", - "'\\u0B8F'", "'\\u0B90'", "'\\u0B93'", "'\\u0B92\\u0BB3'", - "'\\u0B95\\u0BBE'", "'\\u0B95\\u0BC0'", "'\\u0B95\\u0BC2'", - "'\\u0B95\\u0BC7'", "'\\u0B95\\u0BC8'", "'\\u0B95\\u0BCB'", - "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", "'\\u0B99\\u0BC0'", - "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", "'\\u0B99\\u0BC8'", + "'\\u0BB3\\u0BCD'", "'\\u0B83'", "'\\u0B95\\u0BC8'", + "'\\u0B99\\u0BC8'", "'\\u0B9A\\u0BC8'", "'\\u0B9E\\u0BC8'", + "'\\u0B9F\\u0BC8'", "'\\u0BA3\\u0BC8'", "'\\u0BA4\\u0BC8'", + "'\\u0BA8\\u0BC8'", "'\\u0BAA\\u0BC8'", "'\\u0BAE\\u0BC8'", + "'\\u0BAF\\u0BC8'", "'\\u0BB0\\u0BC8'", "'\\u0BB2\\u0BC8'", + "'\\u0BB5\\u0BC8'", "'\\u0BB4\\u0BC8'", "'\\u0BB3\\u0BC8'", + "'\\u0BB1\\u0BC8'", "'\\u0BA9\\u0BC8'", "'\\u0B85'", + "'\\u0B87'", "'\\u0B89'", "'\\u0B8E'", "'\\u0B92'", + "'\\u0B95'", "'\\u0B95\\u0BBF'", "'\\u0B95\\u0BC1'", + "'\\u0B95\\u0BC6'", "'\\u0B95\\u0BCA'", "'\\u0B99'", + "'\\u0B99\\u0BBF'", "'\\u0B99\\u0BC1'", "'\\u0B99\\u0BC6'", + "'\\u0B99\\u0BCA'", "'\\u0B9A'", "'\\u0B9A\\u0BBF'", + "'\\u0B9A\\u0BC1'", "'\\u0B9A\\u0BC6'", "'\\u0B9A\\u0BCA'", + "'\\u0B9E'", "'\\u0B9E\\u0BBF'", "'\\u0B9E\\u0BC1'", + "'\\u0B9E\\u0BC6'", "'\\u0B9E\\u0BCA'", "'\\u0B9F'", + "'\\u0B9F\\u0BBF'", "'\\u0B9F\\u0BC1'", "'\\u0B9F\\u0BC6'", + "'\\u0B9F\\u0BCA'", "'\\u0BA3'", "'\\u0BA3\\u0BBF'", + "'\\u0BA3\\u0BC1'", "'\\u0BA3\\u0BC6'", "'\\u0BA3\\u0BCA'", + "'\\u0BA4'", "'\\u0BA4\\u0BBF'", "'\\u0BA4\\u0BC1'", + "'\\u0BA4\\u0BC6'", "'\\u0BA4\\u0BCA'", "'\\u0BA8'", + "'\\u0BA8\\u0BBF'", "'\\u0BA8\\u0BC1'", "'\\u0BA8\\u0BC6'", + "'\\u0BA8\\u0BCA'", "'\\u0BAA'", "'\\u0BAA\\u0BBF'", + "'\\u0BAA\\u0BC1'", "'\\u0BAA\\u0BC6'", "'\\u0BAA\\u0BCA'", + "'\\u0BAE'", "'\\u0BAE\\u0BBF'", "'\\u0BAE\\u0BC1'", + "'\\u0BAE\\u0BC6'", "'\\u0BAE\\u0BCA'", "'\\u0BAF'", + "'\\u0BAF\\u0BBF'", "'\\u0BAF\\u0BC1'", "'\\u0BAF\\u0BC6'", + "'\\u0BAF\\u0BCA'", "'\\u0BB0'", "'\\u0BB0\\u0BBF'", + "'\\u0BB0\\u0BC1'", "'\\u0BB0\\u0BC6'", "'\\u0BB0\\u0BCA'", + "'\\u0BB2'", "'\\u0BB2\\u0BBF'", "'\\u0BB2\\u0BC1'", + "'\\u0BB2\\u0BC6'", "'\\u0BB2\\u0BCA'", "'\\u0BB5'", + "'\\u0BB5\\u0BBF'", "'\\u0BB5\\u0BC1'", "'\\u0BB5\\u0BC6'", + "'\\u0BB5\\u0BCA'", "'\\u0BB4'", "'\\u0BB4\\u0BBF'", + "'\\u0BB4\\u0BC1'", "'\\u0BB4\\u0BC6'", "'\\u0BB4\\u0BCA'", + "'\\u0BB3'", "'\\u0BB3\\u0BBF'", "'\\u0BB3\\u0BC1'", + "'\\u0BB3\\u0BC6'", "'\\u0BB3\\u0BCA'", "'\\u0BB1'", + "'\\u0BB1\\u0BBF'", "'\\u0BB1\\u0BC1'", "'\\u0BB1\\u0BC6'", + "'\\u0BB1\\u0BCA'", "'\\u0BA9'", "'\\u0BA9\\u0BBF'", + "'\\u0BA9\\u0BC1'", "'\\u0BA9\\u0BC6'", "'\\u0BA9\\u0BCA'", + "'\\u0B86'", "'\\u0B88'", "'\\u0B8A'", "'\\u0B8F'", + "'\\u0B90'", "'\\u0B93'", "'\\u0B94'", "'\\u0B95\\u0BBE'", + "'\\u0B95\\u0BC0'", "'\\u0B95\\u0BC2'", "'\\u0B95\\u0BC7'", + "'\\u0B95\\u0BCB'", "'\\u0B95\\u0BCC'", "'\\u0B99\\u0BBE'", + "'\\u0B99\\u0BC0'", "'\\u0B99\\u0BC2'", "'\\u0B99\\u0BC7'", "'\\u0B99\\u0BCB'", "'\\u0B99\\u0BCC'", "'\\u0B9A\\u0BBE'", "'\\u0B9A\\u0BC0'", "'\\u0B9A\\u0BC2'", "'\\u0B9A\\u0BC7'", - "'\\u0B9A\\u0BC8'", "'\\u0B9A\\u0BCB'", "'\\u0B9A\\u0BCC'", - "'\\u0B9E\\u0BBE'", "'\\u0B9E\\u0BC0'", "'\\u0B9E\\u0BC2'", - "'\\u0B9E\\u0BC7'", "'\\u0B9E\\u0BC8'", "'\\u0B9E\\u0BCB'", - "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", "'\\u0B9F\\u0BC0'", - "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", "'\\u0B9F\\u0BC8'", + "'\\u0B9A\\u0BCB'", "'\\u0B9A\\u0BCC'", "'\\u0B9E\\u0BBE'", + "'\\u0B9E\\u0BC0'", "'\\u0B9E\\u0BC2'", "'\\u0B9E\\u0BC7'", + "'\\u0B9E\\u0BCB'", "'\\u0B9E\\u0BCC'", "'\\u0B9F\\u0BBE'", + "'\\u0B9F\\u0BC0'", "'\\u0B9F\\u0BC2'", "'\\u0B9F\\u0BC7'", "'\\u0B9F\\u0BCB'", "'\\u0B9F\\u0BCC'", "'\\u0BA3\\u0BBE'", "'\\u0BA3\\u0BC0'", "'\\u0BA3\\u0BC2'", "'\\u0BA3\\u0BC7'", - "'\\u0BA3\\u0BC8'", "'\\u0BA3\\u0BCB'", "'\\u0BA3\\u0BCC'", - "'\\u0BA4\\u0BBE'", "'\\u0BA4\\u0BC0'", "'\\u0BA4\\u0BC2'", - "'\\u0BA4\\u0BC7'", "'\\u0BA4\\u0BC8'", "'\\u0BA4\\u0BCB'", - "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", "'\\u0BA8\\u0BC0'", - "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", "'\\u0BA8\\u0BC8'", + "'\\u0BA3\\u0BCB'", "'\\u0BA3\\u0BCC'", "'\\u0BA4\\u0BBE'", + "'\\u0BA4\\u0BC0'", "'\\u0BA4\\u0BC2'", "'\\u0BA4\\u0BC7'", + "'\\u0BA4\\u0BCB'", "'\\u0BA4\\u0BCC'", "'\\u0BA8\\u0BBE'", + "'\\u0BA8\\u0BC0'", "'\\u0BA8\\u0BC2'", "'\\u0BA8\\u0BC7'", "'\\u0BA8\\u0BCB'", "'\\u0BA8\\u0BCC'", "'\\u0BAA\\u0BBE'", "'\\u0BAA\\u0BC0'", "'\\u0BAA\\u0BC2'", "'\\u0BAA\\u0BC7'", - "'\\u0BAA\\u0BC8'", "'\\u0BAA\\u0BCB'", "'\\u0BAA\\u0BCC'", - "'\\u0BAE\\u0BBE'", "'\\u0BAE\\u0BC0'", "'\\u0BAE\\u0BC2'", - "'\\u0BAE\\u0BC7'", "'\\u0BAE\\u0BC8'", "'\\u0BAE\\u0BCB'", - "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", "'\\u0BAF\\u0BC0'", - "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", "'\\u0BAF\\u0BC8'", + "'\\u0BAA\\u0BCB'", "'\\u0BAA\\u0BCC'", "'\\u0BAE\\u0BBE'", + "'\\u0BAE\\u0BC0'", "'\\u0BAE\\u0BC2'", "'\\u0BAE\\u0BC7'", + "'\\u0BAE\\u0BCB'", "'\\u0BAE\\u0BCC'", "'\\u0BAF\\u0BBE'", + "'\\u0BAF\\u0BC0'", "'\\u0BAF\\u0BC2'", "'\\u0BAF\\u0BC7'", "'\\u0BAF\\u0BCB'", "'\\u0BAF\\u0BCC'", "'\\u0BB0\\u0BBE'", "'\\u0BB0\\u0BC0'", "'\\u0BB0\\u0BC2'", "'\\u0BB0\\u0BC7'", - "'\\u0BB0\\u0BC8'", "'\\u0BB0\\u0BCB'", "'\\u0BB0\\u0BCC'", - "'\\u0BB2\\u0BBE'", "'\\u0BB2\\u0BC0'", "'\\u0BB2\\u0BC2'", - "'\\u0BB2\\u0BC7'", "'\\u0BB2\\u0BC8'", "'\\u0BB2\\u0BCB'", - "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", "'\\u0BB5\\u0BC0'", - "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", "'\\u0BB5\\u0BC8'", + "'\\u0BB0\\u0BCB'", "'\\u0BB0\\u0BCC'", "'\\u0BB2\\u0BBE'", + "'\\u0BB2\\u0BC0'", "'\\u0BB2\\u0BC2'", "'\\u0BB2\\u0BC7'", + "'\\u0BB2\\u0BCB'", "'\\u0BB2\\u0BCC'", "'\\u0BB5\\u0BBE'", + "'\\u0BB5\\u0BC0'", "'\\u0BB5\\u0BC2'", "'\\u0BB5\\u0BC7'", "'\\u0BB5\\u0BCB'", "'\\u0BB5\\u0BCC'", "'\\u0BB4\\u0BBE'", "'\\u0BB4\\u0BC0'", "'\\u0BB4\\u0BC2'", "'\\u0BB4\\u0BC7'", - "'\\u0BB4\\u0BC8'", "'\\u0BB4\\u0BCB'", "'\\u0BB4\\u0BCC'", - "'\\u0BB3\\u0BBE'", "'\\u0BB3\\u0BC0'", "'\\u0BB3\\u0BC2'", - "'\\u0BB3\\u0BC7'", "'\\u0BB3\\u0BC8'", "'\\u0BB3\\u0BCB'", - "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", "'\\u0BB1\\u0BC0'", - "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", "'\\u0BB1\\u0BC8'", + "'\\u0BB4\\u0BCB'", "'\\u0BB4\\u0BCC'", "'\\u0BB3\\u0BBE'", + "'\\u0BB3\\u0BC0'", "'\\u0BB3\\u0BC2'", "'\\u0BB3\\u0BC7'", + "'\\u0BB3\\u0BCB'", "'\\u0BB3\\u0BCC'", "'\\u0BB1\\u0BBE'", + "'\\u0BB1\\u0BC0'", "'\\u0BB1\\u0BC2'", "'\\u0BB1\\u0BC7'", "'\\u0BB1\\u0BCB'", "'\\u0BB1\\u0BCC'", "'\\u0BA9\\u0BBE'", "'\\u0BA9\\u0BC0'", "'\\u0BA9\\u0BC2'", "'\\u0BA9\\u0BC7'", - "'\\u0BA9\\u0BC8'", "'\\u0BA9\\u0BCB'", "'\\u0BA9\\u0BCC'", - "'\\u0B83'", "' '" ] + "'\\u0BA9\\u0BCB'", "'\\u0BA9\\u0BCC'" ] symbolicNames = [ "", "", "", "", "", "", "", "", @@ -332,7 +333,7 @@ class வெண்பாParser ( Parser ): "", "", "", "", "", "", "", "", "", "", "", "", - "", "I" ] + "I", "NL" ] RULE_வெண்பா = 0 RULE_குறள்_வெண்பா = 1 @@ -344,66 +345,68 @@ class வெண்பாParser ( Parser ): RULE_ஈற்றடி = 7 RULE_சீர் = 8 RULE_ஈற்றுச்சீர் = 9 - RULE_தேமா = 10 - RULE_புளிமா = 11 - RULE_கருவிளம் = 12 - RULE_கூவிளம் = 13 - RULE_தேமாங்காய் = 14 - RULE_புளிமாங்காய் = 15 - RULE_கருவிளங்காய் = 16 - RULE_கூவிளங்காய் = 17 - RULE_நாள் = 18 - RULE_மலர் = 19 - RULE_காசு = 20 - RULE_பிறப்பு = 21 - RULE_வஞ்சிச்_சீர் = 22 - RULE_இயற்சீர் = 23 - RULE_மாச்சீர் = 24 - RULE_விளச்சீர் = 25 - RULE_வெண்சீர் = 26 - RULE_நாலசை = 27 - RULE_மூவசை = 28 - RULE_ஈரசை = 29 - RULE_தேமாந்தண்பூ = 30 - RULE_தேமாந்தண்ணிழல் = 31 - RULE_தேமாநறும்பூ = 32 - RULE_தேமாநறுநிழல் = 33 - RULE_புளிமாந்தண்பூ = 34 - RULE_புளிமாந்தண்ணிழல் = 35 - RULE_புளிமாநறும்பூ = 36 - RULE_புளிமாநறுநிழல் = 37 - RULE_கருவிளந்தண்பூ = 38 - RULE_கருவிளந்தண்ணிழல் = 39 - RULE_கருவிளநறும்பூ = 40 - RULE_கருவிளநறுநிழல் = 41 - RULE_கூவிளந்தண்பூ = 42 - RULE_கூவிளந்தண்ணிழல் = 43 - RULE_கூவிளநறும்பூ = 44 - RULE_கூவிளநறுநிழல் = 45 - RULE_தேமாங்கனி = 46 - RULE_புளிமாங்கனி = 47 - RULE_கருவிளங்கனி = 48 - RULE_கூவிளங்கனி = 49 + RULE_நாள் = 10 + RULE_மலர் = 11 + RULE_காசு = 12 + RULE_பிறப்பு = 13 + RULE_வஞ்சிச்_சீர் = 14 + RULE_இயற்சீர் = 15 + RULE_மாச்சீர் = 16 + RULE_விளச்சீர் = 17 + RULE_வெண்சீர் = 18 + RULE_நாலசை = 19 + RULE_மூவசை = 20 + RULE_ஈரசை = 21 + RULE_தேமாந்தண்பூ = 22 + RULE_தேமாந்தண்ணிழல் = 23 + RULE_தேமாநறும்பூ = 24 + RULE_தேமாநறுநிழல் = 25 + RULE_புளிமாந்தண்பூ = 26 + RULE_புளிமாந்தண்ணிழல் = 27 + RULE_புளிமாநறும்பூ = 28 + RULE_புளிமாநறுநிழல் = 29 + RULE_கருவிளந்தண்பூ = 30 + RULE_கருவிளந்தண்ணிழல் = 31 + RULE_கருவிளநறும்பூ = 32 + RULE_கருவிளநறுநிழல் = 33 + RULE_கூவிளந்தண்பூ = 34 + RULE_கூவிளந்தண்ணிழல் = 35 + RULE_கூவிளநறும்பூ = 36 + RULE_கூவிளநறுநிழல் = 37 + RULE_தேமாங்காய் = 38 + RULE_தேமாங்கனி = 39 + RULE_புளிமாங்காய் = 40 + RULE_புளிமாங்கனி = 41 + RULE_கருவிளங்காய் = 42 + RULE_கருவிளங்கனி = 43 + RULE_கூவிளங்காய் = 44 + RULE_கூவிளங்கனி = 45 + RULE_தேமா = 46 + RULE_புளிமா = 47 + RULE_கருவிளம் = 48 + RULE_கூவிளம் = 49 RULE_நேர் = 50 - RULE_நிரை = 51 - RULE_ஒற்று = 52 - RULE_குறில் = 53 - RULE_நெடில் = 54 - RULE_ஆய்தம் = 55 + RULE_முதல்நிரை = 51 + RULE_நிரை = 52 + RULE_ஒற்று = 53 + RULE_ஆய்தம் = 54 + RULE_ஐகாரக்குறுக்கம் = 55 + RULE_குறில் = 56 + RULE_நெடில் = 57 ruleNames = [ "வெண்பா", "குறள்_வெண்பா", "சிந்தியல்_வெண்பா", "நேரிசை_வெண்பா", "பஃறொடை_வெண்பா", "கலி_வெண்பா", "அடி", "ஈற்றடி", "சீர்", - "ஈற்றுச்சீர்", "தேமா", "புளிமா", "கருவிளம்", "கூவிளம்", - "தேமாங்காய்", "புளிமாங்காய்", "கருவிளங்காய்", "கூவிளங்காய்", - "நாள்", "மலர்", "காசு", "பிறப்பு", "வஞ்சிச்_சீர்", "இயற்சீர்", - "மாச்சீர்", "விளச்சீர்", "வெண்சீர்", "நாலசை", "மூவசை", - "ஈரசை", "தேமாந்தண்பூ", "தேமாந்தண்ணிழல்", "தேமாநறும்பூ", + "ஈற்றுச்சீர்", "நாள்", "மலர்", "காசு", "பிறப்பு", "வஞ்சிச்_சீர்", + "இயற்சீர்", "மாச்சீர்", "விளச்சீர்", "வெண்சீர்", "நாலசை", + "மூவசை", "ஈரசை", "தேமாந்தண்பூ", "தேமாந்தண்ணிழல்", "தேமாநறும்பூ", "தேமாநறுநிழல்", "புளிமாந்தண்பூ", "புளிமாந்தண்ணிழல்", "புளிமாநறும்பூ", "புளிமாநறுநிழல்", "கருவிளந்தண்பூ", "கருவிளந்தண்ணிழல்", "கருவிளநறும்பூ", "கருவிளநறுநிழல்", "கூவிளந்தண்பூ", "கூவிளந்தண்ணிழல்", - "கூவிளநறும்பூ", "கூவிளநறுநிழல்", "தேமாங்கனி", "புளிமாங்கனி", - "கருவிளங்கனி", "கூவிளங்கனி", "நேர்", "நிரை", "ஒற்று", - "குறில்", "நெடில்", "ஆய்தம்" ] + "கூவிளநறும்பூ", "கூவிளநறுநிழல்", "தேமாங்காய்", "தேமாங்கனி", + "புளிமாங்காய்", "புளிமாங்கனி", "கருவிளங்காய்", "கருவிளங்கனி", + "கூவிளங்காய்", "கூவிளங்கனி", "தேமா", "புளிமா", "கருவிளம்", + "கூவிளம்", "நேர்", "முதல்நிரை", "நிரை", "ஒற்று", "ஆய்தம்", + "ஐகாரக்குறுக்கம்", "குறில்", "நெடில்" ] EOF = Token.EOF T__0=1 @@ -653,8 +656,8 @@ class வெண்பாParser ( Parser ): T__244=245 T__245=246 T__246=247 - T__247=248 - I=249 + I=248 + NL=249 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) @@ -672,6 +675,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def EOF(self): + return self.getToken(வெண்பாParser.EOF, 0) + def குறள்_வெண்பா(self): return self.getTypedRuleContext(வெண்பாParser.குறள்_வெண்பாContext,0) @@ -707,34 +713,33 @@ def வெண்பா(self): localctx = வெண்பாParser.வெண்பாContext(self, self._ctx, self.state) self.enterRule(localctx, 0, self.RULE_வெண்பா) try: - self.state = 116 + self.enterOuterAlt(localctx, 1) + self.state = 120 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,0,self._ctx) if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 112 + self.state = 116 self.குறள்_வெண்பா() pass elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 113 + self.state = 117 self.நேரிசை_வெண்பா() pass elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 114 + self.state = 118 self.பஃறொடை_வெண்பா() pass elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 115 + self.state = 119 self.கலி_வெண்பா() pass + self.state = 122 + self.match(வெண்பாParser.EOF) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -779,9 +784,9 @@ def குறள்_வெண்பா(self): self.enterRule(localctx, 2, self.RULE_குறள்_வெண்பா) try: self.enterOuterAlt(localctx, 1) - self.state = 118 + self.state = 124 self.அடி() - self.state = 119 + self.state = 125 self.ஈற்றடி() except RecognitionException as re: localctx.exception = re @@ -830,11 +835,11 @@ def சிந்தியல்_வெண்பா(self): self.enterRule(localctx, 4, self.RULE_சிந்தியல்_வெண்பா) try: self.enterOuterAlt(localctx, 1) - self.state = 121 + self.state = 127 self.அடி() - self.state = 122 + self.state = 128 self.அடி() - self.state = 123 + self.state = 129 self.ஈற்றடி() except RecognitionException as re: localctx.exception = re @@ -883,13 +888,13 @@ def நேரிசை_வெண்பா(self): self.enterRule(localctx, 6, self.RULE_நேரிசை_வெண்பா) try: self.enterOuterAlt(localctx, 1) - self.state = 125 + self.state = 131 self.அடி() - self.state = 126 + self.state = 132 self.அடி() - self.state = 127 + self.state = 133 self.அடி() - self.state = 128 + self.state = 134 self.ஈற்றடி() except RecognitionException as re: localctx.exception = re @@ -937,25 +942,11 @@ def பஃறொடை_வெண்பா(self): localctx = வெண்பாParser.பஃறொடை_வெண்பாContext(self, self._ctx, self.state) self.enterRule(localctx, 8, self.RULE_பஃறொடை_வெண்பா) try: - self.state = 206 + self.state = 212 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,1,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 130 - self.அடி() - self.state = 131 - self.அடி() - self.state = 132 - self.அடி() - self.state = 133 - self.அடி() - self.state = 134 - self.ஈற்றடி() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) self.state = 136 self.அடி() self.state = 137 @@ -965,13 +956,13 @@ def பஃறொடை_வெண்பா(self): self.state = 139 self.அடி() self.state = 140 - self.அடி() - self.state = 141 self.ஈற்றடி() pass - elif la_ == 3: - self.enterOuterAlt(localctx, 3) + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 142 + self.அடி() self.state = 143 self.அடி() self.state = 144 @@ -981,15 +972,15 @@ def பஃறொடை_வெண்பா(self): self.state = 146 self.அடி() self.state = 147 - self.அடி() - self.state = 148 - self.அடி() - self.state = 149 self.ஈற்றடி() pass - elif la_ == 4: - self.enterOuterAlt(localctx, 4) + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 149 + self.அடி() + self.state = 150 + self.அடி() self.state = 151 self.அடி() self.state = 152 @@ -999,17 +990,17 @@ def பஃறொடை_வெண்பா(self): self.state = 154 self.அடி() self.state = 155 - self.அடி() - self.state = 156 - self.அடி() - self.state = 157 - self.அடி() - self.state = 158 self.ஈற்றடி() pass - elif la_ == 5: - self.enterOuterAlt(localctx, 5) + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 157 + self.அடி() + self.state = 158 + self.அடி() + self.state = 159 + self.அடி() self.state = 160 self.அடி() self.state = 161 @@ -1019,19 +1010,19 @@ def பஃறொடை_வெண்பா(self): self.state = 163 self.அடி() self.state = 164 - self.அடி() - self.state = 165 - self.அடி() + self.ஈற்றடி() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) self.state = 166 self.அடி() self.state = 167 self.அடி() self.state = 168 - self.ஈற்றடி() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) + self.அடி() + self.state = 169 + self.அடி() self.state = 170 self.அடி() self.state = 171 @@ -1041,9 +1032,11 @@ def பஃறொடை_வெண்பா(self): self.state = 173 self.அடி() self.state = 174 - self.அடி() - self.state = 175 - self.அடி() + self.ஈற்றடி() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) self.state = 176 self.அடி() self.state = 177 @@ -1051,11 +1044,9 @@ def பஃறொடை_வெண்பா(self): self.state = 178 self.அடி() self.state = 179 - self.ஈற்றடி() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) + self.அடி() + self.state = 180 + self.அடி() self.state = 181 self.அடி() self.state = 182 @@ -1065,9 +1056,11 @@ def பஃறொடை_வெண்பா(self): self.state = 184 self.அடி() self.state = 185 - self.அடி() - self.state = 186 - self.அடி() + self.ஈற்றடி() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) self.state = 187 self.அடி() self.state = 188 @@ -1077,11 +1070,9 @@ def பஃறொடை_வெண்பா(self): self.state = 190 self.அடி() self.state = 191 - self.ஈற்றடி() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) + self.அடி() + self.state = 192 + self.அடி() self.state = 193 self.அடி() self.state = 194 @@ -1091,9 +1082,11 @@ def பஃறொடை_வெண்பா(self): self.state = 196 self.அடி() self.state = 197 - self.அடி() - self.state = 198 - self.அடி() + self.ஈற்றடி() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) self.state = 199 self.அடி() self.state = 200 @@ -1105,6 +1098,18 @@ def பஃறொடை_வெண்பா(self): self.state = 203 self.அடி() self.state = 204 + self.அடி() + self.state = 205 + self.அடி() + self.state = 206 + self.அடி() + self.state = 207 + self.அடி() + self.state = 208 + self.அடி() + self.state = 209 + self.அடி() + self.state = 210 self.ஈற்றடி() pass @@ -1156,43 +1161,43 @@ def கலி_வெண்பா(self): self.enterRule(localctx, 10, self.RULE_கலி_வெண்பா) try: self.enterOuterAlt(localctx, 1) - self.state = 208 + self.state = 214 self.அடி() - self.state = 209 + self.state = 215 self.அடி() - self.state = 210 + self.state = 216 self.அடி() - self.state = 211 + self.state = 217 self.அடி() - self.state = 212 + self.state = 218 self.அடி() - self.state = 213 + self.state = 219 self.அடி() - self.state = 214 + self.state = 220 self.அடி() - self.state = 215 + self.state = 221 self.அடி() - self.state = 216 + self.state = 222 self.அடி() - self.state = 217 + self.state = 223 self.அடி() - self.state = 218 + self.state = 224 self.அடி() - self.state = 220 + self.state = 226 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 219 + self.state = 225 self.அடி() else: raise NoViableAltException(self) - self.state = 222 + self.state = 228 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,2,self._ctx) - self.state = 224 + self.state = 230 self.ஈற்றடி() except RecognitionException as re: localctx.exception = re @@ -1223,6 +1228,9 @@ def I(self, i:int=None): else: return self.getToken(வெண்பாParser.I, i) + def NL(self): + return self.getToken(வெண்பாParser.NL, 0) + def getRuleIndex(self): return வெண்பாParser.RULE_அடி @@ -1243,22 +1251,22 @@ def அடி(self): self.enterRule(localctx, 12, self.RULE_அடி) try: self.enterOuterAlt(localctx, 1) - self.state = 226 + self.state = 232 self.சீர்() - self.state = 227 + self.state = 233 self.match(வெண்பாParser.I) - self.state = 228 + self.state = 234 self.சீர்() - self.state = 229 + self.state = 235 self.match(வெண்பாParser.I) - self.state = 230 + self.state = 236 self.சீர்() - self.state = 231 + self.state = 237 self.match(வெண்பாParser.I) - self.state = 232 + self.state = 238 self.சீர்() - self.state = 233 - self.match(வெண்பாParser.T__0) + self.state = 239 + self.match(வெண்பாParser.NL) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1312,15 +1320,15 @@ def ஈற்றடி(self): self.enterRule(localctx, 14, self.RULE_ஈற்றடி) try: self.enterOuterAlt(localctx, 1) - self.state = 235 + self.state = 241 self.சீர்() - self.state = 236 + self.state = 242 self.match(வெண்பாParser.I) - self.state = 237 + self.state = 243 self.சீர்() - self.state = 238 + self.state = 244 self.match(வெண்பாParser.I) - self.state = 239 + self.state = 245 self.ஈற்றுச்சீர்() except RecognitionException as re: localctx.exception = re @@ -1389,54 +1397,54 @@ def சீர்(self): localctx = வெண்பாParser.சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 16, self.RULE_சீர்) try: - self.state = 249 + self.state = 255 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,3,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 241 + self.state = 247 self.தேமா() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 242 + self.state = 248 self.புளிமா() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 243 + self.state = 249 self.கருவிளம்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 244 + self.state = 250 self.கூவிளம்() pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 245 + self.state = 251 self.தேமாங்காய்() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 246 + self.state = 252 self.புளிமாங்காய்() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 247 + self.state = 253 self.கருவிளங்காய்() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 248 + self.state = 254 self.கூவிளங்காய்() pass @@ -1492,30 +1500,30 @@ def ஈற்றுச்சீர்(self): localctx = வெண்பாParser.ஈற்றுச்சீர்Context(self, self._ctx, self.state) self.enterRule(localctx, 18, self.RULE_ஈற்றுச்சீர்) try: - self.state = 255 + self.state = 261 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,4,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 251 + self.state = 257 self.நாள்() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 252 + self.state = 258 self.மலர்() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 253 + self.state = 259 self.காசு() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 254 + self.state = 260 self.பிறப்பு() pass @@ -1529,43 +1537,38 @@ def ஈற்றுச்சீர்(self): return localctx - class தேமாContext(ParserRuleContext): + class நாள்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def நேர்(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(வெண்பாParser.நேர்Context) - else: - return self.getTypedRuleContext(வெண்பாParser.நேர்Context,i) + def நேர்(self): + return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_தேமா + return வெண்பாParser.RULE_நாள் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterதேமா" ): - listener.enterதேமா(self) + if hasattr( listener, "enterநாள்" ): + listener.enterநாள்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitதேமா" ): - listener.exitதேமா(self) + if hasattr( listener, "exitநாள்" ): + listener.exitநாள்(self) - def தேமா(self): + def நாள்(self): - localctx = வெண்பாParser.தேமாContext(self, self._ctx, self.state) - self.enterRule(localctx, 20, self.RULE_தேமா) + localctx = வெண்பாParser.நாள்Context(self, self._ctx, self.state) + self.enterRule(localctx, 20, self.RULE_நாள்) try: self.enterOuterAlt(localctx, 1) - self.state = 257 - self.நேர்() - self.state = 258 + self.state = 263 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -1576,45 +1579,39 @@ def தேமா(self): return localctx - class புளிமாContext(ParserRuleContext): + class மலர்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def நிரை(self): - return self.getTypedRuleContext(வெண்பாParser.நிரைContext,0) - - - def நேர்(self): - return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) + def முதல்நிரை(self): + return self.getTypedRuleContext(வெண்பாParser.முதல்நிரைContext,0) def getRuleIndex(self): - return வெண்பாParser.RULE_புளிமா + return வெண்பாParser.RULE_மலர் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterபுளிமா" ): - listener.enterபுளிமா(self) + if hasattr( listener, "enterமலர்" ): + listener.enterமலர்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitபுளிமா" ): - listener.exitபுளிமா(self) + if hasattr( listener, "exitமலர்" ): + listener.exitமலர்(self) - def புளிமா(self): + def மலர்(self): - localctx = வெண்பாParser.புளிமாContext(self, self._ctx, self.state) - self.enterRule(localctx, 22, self.RULE_புளிமா) + localctx = வெண்பாParser.மலர்Context(self, self._ctx, self.state) + self.enterRule(localctx, 22, self.RULE_மலர்) try: self.enterOuterAlt(localctx, 1) - self.state = 260 - self.நிரை() - self.state = 261 - self.நேர்() + self.state = 265 + self.முதல்நிரை() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1624,44 +1621,44 @@ def புளிமா(self): return localctx - class கருவிளம்Context(ParserRuleContext): + class காசுContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def நிரை(self, i:int=None): + def நேர்(self, i:int=None): if i is None: - return self.getTypedRuleContexts(வெண்பாParser.நிரைContext) + return self.getTypedRuleContexts(வெண்பாParser.நேர்Context) else: - return self.getTypedRuleContext(வெண்பாParser.நிரைContext,i) + return self.getTypedRuleContext(வெண்பாParser.நேர்Context,i) def getRuleIndex(self): - return வெண்பாParser.RULE_கருவிளம் + return வெண்பாParser.RULE_காசு def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகருவிளம்" ): - listener.enterகருவிளம்(self) + if hasattr( listener, "enterகாசு" ): + listener.enterகாசு(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகருவிளம்" ): - listener.exitகருவிளம்(self) + if hasattr( listener, "exitகாசு" ): + listener.exitகாசு(self) - def கருவிளம்(self): + def காசு(self): - localctx = வெண்பாParser.கருவிளம்Context(self, self._ctx, self.state) - self.enterRule(localctx, 24, self.RULE_கருவிளம்) + localctx = வெண்பாParser.காசுContext(self, self._ctx, self.state) + self.enterRule(localctx, 24, self.RULE_காசு) try: self.enterOuterAlt(localctx, 1) - self.state = 263 - self.நிரை() - self.state = 264 - self.நிரை() + self.state = 267 + self.நேர்() + self.state = 268 + self.நேர்() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1671,45 +1668,45 @@ def கருவிளம்(self): return localctx - class கூவிளம்Context(ParserRuleContext): + class பிறப்புContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def நேர்(self): - return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) + def முதல்நிரை(self): + return self.getTypedRuleContext(வெண்பாParser.முதல்நிரைContext,0) - def நிரை(self): - return self.getTypedRuleContext(வெண்பாParser.நிரைContext,0) + def நேர்(self): + return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_கூவிளம் + return வெண்பாParser.RULE_பிறப்பு def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகூவிளம்" ): - listener.enterகூவிளம்(self) + if hasattr( listener, "enterபிறப்பு" ): + listener.enterபிறப்பு(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகூவிளம்" ): - listener.exitகூவிளம்(self) + if hasattr( listener, "exitபிறப்பு" ): + listener.exitபிறப்பு(self) - def கூவிளம்(self): + def பிறப்பு(self): - localctx = வெண்பாParser.கூவிளம்Context(self, self._ctx, self.state) - self.enterRule(localctx, 26, self.RULE_கூவிளம்) + localctx = வெண்பாParser.பிறப்புContext(self, self._ctx, self.state) + self.enterRule(localctx, 26, self.RULE_பிறப்பு) try: self.enterOuterAlt(localctx, 1) - self.state = 266 + self.state = 270 + self.முதல்நிரை() + self.state = 271 self.நேர்() - self.state = 267 - self.நிரை() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1719,45 +1716,76 @@ def கூவிளம்(self): return localctx - class தேமாங்காய்Context(ParserRuleContext): + class வஞ்சிச்_சீர்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமா(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாContext,0) + def தேமாங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாங்கனிContext,0) - def நேர்(self): - return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) + def புளிமாங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாங்கனிContext,0) + + + def கருவிளங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளங்கனிContext,0) + + + def கூவிளங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளங்கனிContext,0) def getRuleIndex(self): - return வெண்பாParser.RULE_தேமாங்காய் + return வெண்பாParser.RULE_வஞ்சிச்_சீர் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterதேமாங்காய்" ): - listener.enterதேமாங்காய்(self) + if hasattr( listener, "enterவஞ்சிச்_சீர்" ): + listener.enterவஞ்சிச்_சீர்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitதேமாங்காய்" ): - listener.exitதேமாங்காய்(self) + if hasattr( listener, "exitவஞ்சிச்_சீர்" ): + listener.exitவஞ்சிச்_சீர்(self) - def தேமாங்காய்(self): + def வஞ்சிச்_சீர்(self): - localctx = வெண்பாParser.தேமாங்காய்Context(self, self._ctx, self.state) - self.enterRule(localctx, 28, self.RULE_தேமாங்காய்) + localctx = வெண்பாParser.வஞ்சிச்_சீர்Context(self, self._ctx, self.state) + self.enterRule(localctx, 28, self.RULE_வஞ்சிச்_சீர்) try: - self.enterOuterAlt(localctx, 1) - self.state = 269 - self.தேமா() - self.state = 270 - self.நேர்() + self.state = 277 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,5,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 273 + self.தேமாங்கனி() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 274 + self.புளிமாங்கனி() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 275 + self.கருவிளங்கனி() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 276 + self.கூவிளங்கனி() + pass + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1767,45 +1795,76 @@ def தேமாங்காய்(self): return localctx - class புளிமாங்காய்Context(ParserRuleContext): + class இயற்சீர்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def தேமா(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாContext,0) + + def புளிமா(self): return self.getTypedRuleContext(வெண்பாParser.புளிமாContext,0) - def நேர்(self): - return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) + def கருவிளம்(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளம்Context,0) + + + def கூவிளம்(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளம்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_புளிமாங்காய் + return வெண்பாParser.RULE_இயற்சீர் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterபுளிமாங்காய்" ): - listener.enterபுளிமாங்காய்(self) + if hasattr( listener, "enterஇயற்சீர்" ): + listener.enterஇயற்சீர்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitபுளிமாங்காய்" ): - listener.exitபுளிமாங்காய்(self) + if hasattr( listener, "exitஇயற்சீர்" ): + listener.exitஇயற்சீர்(self) - def புளிமாங்காய்(self): + def இயற்சீர்(self): - localctx = வெண்பாParser.புளிமாங்காய்Context(self, self._ctx, self.state) - self.enterRule(localctx, 30, self.RULE_புளிமாங்காய்) + localctx = வெண்பாParser.இயற்சீர்Context(self, self._ctx, self.state) + self.enterRule(localctx, 30, self.RULE_இயற்சீர்) try: - self.enterOuterAlt(localctx, 1) - self.state = 272 - self.புளிமா() - self.state = 273 - self.நேர்() + self.state = 283 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,6,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 279 + self.தேமா() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 280 + self.புளிமா() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 281 + self.கருவிளம்() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 282 + self.கூவிளம்() + pass + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1815,45 +1874,56 @@ def புளிமாங்காய்(self): return localctx - class கருவிளங்காய்Context(ParserRuleContext): + class மாச்சீர்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கருவிளம்(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளம்Context,0) + def தேமா(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாContext,0) - def நேர்(self): - return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) + def புளிமா(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாContext,0) def getRuleIndex(self): - return வெண்பாParser.RULE_கருவிளங்காய் + return வெண்பாParser.RULE_மாச்சீர் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகருவிளங்காய்" ): - listener.enterகருவிளங்காய்(self) + if hasattr( listener, "enterமாச்சீர்" ): + listener.enterமாச்சீர்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகருவிளங்காய்" ): - listener.exitகருவிளங்காய்(self) + if hasattr( listener, "exitமாச்சீர்" ): + listener.exitமாச்சீர்(self) - def கருவிளங்காய்(self): + def மாச்சீர்(self): - localctx = வெண்பாParser.கருவிளங்காய்Context(self, self._ctx, self.state) - self.enterRule(localctx, 32, self.RULE_கருவிளங்காய்) + localctx = வெண்பாParser.மாச்சீர்Context(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_மாச்சீர்) try: - self.enterOuterAlt(localctx, 1) - self.state = 275 - self.கருவிளம்() - self.state = 276 - self.நேர்() + self.state = 287 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,7,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 285 + self.தேமா() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 286 + self.புளிமா() + pass + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1863,45 +1933,56 @@ def கருவிளங்காய்(self): return localctx - class கூவிளங்காய்Context(ParserRuleContext): + class விளச்சீர்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கூவிளம்(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளம்Context,0) + def கருவிளம்(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளம்Context,0) - def நேர்(self): - return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) + def கூவிளம்(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளம்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_கூவிளங்காய் + return வெண்பாParser.RULE_விளச்சீர் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகூவிளங்காய்" ): - listener.enterகூவிளங்காய்(self) + if hasattr( listener, "enterவிளச்சீர்" ): + listener.enterவிளச்சீர்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகூவிளங்காய்" ): - listener.exitகூவிளங்காய்(self) + if hasattr( listener, "exitவிளச்சீர்" ): + listener.exitவிளச்சீர்(self) - def கூவிளங்காய்(self): + def விளச்சீர்(self): - localctx = வெண்பாParser.கூவிளங்காய்Context(self, self._ctx, self.state) - self.enterRule(localctx, 34, self.RULE_கூவிளங்காய்) + localctx = வெண்பாParser.விளச்சீர்Context(self, self._ctx, self.state) + self.enterRule(localctx, 34, self.RULE_விளச்சீர்) try: - self.enterOuterAlt(localctx, 1) - self.state = 278 - self.கூவிளம்() - self.state = 279 - self.நேர்() + self.state = 291 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,8,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 289 + self.கருவிளம்() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 290 + self.கூவிளம்() + pass + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1911,39 +1992,76 @@ def கூவிளங்காய்(self): return localctx - class நாள்Context(ParserRuleContext): + class வெண்சீர்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def நேர்(self): - return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) + def தேமாங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாங்காய்Context,0) + + + def புளிமாங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாங்காய்Context,0) + + + def கருவிளங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளங்காய்Context,0) + + + def கூவிளங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளங்காய்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_நாள் + return வெண்பாParser.RULE_வெண்சீர் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterநாள்" ): - listener.enterநாள்(self) + if hasattr( listener, "enterவெண்சீர்" ): + listener.enterவெண்சீர்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitநாள்" ): - listener.exitநாள்(self) + if hasattr( listener, "exitவெண்சீர்" ): + listener.exitவெண்சீர்(self) - def நாள்(self): + def வெண்சீர்(self): - localctx = வெண்பாParser.நாள்Context(self, self._ctx, self.state) - self.enterRule(localctx, 36, self.RULE_நாள்) + localctx = வெண்பாParser.வெண்சீர்Context(self, self._ctx, self.state) + self.enterRule(localctx, 36, self.RULE_வெண்சீர்) try: - self.enterOuterAlt(localctx, 1) - self.state = 281 - self.நேர்() + self.state = 297 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,9,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 293 + self.தேமாங்காய்() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 294 + self.புளிமாங்காய்() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 295 + self.கருவிளங்காய்() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 296 + self.கூவிளங்காய்() + pass + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1953,134 +2071,196 @@ def நாள்(self): return localctx - class மலர்Context(ParserRuleContext): + class நாலசைContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def நிரை(self): - return self.getTypedRuleContext(வெண்பாParser.நிரைContext,0) + def தேமாந்தண்பூ(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாந்தண்பூContext,0) - def getRuleIndex(self): - return வெண்பாParser.RULE_மலர் + def புளிமாந்தண்பூ(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாந்தண்பூContext,0) - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterமலர்" ): - listener.enterமலர்(self) - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitமலர்" ): - listener.exitமலர்(self) + def கருவிளந்தண்பூ(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளந்தண்பூContext,0) + def கூவிளந்தண்பூ(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளந்தண்பூContext,0) - def மலர்(self): + def தேமாநறும்பூ(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாநறும்பூContext,0) - localctx = வெண்பாParser.மலர்Context(self, self._ctx, self.state) - self.enterRule(localctx, 38, self.RULE_மலர்) - try: - self.enterOuterAlt(localctx, 1) - self.state = 283 - self.நிரை() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx + def புளிமாநறும்பூ(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாநறும்பூContext,0) - class காசுContext(ParserRuleContext): - __slots__ = 'parser' - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser + def கருவிளநறும்பூ(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளநறும்பூContext,0) - def நேர்(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(வெண்பாParser.நேர்Context) - else: - return self.getTypedRuleContext(வெண்பாParser.நேர்Context,i) + def கூவிளநறும்பூ(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளநறும்பூContext,0) - def getRuleIndex(self): - return வெண்பாParser.RULE_காசு - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகாசு" ): - listener.enterகாசு(self) + def தேமாந்தண்ணிழல்(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாந்தண்ணிழல்Context,0) - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகாசு" ): - listener.exitகாசு(self) + def புளிமாந்தண்ணிழல்(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாந்தண்ணிழல்Context,0) + def கருவிளந்தண்ணிழல்(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளந்தண்ணிழல்Context,0) - def காசு(self): - localctx = வெண்பாParser.காசுContext(self, self._ctx, self.state) - self.enterRule(localctx, 40, self.RULE_காசு) - try: - self.enterOuterAlt(localctx, 1) - self.state = 285 - self.நேர்() - self.state = 286 - self.நேர்() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx + def கூவிளந்தண்ணிழல்(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளந்தண்ணிழல்Context,0) - class பிறப்புContext(ParserRuleContext): - __slots__ = 'parser' + def தேமாநறுநிழல்(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாநறுநிழல்Context,0) - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - def நிரை(self): - return self.getTypedRuleContext(வெண்பாParser.நிரைContext,0) + def புளிமாநறுநிழல்(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாநறுநிழல்Context,0) - def நேர்(self): - return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) + def கருவிளநறுநிழல்(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளநறுநிழல்Context,0) + + + def கூவிளநறுநிழல்(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளநறுநிழல்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_பிறப்பு + return வெண்பாParser.RULE_நாலசை def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterபிறப்பு" ): - listener.enterபிறப்பு(self) + if hasattr( listener, "enterநாலசை" ): + listener.enterநாலசை(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitபிறப்பு" ): - listener.exitபிறப்பு(self) + if hasattr( listener, "exitநாலசை" ): + listener.exitநாலசை(self) - def பிறப்பு(self): + def நாலசை(self): - localctx = வெண்பாParser.பிறப்புContext(self, self._ctx, self.state) - self.enterRule(localctx, 42, self.RULE_பிறப்பு) + localctx = வெண்பாParser.நாலசைContext(self, self._ctx, self.state) + self.enterRule(localctx, 38, self.RULE_நாலசை) try: - self.enterOuterAlt(localctx, 1) - self.state = 288 - self.நிரை() - self.state = 289 - self.நேர்() + self.state = 315 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,10,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 299 + self.தேமாந்தண்பூ() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 300 + self.புளிமாந்தண்பூ() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 301 + self.கருவிளந்தண்பூ() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 302 + self.கூவிளந்தண்பூ() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 303 + self.தேமாநறும்பூ() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 304 + self.புளிமாநறும்பூ() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 305 + self.கருவிளநறும்பூ() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 306 + self.கூவிளநறும்பூ() + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 307 + self.தேமாந்தண்ணிழல்() + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 308 + self.புளிமாந்தண்ணிழல்() + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 309 + self.கருவிளந்தண்ணிழல்() + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 310 + self.கூவிளந்தண்ணிழல்() + pass + + elif la_ == 13: + self.enterOuterAlt(localctx, 13) + self.state = 311 + self.தேமாநறுநிழல்() + pass + + elif la_ == 14: + self.enterOuterAlt(localctx, 14) + self.state = 312 + self.புளிமாநறுநிழல்() + pass + + elif la_ == 15: + self.enterOuterAlt(localctx, 15) + self.state = 313 + self.கருவிளநறுநிழல்() + pass + + elif la_ == 16: + self.enterOuterAlt(localctx, 16) + self.state = 314 + self.கூவிளநறுநிழல்() + pass + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2090,13 +2270,29 @@ def பிறப்பு(self): return localctx - class வஞ்சிச்_சீர்Context(ParserRuleContext): + class மூவசைContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def தேமாங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாங்காய்Context,0) + + + def புளிமாங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாங்காய்Context,0) + + + def கருவிளங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளங்காய்Context,0) + + + def கூவிளங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளங்காய்Context,0) + + def தேமாங்கனி(self): return self.getTypedRuleContext(வெண்பாParser.தேமாங்கனிContext,0) @@ -2114,53 +2310,77 @@ def கூவிளங்கனி(self): def getRuleIndex(self): - return வெண்பாParser.RULE_வஞ்சிச்_சீர் + return வெண்பாParser.RULE_மூவசை def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterவஞ்சிச்_சீர்" ): - listener.enterவஞ்சிச்_சீர்(self) + if hasattr( listener, "enterமூவசை" ): + listener.enterமூவசை(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitவஞ்சிச்_சீர்" ): - listener.exitவஞ்சிச்_சீர்(self) + if hasattr( listener, "exitமூவசை" ): + listener.exitமூவசை(self) - def வஞ்சிச்_சீர்(self): + def மூவசை(self): - localctx = வெண்பாParser.வஞ்சிச்_சீர்Context(self, self._ctx, self.state) - self.enterRule(localctx, 44, self.RULE_வஞ்சிச்_சீர்) + localctx = வெண்பாParser.மூவசைContext(self, self._ctx, self.state) + self.enterRule(localctx, 40, self.RULE_மூவசை) try: - self.state = 295 + self.state = 325 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,5,self._ctx) + la_ = self._interp.adaptivePredict(self._input,11,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 291 - self.தேமாங்கனி() + self.state = 317 + self.தேமாங்காய்() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 292 - self.புளிமாங்கனி() + self.state = 318 + self.புளிமாங்காய்() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 293 - self.கருவிளங்கனி() + self.state = 319 + self.கருவிளங்காய்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 294 - self.கூவிளங்கனி() + self.state = 320 + self.கூவிளங்காய்() pass - - except RecognitionException as re: + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 321 + self.தேமாங்கனி() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 322 + self.புளிமாங்கனி() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 323 + self.கருவிளங்கனி() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 324 + self.கூவிளங்கனி() + pass + + + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) self._errHandler.recover(self, re) @@ -2169,7 +2389,7 @@ def வஞ்சிச்_சீர்(self): return localctx - class இயற்சீர்Context(ParserRuleContext): + class ஈரசைContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -2193,48 +2413,48 @@ def கூவிளம்(self): def getRuleIndex(self): - return வெண்பாParser.RULE_இயற்சீர் + return வெண்பாParser.RULE_ஈரசை def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterஇயற்சீர்" ): - listener.enterஇயற்சீர்(self) + if hasattr( listener, "enterஈரசை" ): + listener.enterஈரசை(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitஇயற்சீர்" ): - listener.exitஇயற்சீர்(self) + if hasattr( listener, "exitஈரசை" ): + listener.exitஈரசை(self) - def இயற்சீர்(self): + def ஈரசை(self): - localctx = வெண்பாParser.இயற்சீர்Context(self, self._ctx, self.state) - self.enterRule(localctx, 46, self.RULE_இயற்சீர்) + localctx = வெண்பாParser.ஈரசைContext(self, self._ctx, self.state) + self.enterRule(localctx, 42, self.RULE_ஈரசை) try: - self.state = 301 + self.state = 331 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,6,self._ctx) + la_ = self._interp.adaptivePredict(self._input,12,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 297 + self.state = 327 self.தேமா() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 298 + self.state = 328 self.புளிமா() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 299 + self.state = 329 self.கருவிளம்() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 300 + self.state = 330 self.கூவிளம்() pass @@ -2248,56 +2468,45 @@ def இயற்சீர்(self): return localctx - class மாச்சீர்Context(ParserRuleContext): + class தேமாந்தண்பூContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமா(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாContext,0) + def தேமாங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாங்காய்Context,0) - def புளிமா(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாContext,0) + def நேர்(self): + return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_மாச்சீர் + return வெண்பாParser.RULE_தேமாந்தண்பூ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterமாச்சீர்" ): - listener.enterமாச்சீர்(self) + if hasattr( listener, "enterதேமாந்தண்பூ" ): + listener.enterதேமாந்தண்பூ(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitமாச்சீர்" ): - listener.exitமாச்சீர்(self) + if hasattr( listener, "exitதேமாந்தண்பூ" ): + listener.exitதேமாந்தண்பூ(self) - def மாச்சீர்(self): + def தேமாந்தண்பூ(self): - localctx = வெண்பாParser.மாச்சீர்Context(self, self._ctx, self.state) - self.enterRule(localctx, 48, self.RULE_மாச்சீர்) + localctx = வெண்பாParser.தேமாந்தண்பூContext(self, self._ctx, self.state) + self.enterRule(localctx, 44, self.RULE_தேமாந்தண்பூ) try: - self.state = 305 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,7,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 303 - self.தேமா() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 304 - self.புளிமா() - pass - - + self.enterOuterAlt(localctx, 1) + self.state = 333 + self.தேமாங்காய்() + self.state = 334 + self.நேர்() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2307,56 +2516,45 @@ def மாச்சீர்(self): return localctx - class விளச்சீர்Context(ParserRuleContext): + class தேமாந்தண்ணிழல்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கருவிளம்(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளம்Context,0) + def தேமாங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாங்காய்Context,0) - def கூவிளம்(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளம்Context,0) + def நிரை(self): + return self.getTypedRuleContext(வெண்பாParser.நிரைContext,0) def getRuleIndex(self): - return வெண்பாParser.RULE_விளச்சீர் + return வெண்பாParser.RULE_தேமாந்தண்ணிழல் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterவிளச்சீர்" ): - listener.enterவிளச்சீர்(self) + if hasattr( listener, "enterதேமாந்தண்ணிழல்" ): + listener.enterதேமாந்தண்ணிழல்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitவிளச்சீர்" ): - listener.exitவிளச்சீர்(self) + if hasattr( listener, "exitதேமாந்தண்ணிழல்" ): + listener.exitதேமாந்தண்ணிழல்(self) - def விளச்சீர்(self): + def தேமாந்தண்ணிழல்(self): - localctx = வெண்பாParser.விளச்சீர்Context(self, self._ctx, self.state) - self.enterRule(localctx, 50, self.RULE_விளச்சீர்) + localctx = வெண்பாParser.தேமாந்தண்ணிழல்Context(self, self._ctx, self.state) + self.enterRule(localctx, 46, self.RULE_தேமாந்தண்ணிழல்) try: - self.state = 309 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,8,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 307 - self.கருவிளம்() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 308 - self.கூவிளம்() - pass - - + self.enterOuterAlt(localctx, 1) + self.state = 336 + self.தேமாங்காய்() + self.state = 337 + self.நிரை() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2366,76 +2564,45 @@ def விளச்சீர்(self): return localctx - class வெண்சீர்Context(ParserRuleContext): + class தேமாநறும்பூContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமாங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாங்காய்Context,0) - - - def புளிமாங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாங்காய்Context,0) - - - def கருவிளங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளங்காய்Context,0) + def தேமாங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாங்கனிContext,0) - def கூவிளங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளங்காய்Context,0) + def நேர்(self): + return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_வெண்சீர் + return வெண்பாParser.RULE_தேமாநறும்பூ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterவெண்சீர்" ): - listener.enterவெண்சீர்(self) + if hasattr( listener, "enterதேமாநறும்பூ" ): + listener.enterதேமாநறும்பூ(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitவெண்சீர்" ): - listener.exitவெண்சீர்(self) + if hasattr( listener, "exitதேமாநறும்பூ" ): + listener.exitதேமாநறும்பூ(self) - def வெண்சீர்(self): + def தேமாநறும்பூ(self): - localctx = வெண்பாParser.வெண்சீர்Context(self, self._ctx, self.state) - self.enterRule(localctx, 52, self.RULE_வெண்சீர்) + localctx = வெண்பாParser.தேமாநறும்பூContext(self, self._ctx, self.state) + self.enterRule(localctx, 48, self.RULE_தேமாநறும்பூ) try: - self.state = 315 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,9,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 311 - self.தேமாங்காய்() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 312 - self.புளிமாங்காய்() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 313 - self.கருவிளங்காய்() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 314 - self.கூவிளங்காய்() - pass - - + self.enterOuterAlt(localctx, 1) + self.state = 339 + self.தேமாங்கனி() + self.state = 340 + self.நேர்() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2445,196 +2612,141 @@ def வெண்சீர்(self): return localctx - class நாலசைContext(ParserRuleContext): + class தேமாநறுநிழல்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமாந்தண்பூ(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாந்தண்பூContext,0) - + def தேமாங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாங்கனிContext,0) - def தேமாந்தண்ணிழல்(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாந்தண்ணிழல்Context,0) + def நிரை(self): + return self.getTypedRuleContext(வெண்பாParser.நிரைContext,0) - def தேமாநறும்பூ(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாநறும்பூContext,0) + def getRuleIndex(self): + return வெண்பாParser.RULE_தேமாநறுநிழல் - def தேமாநறுநிழல்(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாநறுநிழல்Context,0) + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterதேமாநறுநிழல்" ): + listener.enterதேமாநறுநிழல்(self) + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitதேமாநறுநிழல்" ): + listener.exitதேமாநறுநிழல்(self) - def புளிமாந்தண்பூ(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாந்தண்பூContext,0) - def புளிமாந்தண்ணிழல்(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாந்தண்ணிழல்Context,0) + def தேமாநறுநிழல்(self): - def புளிமாநறும்பூ(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாநறும்பூContext,0) + localctx = வெண்பாParser.தேமாநறுநிழல்Context(self, self._ctx, self.state) + self.enterRule(localctx, 50, self.RULE_தேமாநறுநிழல்) + try: + self.enterOuterAlt(localctx, 1) + self.state = 342 + self.தேமாங்கனி() + self.state = 343 + self.நிரை() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx - def புளிமாநறுநிழல்(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாநறுநிழல்Context,0) + class புளிமாந்தண்பூContext(ParserRuleContext): + __slots__ = 'parser' + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser - def கருவிளந்தண்பூ(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளந்தண்பூContext,0) + def புளிமாங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாங்காய்Context,0) - def கருவிளந்தண்ணிழல்(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளந்தண்ணிழல்Context,0) - - - def கருவிளநறும்பூ(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளநறும்பூContext,0) - - - def கருவிளநறுநிழல்(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளநறுநிழல்Context,0) - - - def கூவிளந்தண்பூ(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளந்தண்பூContext,0) - - - def கூவிளந்தண்ணிழல்(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளந்தண்ணிழல்Context,0) - - - def கூவிளநறும்பூ(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளநறும்பூContext,0) - - - def கூவிளநறுநிழல்(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளநறுநிழல்Context,0) + def நேர்(self): + return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_நாலசை + return வெண்பாParser.RULE_புளிமாந்தண்பூ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterநாலசை" ): - listener.enterநாலசை(self) + if hasattr( listener, "enterபுளிமாந்தண்பூ" ): + listener.enterபுளிமாந்தண்பூ(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitநாலசை" ): - listener.exitநாலசை(self) + if hasattr( listener, "exitபுளிமாந்தண்பூ" ): + listener.exitபுளிமாந்தண்பூ(self) - def நாலசை(self): + def புளிமாந்தண்பூ(self): - localctx = வெண்பாParser.நாலசைContext(self, self._ctx, self.state) - self.enterRule(localctx, 54, self.RULE_நாலசை) + localctx = வெண்பாParser.புளிமாந்தண்பூContext(self, self._ctx, self.state) + self.enterRule(localctx, 52, self.RULE_புளிமாந்தண்பூ) try: - self.state = 333 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,10,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 317 - self.தேமாந்தண்பூ() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 318 - self.தேமாந்தண்ணிழல்() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 319 - self.தேமாநறும்பூ() - pass + self.enterOuterAlt(localctx, 1) + self.state = 345 + self.புளிமாங்காய்() + self.state = 346 + self.நேர்() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 320 - self.தேமாநறுநிழல்() - pass - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 321 - self.புளிமாந்தண்பூ() - pass + class புளிமாந்தண்ணிழல்Context(ParserRuleContext): + __slots__ = 'parser' - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 322 - self.புளிமாந்தண்ணிழல்() - pass + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 323 - self.புளிமாநறும்பூ() - pass + def புளிமாங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாங்காய்Context,0) - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 324 - self.புளிமாநறுநிழல்() - pass - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 325 - self.கருவிளந்தண்பூ() - pass + def நிரை(self): + return self.getTypedRuleContext(வெண்பாParser.நிரைContext,0) - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 326 - self.கருவிளந்தண்ணிழல்() - pass - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 327 - self.கருவிளநறும்பூ() - pass + def getRuleIndex(self): + return வெண்பாParser.RULE_புளிமாந்தண்ணிழல் - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 328 - self.கருவிளநறுநிழல்() - pass + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterபுளிமாந்தண்ணிழல்" ): + listener.enterபுளிமாந்தண்ணிழல்(self) - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 329 - self.கூவிளந்தண்பூ() - pass + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitபுளிமாந்தண்ணிழல்" ): + listener.exitபுளிமாந்தண்ணிழல்(self) - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 330 - self.கூவிளந்தண்ணிழல்() - pass - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 331 - self.கூவிளநறும்பூ() - pass - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 332 - self.கூவிளநறுநிழல்() - pass + def புளிமாந்தண்ணிழல்(self): + localctx = வெண்பாParser.புளிமாந்தண்ணிழல்Context(self, self._ctx, self.state) + self.enterRule(localctx, 54, self.RULE_புளிமாந்தண்ணிழல்) + try: + self.enterOuterAlt(localctx, 1) + self.state = 348 + self.புளிமாங்காய்() + self.state = 349 + self.நிரை() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2644,116 +2756,45 @@ def நாலசை(self): return localctx - class மூவசைContext(ParserRuleContext): + class புளிமாநறும்பூContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமாங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாங்காய்Context,0) - - - def தேமாங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாங்கனிContext,0) - - - def புளிமாங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாங்காய்Context,0) - - def புளிமாங்கனி(self): return self.getTypedRuleContext(வெண்பாParser.புளிமாங்கனிContext,0) - def கருவிளங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளங்காய்Context,0) - - - def கருவிளங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளங்கனிContext,0) - - - def கூவிளங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளங்காய்Context,0) - - - def கூவிளங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளங்கனிContext,0) + def நேர்(self): + return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_மூவசை + return வெண்பாParser.RULE_புளிமாநறும்பூ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterமூவசை" ): - listener.enterமூவசை(self) + if hasattr( listener, "enterபுளிமாநறும்பூ" ): + listener.enterபுளிமாநறும்பூ(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitமூவசை" ): - listener.exitமூவசை(self) + if hasattr( listener, "exitபுளிமாநறும்பூ" ): + listener.exitபுளிமாநறும்பூ(self) - def மூவசை(self): + def புளிமாநறும்பூ(self): - localctx = வெண்பாParser.மூவசைContext(self, self._ctx, self.state) - self.enterRule(localctx, 56, self.RULE_மூவசை) + localctx = வெண்பாParser.புளிமாநறும்பூContext(self, self._ctx, self.state) + self.enterRule(localctx, 56, self.RULE_புளிமாநறும்பூ) try: - self.state = 343 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,11,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 335 - self.தேமாங்காய்() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 336 - self.தேமாங்கனி() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 337 - self.புளிமாங்காய்() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 338 - self.புளிமாங்கனி() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 339 - self.கருவிளங்காய்() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 340 - self.கருவிளங்கனி() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 341 - self.கூவிளங்காய்() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 342 - self.கூவிளங்கனி() - pass - - + self.enterOuterAlt(localctx, 1) + self.state = 351 + self.புளிமாங்கனி() + self.state = 352 + self.நேர்() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2763,76 +2804,45 @@ def மூவசை(self): return localctx - class ஈரசைContext(ParserRuleContext): + class புளிமாநறுநிழல்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமா(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாContext,0) - - - def புளிமா(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாContext,0) - - - def கருவிளம்(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளம்Context,0) + def புளிமாங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாங்கனிContext,0) - def கூவிளம்(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளம்Context,0) + def நிரை(self): + return self.getTypedRuleContext(வெண்பாParser.நிரைContext,0) def getRuleIndex(self): - return வெண்பாParser.RULE_ஈரசை + return வெண்பாParser.RULE_புளிமாநறுநிழல் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterஈரசை" ): - listener.enterஈரசை(self) + if hasattr( listener, "enterபுளிமாநறுநிழல்" ): + listener.enterபுளிமாநறுநிழல்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitஈரசை" ): - listener.exitஈரசை(self) - - - - - def ஈரசை(self): - - localctx = வெண்பாParser.ஈரசைContext(self, self._ctx, self.state) - self.enterRule(localctx, 58, self.RULE_ஈரசை) - try: - self.state = 349 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,12,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 345 - self.தேமா() - pass + if hasattr( listener, "exitபுளிமாநறுநிழல்" ): + listener.exitபுளிமாநறுநிழல்(self) - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 346 - self.புளிமா() - pass - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 347 - self.கருவிளம்() - pass - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 348 - self.கூவிளம்() - pass + def புளிமாநறுநிழல்(self): + localctx = வெண்பாParser.புளிமாநறுநிழல்Context(self, self._ctx, self.state) + self.enterRule(localctx, 58, self.RULE_புளிமாநறுநிழல்) + try: + self.enterOuterAlt(localctx, 1) + self.state = 354 + self.புளிமாங்கனி() + self.state = 355 + self.நிரை() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2842,15 +2852,15 @@ def ஈரசை(self): return localctx - class தேமாந்தண்பூContext(ParserRuleContext): + class கருவிளந்தண்பூContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமாங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாங்காய்Context,0) + def கருவிளங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளங்காய்Context,0) def நேர்(self): @@ -2858,28 +2868,28 @@ def நேர்(self): def getRuleIndex(self): - return வெண்பாParser.RULE_தேமாந்தண்பூ + return வெண்பாParser.RULE_கருவிளந்தண்பூ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterதேமாந்தண்பூ" ): - listener.enterதேமாந்தண்பூ(self) + if hasattr( listener, "enterகருவிளந்தண்பூ" ): + listener.enterகருவிளந்தண்பூ(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitதேமாந்தண்பூ" ): - listener.exitதேமாந்தண்பூ(self) + if hasattr( listener, "exitகருவிளந்தண்பூ" ): + listener.exitகருவிளந்தண்பூ(self) - def தேமாந்தண்பூ(self): + def கருவிளந்தண்பூ(self): - localctx = வெண்பாParser.தேமாந்தண்பூContext(self, self._ctx, self.state) - self.enterRule(localctx, 60, self.RULE_தேமாந்தண்பூ) + localctx = வெண்பாParser.கருவிளந்தண்பூContext(self, self._ctx, self.state) + self.enterRule(localctx, 60, self.RULE_கருவிளந்தண்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 351 - self.தேமாங்காய்() - self.state = 352 + self.state = 357 + self.கருவிளங்காய்() + self.state = 358 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2890,15 +2900,15 @@ def தேமாந்தண்பூ(self): return localctx - class தேமாந்தண்ணிழல்Context(ParserRuleContext): + class கருவிளந்தண்ணிழல்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமாங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாங்காய்Context,0) + def கருவிளங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளங்காய்Context,0) def நிரை(self): @@ -2906,28 +2916,28 @@ def நிரை(self): def getRuleIndex(self): - return வெண்பாParser.RULE_தேமாந்தண்ணிழல் + return வெண்பாParser.RULE_கருவிளந்தண்ணிழல் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterதேமாந்தண்ணிழல்" ): - listener.enterதேமாந்தண்ணிழல்(self) + if hasattr( listener, "enterகருவிளந்தண்ணிழல்" ): + listener.enterகருவிளந்தண்ணிழல்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitதேமாந்தண்ணிழல்" ): - listener.exitதேமாந்தண்ணிழல்(self) + if hasattr( listener, "exitகருவிளந்தண்ணிழல்" ): + listener.exitகருவிளந்தண்ணிழல்(self) - def தேமாந்தண்ணிழல்(self): + def கருவிளந்தண்ணிழல்(self): - localctx = வெண்பாParser.தேமாந்தண்ணிழல்Context(self, self._ctx, self.state) - self.enterRule(localctx, 62, self.RULE_தேமாந்தண்ணிழல்) + localctx = வெண்பாParser.கருவிளந்தண்ணிழல்Context(self, self._ctx, self.state) + self.enterRule(localctx, 62, self.RULE_கருவிளந்தண்ணிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 354 - self.தேமாங்காய்() - self.state = 355 + self.state = 360 + self.கருவிளங்காய்() + self.state = 361 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -2938,15 +2948,15 @@ def தேமாந்தண்ணிழல்(self): return localctx - class தேமாநறும்பூContext(ParserRuleContext): + class கருவிளநறும்பூContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமாங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாங்கனிContext,0) + def கருவிளங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளங்கனிContext,0) def நேர்(self): @@ -2954,28 +2964,28 @@ def நேர்(self): def getRuleIndex(self): - return வெண்பாParser.RULE_தேமாநறும்பூ + return வெண்பாParser.RULE_கருவிளநறும்பூ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterதேமாநறும்பூ" ): - listener.enterதேமாநறும்பூ(self) + if hasattr( listener, "enterகருவிளநறும்பூ" ): + listener.enterகருவிளநறும்பூ(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitதேமாநறும்பூ" ): - listener.exitதேமாநறும்பூ(self) + if hasattr( listener, "exitகருவிளநறும்பூ" ): + listener.exitகருவிளநறும்பூ(self) - def தேமாநறும்பூ(self): + def கருவிளநறும்பூ(self): - localctx = வெண்பாParser.தேமாநறும்பூContext(self, self._ctx, self.state) - self.enterRule(localctx, 64, self.RULE_தேமாநறும்பூ) + localctx = வெண்பாParser.கருவிளநறும்பூContext(self, self._ctx, self.state) + self.enterRule(localctx, 64, self.RULE_கருவிளநறும்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 357 - self.தேமாங்கனி() - self.state = 358 + self.state = 363 + self.கருவிளங்கனி() + self.state = 364 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -2986,15 +2996,15 @@ def தேமாநறும்பூ(self): return localctx - class தேமாநறுநிழல்Context(ParserRuleContext): + class கருவிளநறுநிழல்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமாங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாங்கனிContext,0) + def கருவிளங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளங்கனிContext,0) def நிரை(self): @@ -3002,28 +3012,28 @@ def நிரை(self): def getRuleIndex(self): - return வெண்பாParser.RULE_தேமாநறுநிழல் + return வெண்பாParser.RULE_கருவிளநறுநிழல் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterதேமாநறுநிழல்" ): - listener.enterதேமாநறுநிழல்(self) + if hasattr( listener, "enterகருவிளநறுநிழல்" ): + listener.enterகருவிளநறுநிழல்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitதேமாநறுநிழல்" ): - listener.exitதேமாநறுநிழல்(self) + if hasattr( listener, "exitகருவிளநறுநிழல்" ): + listener.exitகருவிளநறுநிழல்(self) - def தேமாநறுநிழல்(self): + def கருவிளநறுநிழல்(self): - localctx = வெண்பாParser.தேமாநறுநிழல்Context(self, self._ctx, self.state) - self.enterRule(localctx, 66, self.RULE_தேமாநறுநிழல்) + localctx = வெண்பாParser.கருவிளநறுநிழல்Context(self, self._ctx, self.state) + self.enterRule(localctx, 66, self.RULE_கருவிளநறுநிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 360 - self.தேமாங்கனி() - self.state = 361 + self.state = 366 + self.கருவிளங்கனி() + self.state = 367 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3034,15 +3044,15 @@ def தேமாநறுநிழல்(self): return localctx - class புளிமாந்தண்பூContext(ParserRuleContext): + class கூவிளந்தண்பூContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def புளிமாங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாங்காய்Context,0) + def கூவிளங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளங்காய்Context,0) def நேர்(self): @@ -3050,28 +3060,28 @@ def நேர்(self): def getRuleIndex(self): - return வெண்பாParser.RULE_புளிமாந்தண்பூ + return வெண்பாParser.RULE_கூவிளந்தண்பூ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterபுளிமாந்தண்பூ" ): - listener.enterபுளிமாந்தண்பூ(self) + if hasattr( listener, "enterகூவிளந்தண்பூ" ): + listener.enterகூவிளந்தண்பூ(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitபுளிமாந்தண்பூ" ): - listener.exitபுளிமாந்தண்பூ(self) + if hasattr( listener, "exitகூவிளந்தண்பூ" ): + listener.exitகூவிளந்தண்பூ(self) - def புளிமாந்தண்பூ(self): + def கூவிளந்தண்பூ(self): - localctx = வெண்பாParser.புளிமாந்தண்பூContext(self, self._ctx, self.state) - self.enterRule(localctx, 68, self.RULE_புளிமாந்தண்பூ) + localctx = வெண்பாParser.கூவிளந்தண்பூContext(self, self._ctx, self.state) + self.enterRule(localctx, 68, self.RULE_கூவிளந்தண்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 363 - self.புளிமாங்காய்() - self.state = 364 + self.state = 369 + self.கூவிளங்காய்() + self.state = 370 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3082,15 +3092,15 @@ def புளிமாந்தண்பூ(self): return localctx - class புளிமாந்தண்ணிழல்Context(ParserRuleContext): + class கூவிளந்தண்ணிழல்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def புளிமாங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாங்காய்Context,0) + def கூவிளங்காய்(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளங்காய்Context,0) def நிரை(self): @@ -3098,28 +3108,28 @@ def நிரை(self): def getRuleIndex(self): - return வெண்பாParser.RULE_புளிமாந்தண்ணிழல் + return வெண்பாParser.RULE_கூவிளந்தண்ணிழல் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterபுளிமாந்தண்ணிழல்" ): - listener.enterபுளிமாந்தண்ணிழல்(self) + if hasattr( listener, "enterகூவிளந்தண்ணிழல்" ): + listener.enterகூவிளந்தண்ணிழல்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitபுளிமாந்தண்ணிழல்" ): - listener.exitபுளிமாந்தண்ணிழல்(self) + if hasattr( listener, "exitகூவிளந்தண்ணிழல்" ): + listener.exitகூவிளந்தண்ணிழல்(self) - def புளிமாந்தண்ணிழல்(self): + def கூவிளந்தண்ணிழல்(self): - localctx = வெண்பாParser.புளிமாந்தண்ணிழல்Context(self, self._ctx, self.state) - self.enterRule(localctx, 70, self.RULE_புளிமாந்தண்ணிழல்) + localctx = வெண்பாParser.கூவிளந்தண்ணிழல்Context(self, self._ctx, self.state) + self.enterRule(localctx, 70, self.RULE_கூவிளந்தண்ணிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 366 - self.புளிமாங்காய்() - self.state = 367 + self.state = 372 + self.கூவிளங்காய்() + self.state = 373 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3130,15 +3140,15 @@ def புளிமாந்தண்ணிழல்(self): return localctx - class புளிமாநறும்பூContext(ParserRuleContext): + class கூவிளநறும்பூContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def புளிமாங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாங்கனிContext,0) + def கூவிளங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளங்கனிContext,0) def நேர்(self): @@ -3146,28 +3156,28 @@ def நேர்(self): def getRuleIndex(self): - return வெண்பாParser.RULE_புளிமாநறும்பூ + return வெண்பாParser.RULE_கூவிளநறும்பூ def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterபுளிமாநறும்பூ" ): - listener.enterபுளிமாநறும்பூ(self) + if hasattr( listener, "enterகூவிளநறும்பூ" ): + listener.enterகூவிளநறும்பூ(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitபுளிமாநறும்பூ" ): - listener.exitபுளிமாநறும்பூ(self) + if hasattr( listener, "exitகூவிளநறும்பூ" ): + listener.exitகூவிளநறும்பூ(self) - def புளிமாநறும்பூ(self): + def கூவிளநறும்பூ(self): - localctx = வெண்பாParser.புளிமாநறும்பூContext(self, self._ctx, self.state) - self.enterRule(localctx, 72, self.RULE_புளிமாநறும்பூ) + localctx = வெண்பாParser.கூவிளநறும்பூContext(self, self._ctx, self.state) + self.enterRule(localctx, 72, self.RULE_கூவிளநறும்பூ) try: self.enterOuterAlt(localctx, 1) - self.state = 369 - self.புளிமாங்கனி() - self.state = 370 + self.state = 375 + self.கூவிளங்கனி() + self.state = 376 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3178,15 +3188,15 @@ def புளிமாநறும்பூ(self): return localctx - class புளிமாநறுநிழல்Context(ParserRuleContext): + class கூவிளநறுநிழல்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def புளிமாங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாங்கனிContext,0) + def கூவிளங்கனி(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளங்கனிContext,0) def நிரை(self): @@ -3194,28 +3204,28 @@ def நிரை(self): def getRuleIndex(self): - return வெண்பாParser.RULE_புளிமாநறுநிழல் + return வெண்பாParser.RULE_கூவிளநறுநிழல் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterபுளிமாநறுநிழல்" ): - listener.enterபுளிமாநறுநிழல்(self) + if hasattr( listener, "enterகூவிளநறுநிழல்" ): + listener.enterகூவிளநறுநிழல்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitபுளிமாநறுநிழல்" ): - listener.exitபுளிமாநறுநிழல்(self) + if hasattr( listener, "exitகூவிளநறுநிழல்" ): + listener.exitகூவிளநறுநிழல்(self) - def புளிமாநறுநிழல்(self): + def கூவிளநறுநிழல்(self): - localctx = வெண்பாParser.புளிமாநறுநிழல்Context(self, self._ctx, self.state) - self.enterRule(localctx, 74, self.RULE_புளிமாநறுநிழல்) + localctx = வெண்பாParser.கூவிளநறுநிழல்Context(self, self._ctx, self.state) + self.enterRule(localctx, 74, self.RULE_கூவிளநறுநிழல்) try: self.enterOuterAlt(localctx, 1) - self.state = 372 - self.புளிமாங்கனி() - self.state = 373 + self.state = 378 + self.கூவிளங்கனி() + self.state = 379 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3226,15 +3236,15 @@ def புளிமாநறுநிழல்(self): return localctx - class கருவிளந்தண்பூContext(ParserRuleContext): + class தேமாங்காய்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கருவிளங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளங்காய்Context,0) + def தேமா(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாContext,0) def நேர்(self): @@ -3242,28 +3252,28 @@ def நேர்(self): def getRuleIndex(self): - return வெண்பாParser.RULE_கருவிளந்தண்பூ + return வெண்பாParser.RULE_தேமாங்காய் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகருவிளந்தண்பூ" ): - listener.enterகருவிளந்தண்பூ(self) + if hasattr( listener, "enterதேமாங்காய்" ): + listener.enterதேமாங்காய்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகருவிளந்தண்பூ" ): - listener.exitகருவிளந்தண்பூ(self) + if hasattr( listener, "exitதேமாங்காய்" ): + listener.exitதேமாங்காய்(self) - def கருவிளந்தண்பூ(self): + def தேமாங்காய்(self): - localctx = வெண்பாParser.கருவிளந்தண்பூContext(self, self._ctx, self.state) - self.enterRule(localctx, 76, self.RULE_கருவிளந்தண்பூ) + localctx = வெண்பாParser.தேமாங்காய்Context(self, self._ctx, self.state) + self.enterRule(localctx, 76, self.RULE_தேமாங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 375 - self.கருவிளங்காய்() - self.state = 376 + self.state = 381 + self.தேமா() + self.state = 382 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3274,15 +3284,15 @@ def கருவிளந்தண்பூ(self): return localctx - class கருவிளந்தண்ணிழல்Context(ParserRuleContext): + class தேமாங்கனிContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கருவிளங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளங்காய்Context,0) + def தேமா(self): + return self.getTypedRuleContext(வெண்பாParser.தேமாContext,0) def நிரை(self): @@ -3290,28 +3300,28 @@ def நிரை(self): def getRuleIndex(self): - return வெண்பாParser.RULE_கருவிளந்தண்ணிழல் + return வெண்பாParser.RULE_தேமாங்கனி def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகருவிளந்தண்ணிழல்" ): - listener.enterகருவிளந்தண்ணிழல்(self) + if hasattr( listener, "enterதேமாங்கனி" ): + listener.enterதேமாங்கனி(self) - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகருவிளந்தண்ணிழல்" ): - listener.exitகருவிளந்தண்ணிழல்(self) + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitதேமாங்கனி" ): + listener.exitதேமாங்கனி(self) - def கருவிளந்தண்ணிழல்(self): + def தேமாங்கனி(self): - localctx = வெண்பாParser.கருவிளந்தண்ணிழல்Context(self, self._ctx, self.state) - self.enterRule(localctx, 78, self.RULE_கருவிளந்தண்ணிழல்) + localctx = வெண்பாParser.தேமாங்கனிContext(self, self._ctx, self.state) + self.enterRule(localctx, 78, self.RULE_தேமாங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 378 - self.கருவிளங்காய்() - self.state = 379 + self.state = 384 + self.தேமா() + self.state = 385 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3322,15 +3332,15 @@ def கருவிளந்தண்ணிழல்(self): return localctx - class கருவிளநறும்பூContext(ParserRuleContext): + class புளிமாங்காய்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கருவிளங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளங்கனிContext,0) + def புளிமா(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாContext,0) def நேர்(self): @@ -3338,28 +3348,28 @@ def நேர்(self): def getRuleIndex(self): - return வெண்பாParser.RULE_கருவிளநறும்பூ + return வெண்பாParser.RULE_புளிமாங்காய் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகருவிளநறும்பூ" ): - listener.enterகருவிளநறும்பூ(self) + if hasattr( listener, "enterபுளிமாங்காய்" ): + listener.enterபுளிமாங்காய்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகருவிளநறும்பூ" ): - listener.exitகருவிளநறும்பூ(self) + if hasattr( listener, "exitபுளிமாங்காய்" ): + listener.exitபுளிமாங்காய்(self) - def கருவிளநறும்பூ(self): + def புளிமாங்காய்(self): - localctx = வெண்பாParser.கருவிளநறும்பூContext(self, self._ctx, self.state) - self.enterRule(localctx, 80, self.RULE_கருவிளநறும்பூ) + localctx = வெண்பாParser.புளிமாங்காய்Context(self, self._ctx, self.state) + self.enterRule(localctx, 80, self.RULE_புளிமாங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 381 - self.கருவிளங்கனி() - self.state = 382 + self.state = 387 + self.புளிமா() + self.state = 388 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3370,15 +3380,15 @@ def கருவிளநறும்பூ(self): return localctx - class கருவிளநறுநிழல்Context(ParserRuleContext): + class புளிமாங்கனிContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கருவிளங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளங்கனிContext,0) + def புளிமா(self): + return self.getTypedRuleContext(வெண்பாParser.புளிமாContext,0) def நிரை(self): @@ -3386,28 +3396,28 @@ def நிரை(self): def getRuleIndex(self): - return வெண்பாParser.RULE_கருவிளநறுநிழல் + return வெண்பாParser.RULE_புளிமாங்கனி def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகருவிளநறுநிழல்" ): - listener.enterகருவிளநறுநிழல்(self) + if hasattr( listener, "enterபுளிமாங்கனி" ): + listener.enterபுளிமாங்கனி(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகருவிளநறுநிழல்" ): - listener.exitகருவிளநறுநிழல்(self) + if hasattr( listener, "exitபுளிமாங்கனி" ): + listener.exitபுளிமாங்கனி(self) - def கருவிளநறுநிழல்(self): + def புளிமாங்கனி(self): - localctx = வெண்பாParser.கருவிளநறுநிழல்Context(self, self._ctx, self.state) - self.enterRule(localctx, 82, self.RULE_கருவிளநறுநிழல்) + localctx = வெண்பாParser.புளிமாங்கனிContext(self, self._ctx, self.state) + self.enterRule(localctx, 82, self.RULE_புளிமாங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 384 - self.கருவிளங்கனி() - self.state = 385 + self.state = 390 + self.புளிமா() + self.state = 391 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3418,15 +3428,15 @@ def கருவிளநறுநிழல்(self): return localctx - class கூவிளந்தண்பூContext(ParserRuleContext): + class கருவிளங்காய்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கூவிளங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளங்காய்Context,0) + def கருவிளம்(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளம்Context,0) def நேர்(self): @@ -3434,28 +3444,28 @@ def நேர்(self): def getRuleIndex(self): - return வெண்பாParser.RULE_கூவிளந்தண்பூ + return வெண்பாParser.RULE_கருவிளங்காய் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகூவிளந்தண்பூ" ): - listener.enterகூவிளந்தண்பூ(self) + if hasattr( listener, "enterகருவிளங்காய்" ): + listener.enterகருவிளங்காய்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகூவிளந்தண்பூ" ): - listener.exitகூவிளந்தண்பூ(self) + if hasattr( listener, "exitகருவிளங்காய்" ): + listener.exitகருவிளங்காய்(self) - def கூவிளந்தண்பூ(self): + def கருவிளங்காய்(self): - localctx = வெண்பாParser.கூவிளந்தண்பூContext(self, self._ctx, self.state) - self.enterRule(localctx, 84, self.RULE_கூவிளந்தண்பூ) + localctx = வெண்பாParser.கருவிளங்காய்Context(self, self._ctx, self.state) + self.enterRule(localctx, 84, self.RULE_கருவிளங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 387 - self.கூவிளங்காய்() - self.state = 388 + self.state = 393 + self.கருவிளம்() + self.state = 394 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3466,15 +3476,15 @@ def கூவிளந்தண்பூ(self): return localctx - class கூவிளந்தண்ணிழல்Context(ParserRuleContext): + class கருவிளங்கனிContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கூவிளங்காய்(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளங்காய்Context,0) + def கருவிளம்(self): + return self.getTypedRuleContext(வெண்பாParser.கருவிளம்Context,0) def நிரை(self): @@ -3482,28 +3492,28 @@ def நிரை(self): def getRuleIndex(self): - return வெண்பாParser.RULE_கூவிளந்தண்ணிழல் + return வெண்பாParser.RULE_கருவிளங்கனி def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகூவிளந்தண்ணிழல்" ): - listener.enterகூவிளந்தண்ணிழல்(self) + if hasattr( listener, "enterகருவிளங்கனி" ): + listener.enterகருவிளங்கனி(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகூவிளந்தண்ணிழல்" ): - listener.exitகூவிளந்தண்ணிழல்(self) + if hasattr( listener, "exitகருவிளங்கனி" ): + listener.exitகருவிளங்கனி(self) - def கூவிளந்தண்ணிழல்(self): + def கருவிளங்கனி(self): - localctx = வெண்பாParser.கூவிளந்தண்ணிழல்Context(self, self._ctx, self.state) - self.enterRule(localctx, 86, self.RULE_கூவிளந்தண்ணிழல்) + localctx = வெண்பாParser.கருவிளங்கனிContext(self, self._ctx, self.state) + self.enterRule(localctx, 86, self.RULE_கருவிளங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 390 - self.கூவிளங்காய்() - self.state = 391 + self.state = 396 + self.கருவிளம்() + self.state = 397 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3514,15 +3524,15 @@ def கூவிளந்தண்ணிழல்(self): return localctx - class கூவிளநறும்பூContext(ParserRuleContext): + class கூவிளங்காய்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கூவிளங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளங்கனிContext,0) + def கூவிளம்(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளம்Context,0) def நேர்(self): @@ -3530,28 +3540,28 @@ def நேர்(self): def getRuleIndex(self): - return வெண்பாParser.RULE_கூவிளநறும்பூ + return வெண்பாParser.RULE_கூவிளங்காய் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகூவிளநறும்பூ" ): - listener.enterகூவிளநறும்பூ(self) + if hasattr( listener, "enterகூவிளங்காய்" ): + listener.enterகூவிளங்காய்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகூவிளநறும்பூ" ): - listener.exitகூவிளநறும்பூ(self) + if hasattr( listener, "exitகூவிளங்காய்" ): + listener.exitகூவிளங்காய்(self) - def கூவிளநறும்பூ(self): + def கூவிளங்காய்(self): - localctx = வெண்பாParser.கூவிளநறும்பூContext(self, self._ctx, self.state) - self.enterRule(localctx, 88, self.RULE_கூவிளநறும்பூ) + localctx = வெண்பாParser.கூவிளங்காய்Context(self, self._ctx, self.state) + self.enterRule(localctx, 88, self.RULE_கூவிளங்காய்) try: self.enterOuterAlt(localctx, 1) - self.state = 393 - self.கூவிளங்கனி() - self.state = 394 + self.state = 399 + self.கூவிளம்() + self.state = 400 self.நேர்() except RecognitionException as re: localctx.exception = re @@ -3562,15 +3572,15 @@ def கூவிளநறும்பூ(self): return localctx - class கூவிளநறுநிழல்Context(ParserRuleContext): + class கூவிளங்கனிContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கூவிளங்கனி(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளங்கனிContext,0) + def கூவிளம்(self): + return self.getTypedRuleContext(வெண்பாParser.கூவிளம்Context,0) def நிரை(self): @@ -3578,28 +3588,28 @@ def நிரை(self): def getRuleIndex(self): - return வெண்பாParser.RULE_கூவிளநறுநிழல் + return வெண்பாParser.RULE_கூவிளங்கனி def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகூவிளநறுநிழல்" ): - listener.enterகூவிளநறுநிழல்(self) + if hasattr( listener, "enterகூவிளங்கனி" ): + listener.enterகூவிளங்கனி(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகூவிளநறுநிழல்" ): - listener.exitகூவிளநறுநிழல்(self) + if hasattr( listener, "exitகூவிளங்கனி" ): + listener.exitகூவிளங்கனி(self) - def கூவிளநறுநிழல்(self): + def கூவிளங்கனி(self): - localctx = வெண்பாParser.கூவிளநறுநிழல்Context(self, self._ctx, self.state) - self.enterRule(localctx, 90, self.RULE_கூவிளநறுநிழல்) + localctx = வெண்பாParser.கூவிளங்கனிContext(self, self._ctx, self.state) + self.enterRule(localctx, 90, self.RULE_கூவிளங்கனி) try: self.enterOuterAlt(localctx, 1) - self.state = 396 - self.கூவிளங்கனி() - self.state = 397 + self.state = 402 + self.கூவிளம்() + self.state = 403 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3610,45 +3620,44 @@ def கூவிளநறுநிழல்(self): return localctx - class தேமாங்கனிContext(ParserRuleContext): + class தேமாContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def தேமா(self): - return self.getTypedRuleContext(வெண்பாParser.தேமாContext,0) - - - def நிரை(self): - return self.getTypedRuleContext(வெண்பாParser.நிரைContext,0) + def நேர்(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(வெண்பாParser.நேர்Context) + else: + return self.getTypedRuleContext(வெண்பாParser.நேர்Context,i) def getRuleIndex(self): - return வெண்பாParser.RULE_தேமாங்கனி + return வெண்பாParser.RULE_தேமா def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterதேமாங்கனி" ): - listener.enterதேமாங்கனி(self) + if hasattr( listener, "enterதேமா" ): + listener.enterதேமா(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitதேமாங்கனி" ): - listener.exitதேமாங்கனி(self) + if hasattr( listener, "exitதேமா" ): + listener.exitதேமா(self) - def தேமாங்கனி(self): + def தேமா(self): - localctx = வெண்பாParser.தேமாங்கனிContext(self, self._ctx, self.state) - self.enterRule(localctx, 92, self.RULE_தேமாங்கனி) + localctx = வெண்பாParser.தேமாContext(self, self._ctx, self.state) + self.enterRule(localctx, 92, self.RULE_தேமா) try: self.enterOuterAlt(localctx, 1) - self.state = 399 - self.தேமா() - self.state = 400 - self.நிரை() + self.state = 405 + self.நேர்() + self.state = 406 + self.நேர்() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3658,45 +3667,45 @@ def தேமாங்கனி(self): return localctx - class புளிமாங்கனிContext(ParserRuleContext): + class புளிமாContext(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def புளிமா(self): - return self.getTypedRuleContext(வெண்பாParser.புளிமாContext,0) + def முதல்நிரை(self): + return self.getTypedRuleContext(வெண்பாParser.முதல்நிரைContext,0) - def நிரை(self): - return self.getTypedRuleContext(வெண்பாParser.நிரைContext,0) + def நேர்(self): + return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) def getRuleIndex(self): - return வெண்பாParser.RULE_புளிமாங்கனி + return வெண்பாParser.RULE_புளிமா def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterபுளிமாங்கனி" ): - listener.enterபுளிமாங்கனி(self) + if hasattr( listener, "enterபுளிமா" ): + listener.enterபுளிமா(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitபுளிமாங்கனி" ): - listener.exitபுளிமாங்கனி(self) + if hasattr( listener, "exitபுளிமா" ): + listener.exitபுளிமா(self) - def புளிமாங்கனி(self): + def புளிமா(self): - localctx = வெண்பாParser.புளிமாங்கனிContext(self, self._ctx, self.state) - self.enterRule(localctx, 94, self.RULE_புளிமாங்கனி) + localctx = வெண்பாParser.புளிமாContext(self, self._ctx, self.state) + self.enterRule(localctx, 94, self.RULE_புளிமா) try: self.enterOuterAlt(localctx, 1) - self.state = 402 - self.புளிமா() - self.state = 403 - self.நிரை() + self.state = 408 + self.முதல்நிரை() + self.state = 409 + self.நேர்() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3706,15 +3715,15 @@ def புளிமாங்கனி(self): return localctx - class கருவிளங்கனிContext(ParserRuleContext): + class கருவிளம்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கருவிளம்(self): - return self.getTypedRuleContext(வெண்பாParser.கருவிளம்Context,0) + def முதல்நிரை(self): + return self.getTypedRuleContext(வெண்பாParser.முதல்நிரைContext,0) def நிரை(self): @@ -3722,28 +3731,28 @@ def நிரை(self): def getRuleIndex(self): - return வெண்பாParser.RULE_கருவிளங்கனி + return வெண்பாParser.RULE_கருவிளம் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகருவிளங்கனி" ): - listener.enterகருவிளங்கனி(self) + if hasattr( listener, "enterகருவிளம்" ): + listener.enterகருவிளம்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகருவிளங்கனி" ): - listener.exitகருவிளங்கனி(self) + if hasattr( listener, "exitகருவிளம்" ): + listener.exitகருவிளம்(self) - def கருவிளங்கனி(self): + def கருவிளம்(self): - localctx = வெண்பாParser.கருவிளங்கனிContext(self, self._ctx, self.state) - self.enterRule(localctx, 96, self.RULE_கருவிளங்கனி) - try: - self.enterOuterAlt(localctx, 1) - self.state = 405 - self.கருவிளம்() - self.state = 406 + localctx = வெண்பாParser.கருவிளம்Context(self, self._ctx, self.state) + self.enterRule(localctx, 96, self.RULE_கருவிளம்) + try: + self.enterOuterAlt(localctx, 1) + self.state = 411 + self.முதல்நிரை() + self.state = 412 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3754,15 +3763,15 @@ def கருவிளங்கனி(self): return localctx - class கூவிளங்கனிContext(ParserRuleContext): + class கூவிளம்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def கூவிளம்(self): - return self.getTypedRuleContext(வெண்பாParser.கூவிளம்Context,0) + def நேர்(self): + return self.getTypedRuleContext(வெண்பாParser.நேர்Context,0) def நிரை(self): @@ -3770,28 +3779,28 @@ def நிரை(self): def getRuleIndex(self): - return வெண்பாParser.RULE_கூவிளங்கனி + return வெண்பாParser.RULE_கூவிளம் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகூவிளங்கனி" ): - listener.enterகூவிளங்கனி(self) + if hasattr( listener, "enterகூவிளம்" ): + listener.enterகூவிளம்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகூவிளங்கனி" ): - listener.exitகூவிளங்கனி(self) + if hasattr( listener, "exitகூவிளம்" ): + listener.exitகூவிளம்(self) - def கூவிளங்கனி(self): + def கூவிளம்(self): - localctx = வெண்பாParser.கூவிளங்கனிContext(self, self._ctx, self.state) - self.enterRule(localctx, 98, self.RULE_கூவிளங்கனி) + localctx = வெண்பாParser.கூவிளம்Context(self, self._ctx, self.state) + self.enterRule(localctx, 98, self.RULE_கூவிளம்) try: self.enterOuterAlt(localctx, 1) - self.state = 408 - self.கூவிளம்() - self.state = 409 + self.state = 414 + self.நேர்() + self.state = 415 self.நிரை() except RecognitionException as re: localctx.exception = re @@ -3817,6 +3826,10 @@ def நெடில்(self): return self.getTypedRuleContext(வெண்பாParser.நெடில்Context,0) + def ஐகாரக்குறுக்கம்(self): + return self.getTypedRuleContext(வெண்பாParser.ஐகாரக்குறுக்கம்Context,0) + + def ஆய்தம்(self): return self.getTypedRuleContext(வெண்பாParser.ஆய்தம்Context,0) @@ -3848,82 +3861,158 @@ def நேர்(self): self.enterRule(localctx, 100, self.RULE_நேர்) self._la = 0 # Token type try: - self.state = 431 + self.enterOuterAlt(localctx, 1) + self.state = 420 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,17,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 411 + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 417 self.குறில்() pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 412 + elif token in [133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + self.state = 418 self.நெடில்() pass + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 419 + self.ஐகாரக்குறுக்கம்() + pass + else: + raise NoViableAltException(self) - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 413 - self.குறில்() - self.state = 420 + self.state = 428 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [19]: + self.state = 422 + self.ஆய்தம்() + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: + self.state = 424 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [248]: - self.state = 414 - self.ஆய்தம்() - pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]: - self.state = 416 + _la = self._input.LA(1) + while True: + self.state = 423 + self.ஒற்று() + self.state = 426 self._errHandler.sync(self) _la = self._input.LA(1) - while True: - self.state = 415 - self.ஒற்று() - self.state = 418 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 1048572) != 0)): - break - - pass - else: - raise NoViableAltException(self) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): + break pass + elif token in [-1, 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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249]: + pass + else: + pass + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 422 + + class முதல்நிரைContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def குறில்(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(வெண்பாParser.குறில்Context) + else: + return self.getTypedRuleContext(வெண்பாParser.குறில்Context,i) + + + def நெடில்(self): + return self.getTypedRuleContext(வெண்பாParser.நெடில்Context,0) + + + def ஐகாரக்குறுக்கம்(self): + return self.getTypedRuleContext(வெண்பாParser.ஐகாரக்குறுக்கம்Context,0) + + + def ஆய்தம்(self): + return self.getTypedRuleContext(வெண்பாParser.ஆய்தம்Context,0) + + + def ஒற்று(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(வெண்பாParser.ஒற்றுContext) + else: + return self.getTypedRuleContext(வெண்பாParser.ஒற்றுContext,i) + + + def getRuleIndex(self): + return வெண்பாParser.RULE_முதல்நிரை + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterமுதல்நிரை" ): + listener.enterமுதல்நிரை(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitமுதல்நிரை" ): + listener.exitமுதல்நிரை(self) + + + + + def முதல்நிரை(self): + + localctx = வெண்பாParser.முதல்நிரைContext(self, self._ctx, self.state) + self.enterRule(localctx, 102, self.RULE_முதல்நிரை) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 430 + self.குறில்() + self.state = 434 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 431 + self.குறில்() + pass + elif token in [133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + self.state = 432 self.நெடில்() - self.state = 429 + pass + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 433 + self.ஐகாரக்குறுக்கம்() + pass + else: + raise NoViableAltException(self) + + self.state = 442 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [19]: + self.state = 436 + self.ஆய்தம்() + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: + self.state = 438 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [248]: - self.state = 423 - self.ஆய்தம்() - pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]: - self.state = 425 + _la = self._input.LA(1) + while True: + self.state = 437 + self.ஒற்று() + self.state = 440 self._errHandler.sync(self) _la = self._input.LA(1) - while True: - self.state = 424 - self.ஒற்று() - self.state = 427 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 1048572) != 0)): - break - - pass - else: - raise NoViableAltException(self) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): + break pass - - + elif token in [-1, 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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: + pass + else: + pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3947,6 +4036,13 @@ def குறில்(self, i:int=None): return self.getTypedRuleContext(வெண்பாParser.குறில்Context,i) + def ஐகாரக்குறுக்கம்(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(வெண்பாParser.ஐகாரக்குறுக்கம்Context) + else: + return self.getTypedRuleContext(வெண்பாParser.ஐகாரக்குறுக்கம்Context,i) + + def நெடில்(self): return self.getTypedRuleContext(வெண்பாParser.நெடில்Context,0) @@ -3979,93 +4075,67 @@ def exitRule(self, listener:ParseTreeListener): def நிரை(self): localctx = வெண்பாParser.நிரைContext(self, self._ctx, self.state) - self.enterRule(localctx, 102, self.RULE_நிரை) + self.enterRule(localctx, 104, self.RULE_நிரை) self._la = 0 # Token type try: - self.state = 459 + self.enterOuterAlt(localctx, 1) + self.state = 446 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,22,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 433 - self.குறில்() - self.state = 434 + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 444 self.குறில்() pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 436 - self.குறில்() - self.state = 437 - self.நெடில்() + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 445 + self.ஐகாரக்குறுக்கம்() pass + else: + raise NoViableAltException(self) - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 439 - self.குறில்() - self.state = 440 + self.state = 451 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132]: + self.state = 448 self.குறில்() - self.state = 447 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [248]: - self.state = 441 - self.ஆய்தம்() - pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]: - self.state = 443 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 442 - self.ஒற்று() - self.state = 445 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 1048572) != 0)): - break - - pass - else: - raise NoViableAltException(self) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) + elif token in [133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247]: self.state = 449 - self.குறில்() - self.state = 450 self.நெடில்() - self.state = 457 + pass + elif token in [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]: + self.state = 450 + self.ஐகாரக்குறுக்கம்() + pass + else: + raise NoViableAltException(self) + + self.state = 459 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [19]: + self.state = 453 + self.ஆய்தம்() + pass + elif token in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]: + self.state = 455 self._errHandler.sync(self) - token = self._input.LA(1) - if token in [248]: - self.state = 451 - self.ஆய்தம்() - pass - elif token in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]: - self.state = 453 + _la = self._input.LA(1) + while True: + self.state = 454 + self.ஒற்று() + self.state = 457 self._errHandler.sync(self) _la = self._input.LA(1) - while True: - self.state = 452 - self.ஒற்று() - self.state = 455 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 1048572) != 0)): - break - - pass - else: - raise NoViableAltException(self) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): + break pass - - + elif token in [-1, 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, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 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, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249]: + pass + else: + pass except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4100,13 +4170,13 @@ def exitRule(self, listener:ParseTreeListener): def ஒற்று(self): localctx = வெண்பாParser.ஒற்றுContext(self, self._ctx, self.state) - self.enterRule(localctx, 104, self.RULE_ஒற்று) + self.enterRule(localctx, 106, self.RULE_ஒற்று) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 461 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 1048572) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 524286) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -4120,7 +4190,7 @@ def ஒற்று(self): return localctx - class குறில்Context(ParserRuleContext): + class ஆய்தம்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -4129,29 +4199,68 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def getRuleIndex(self): - return வெண்பாParser.RULE_குறில் + return வெண்பாParser.RULE_ஆய்தம் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterகுறில்" ): - listener.enterகுறில்(self) + if hasattr( listener, "enterஆய்தம்" ): + listener.enterஆய்தம்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitகுறில்" ): - listener.exitகுறில்(self) + if hasattr( listener, "exitஆய்தம்" ): + listener.exitஆய்தம்(self) - def குறில்(self): + def ஆய்தம்(self): - localctx = வெண்பாParser.குறில்Context(self, self._ctx, self.state) - self.enterRule(localctx, 106, self.RULE_குறில்) - self._la = 0 # Token type + localctx = வெண்பாParser.ஆய்தம்Context(self, self._ctx, self.state) + self.enterRule(localctx, 108, self.RULE_ஆய்தம்) try: self.enterOuterAlt(localctx, 1) self.state = 463 + self.match(வெண்பாParser.T__18) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class ஐகாரக்குறுக்கம்Context(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return வெண்பாParser.RULE_ஐகாரக்குறுக்கம் + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterஐகாரக்குறுக்கம்" ): + listener.enterஐகாரக்குறுக்கம்(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitஐகாரக்குறுக்கம்" ): + listener.exitஐகாரக்குறுக்கம்(self) + + + + + def ஐகாரக்குறுக்கம்(self): + + localctx = வெண்பாParser.ஐகாரக்குறுக்கம்Context(self, self._ctx, self.state) + self.enterRule(localctx, 110, self.RULE_ஐகாரக்குறுக்கம்) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 465 _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & -1048576) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 2251799813685247) != 0)): + if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 274876858368) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -4165,7 +4274,7 @@ def குறில்(self): return localctx - class நெடில்Context(ParserRuleContext): + class குறில்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -4174,29 +4283,29 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def getRuleIndex(self): - return வெண்பாParser.RULE_நெடில் + return வெண்பாParser.RULE_குறில் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterநெடில்" ): - listener.enterநெடில்(self) + if hasattr( listener, "enterகுறில்" ): + listener.enterகுறில்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitநெடில்" ): - listener.exitநெடில்(self) + if hasattr( listener, "exitகுறில்" ): + listener.exitகுறில்(self) - def நெடில்(self): + def குறில்(self): - localctx = வெண்பாParser.நெடில்Context(self, self._ctx, self.state) - self.enterRule(localctx, 108, self.RULE_நெடில்) + localctx = வெண்பாParser.குறில்Context(self, self._ctx, self.state) + self.enterRule(localctx, 112, self.RULE_குறில்) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 465 + self.state = 467 _la = self._input.LA(1) - if not(((((_la - 115)) & ~0x3f) == 0 and ((1 << (_la - 115)) & -1) != 0) or ((((_la - 179)) & ~0x3f) == 0 and ((1 << (_la - 179)) & -1) != 0) or ((((_la - 243)) & ~0x3f) == 0 and ((1 << (_la - 243)) & 31) != 0)): + if not(((((_la - 38)) & ~0x3f) == 0 and ((1 << (_la - 38)) & -1) != 0) or ((((_la - 102)) & ~0x3f) == 0 and ((1 << (_la - 102)) & 2147483647) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -4210,7 +4319,7 @@ def நெடில்(self): return localctx - class ஆய்தம்Context(ParserRuleContext): + class நெடில்Context(ParserRuleContext): __slots__ = 'parser' def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): @@ -4219,27 +4328,33 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def getRuleIndex(self): - return வெண்பாParser.RULE_ஆய்தம் + return வெண்பாParser.RULE_நெடில் def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterஆய்தம்" ): - listener.enterஆய்தம்(self) + if hasattr( listener, "enterநெடில்" ): + listener.enterநெடில்(self) def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitஆய்தம்" ): - listener.exitஆய்தம்(self) + if hasattr( listener, "exitநெடில்" ): + listener.exitநெடில்(self) - def ஆய்தம்(self): + def நெடில்(self): - localctx = வெண்பாParser.ஆய்தம்Context(self, self._ctx, self.state) - self.enterRule(localctx, 110, self.RULE_ஆய்தம்) + localctx = வெண்பாParser.நெடில்Context(self, self._ctx, self.state) + self.enterRule(localctx, 114, self.RULE_நெடில்) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 467 - self.match(வெண்பாParser.T__247) + self.state = 469 + _la = self._input.LA(1) + if not(((((_la - 133)) & ~0x3f) == 0 and ((1 << (_la - 133)) & -1) != 0) or ((((_la - 197)) & ~0x3f) == 0 and ((1 << (_la - 197)) & 2251799813685247) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.g4" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.g4" index 2797ef4..0616c91 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.g4" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\206\340\256\232\340\256\277\340\256\260\340\256\277\340\256\257\340\256\252\340\257\215\340\256\252\340\256\276.g4" @@ -2,7 +2,7 @@ grammar ஆசிரியப்பா; import சீர்; -ஆசிரியப்பா : நேரிசை_ஆசிரியப்பா | இணைக்குறள்_ஆசிரியப்பா | நிலை_மண்டில_ஆசிரியப்பா; +ஆசிரியப்பா : (நேரிசை_ஆசிரியப்பா | இணைக்குறள்_ஆசிரியப்பா | நிலை_மண்டில_ஆசிரியப்பா) EOF ; // ஆசிரியப்பா : நேரிசை_ஆசிரியப்பா ; // ஆசிரியப்பா : இணைக்குறள்_ஆசிரியப்பா ; @@ -14,12 +14,12 @@ import சீர்; நிலை_மண்டில_ஆசிரியப்பா : அளவடி அளவடி+ அளவடி ; // அடிமறி_மண்டில_ஆசிரியப்பா : -குறளடி : சீர் I சீர் '\n'; -சிந்தடி : சீர் I சீர் I சீர் '\n'; -அளவடி : சீர் I சீர் I சீர் I சீர் '\n'?; +குறளடி : சீர் I சீர் NL; +சிந்தடி : சீர் I சீர் I சீர் NL; +அளவடி : சீர் I சீர் I சீர் I சீர் NL?; // ஈற்றடி_அளவடி : சீர் I சீர் I சீர் I சீர் ; -// ஈற்றயலடி : சீர் I சீர் I சீர் '\n'; +// ஈற்றயலடி : சீர் I சீர் I சீர் NL; diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\232\340\257\200\340\256\260\340\257\215.g4" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\232\340\257\200\340\256\260\340\257\215.g4" index 624168f..6601452 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\232\340\257\200\340\256\260\340\257\215.g4" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\232\340\257\200\340\256\260\340\257\215.g4" @@ -1,79 +1,106 @@ grammar சீர்; -சீர் : ஈரசை | மூவசை | நாலசை ; +// சீர் (metrical foot) = 2, 3 or 4 அசை. Imported by வெண்பா.g4 and ஆசிரியப்பா.g4, which +// override the `சீர்` start rule with their own foot inventory but reuse everything below. +// +// AMBIGUITY POLICY (importers rely on this): a word usually has more than one legal +// scansion (e.g. வானினும் = வா/னினும் or வா/னி/னும்). ANTLR picks the FIRST viable +// alternative, so the order of alternatives is the policy: +// * fewer அசை before more அசை (ஈரசை before மூவசை before நாலசை), +// * மா before விளம், காய் before கனி (within each group). +// +// ஐகாரக்குறுக்கம்: an ஐ syllable at the start of a foot is a full நெடில் +// (கை/யினை = கூவிளம், கை/யும் = தேமா). Inside or at the end of a foot the ஐ is shortened +// and scans as குறில், so it may begin a நிரை there (தண்/மையும் = நேர் நிரை = கூவிளம்). +// Hence முதல்நிரை (foot-initial) requires a true குறில் first; நிரை (later) also accepts +// ஐகாரக்குறுக்கம். Decided 2026-09-20, see specs/2026-09-20-revival-and-roadmap.md. + +சீர் : (ஈரசை | மூவசை | நாலசை) EOF ; வஞ்சிச்_சீர் : தேமாங்கனி | புளிமாங்கனி | கருவிளங்கனி | கூவிளங்கனி ; -இயற்சீர் : தேமா | புளிமா | கருவிளம் | கூவிளம் ; +இயற்சீர் : தேமா | புளிமா | கருவிளம் | கூவிளம் ; மாச்சீர் : தேமா | புளிமா ; -விளச்சீர் : கருவிளம் | கூவிளம் ; +விளச்சீர் : கருவிளம் | கூவிளம் ; +வெண்சீர் : தேமாங்காய் | புளிமாங்காய் | கருவிளங்காய் | கூவிளங்காய் ; -வெண்சீர் : தேமாங்காய் | புளிமாங்காய்| கருவிளங்காய் | கூவிளங்காய் ; +// நாலசைச்சீர்கள் - 16 : the eight ending in நேர் (...தண்பூ / ...நறும்பூ) before the eight +// ending in நிரை (...தண்ணிழல் / ...நறுநிழல்), காய் before கனி. +நாலசை : தேமாந்தண்பூ | புளிமாந்தண்பூ | கருவிளந்தண்பூ | கூவிளந்தண்பூ + | தேமாநறும்பூ | புளிமாநறும்பூ | கருவிளநறும்பூ | கூவிளநறும்பூ + | தேமாந்தண்ணிழல் | புளிமாந்தண்ணிழல் | கருவிளந்தண்ணிழல் | கூவிளந்தண்ணிழல் + | தேமாநறுநிழல் | புளிமாநறுநிழல் | கருவிளநறுநிழல் | கூவிளநறுநிழல் ; -நாலசை : தேமாந்தண்பூ | தேமாந்தண்ணிழல் | தேமாநறும்பூ | தேமாநறுநிழல் | - புளிமாந்தண்பூ | புளிமாந்தண்ணிழல் | புளிமாநறும்பூ | புளிமாநறுநிழல் | - கருவிளந்தண்பூ | கருவிளந்தண்ணிழல் | கருவிளநறும்பூ | கருவிளநறுநிழல் | - கூவிளந்தண்பூ | கூவிளந்தண்ணிழல் | கூவிளநறும்பூ | கூவிளநறுநிழல் ; - -மூவசை : தேமாங்காய் | தேமாங்கனி | புளிமாங்காய் | புளிமாங்கனி | - கருவிளங்காய் | கருவிளங்கனி | கூவிளங்காய் | கூவிளங்கனி ; +// மூவசைச்சீர்கள் - 8 : all காய் before any கனி. +மூவசை : தேமாங்காய் | புளிமாங்காய் | கருவிளங்காய் | கூவிளங்காய் + | தேமாங்கனி | புளிமாங்கனி | கருவிளங்கனி | கூவிளங்கனி ; +// ஈரசைச்சீர்கள் - 4 ஈரசை : தேமா | புளிமா | கருவிளம் | கூவிளம் ; -// நாலசைச்சீர்கள் - 16 -தேமாந்தண்பூ : தேமாங்காய் நேர் ; -தேமாந்தண்ணிழல் : தேமாங்காய் நிரை ; -தேமாநறும்பூ : தேமாங்கனி நேர் ; -தேமாநறுநிழல்: தேமாங்கனி நிரை ; +// நாலசைச்சீர்கள் +தேமாந்தண்பூ : தேமாங்காய் நேர் ; +தேமாந்தண்ணிழல் : தேமாங்காய் நிரை ; +தேமாநறும்பூ : தேமாங்கனி நேர் ; +தேமாநறுநிழல் : தேமாங்கனி நிரை ; -புளிமாந்தண்பூ: புளிமாங்காய் நேர் ; +புளிமாந்தண்பூ : புளிமாங்காய் நேர் ; புளிமாந்தண்ணிழல் : புளிமாங்காய் நிரை ; -புளிமாநறும்பூ : புளிமாங்கனி நேர் ; -புளிமாநறுநிழல் : புளிமாங்கனி நிரை ; +புளிமாநறும்பூ : புளிமாங்கனி நேர் ; +புளிமாநறுநிழல் : புளிமாங்கனி நிரை ; -கருவிளந்தண்பூ : கருவிளங்காய் நேர் ; +கருவிளந்தண்பூ : கருவிளங்காய் நேர் ; கருவிளந்தண்ணிழல் : கருவிளங்காய் நிரை ; -கருவிளநறும்பூ : கருவிளங்கனி நேர் ; -கருவிளநறுநிழல் : கருவிளங்கனி நிரை ; - -கூவிளந்தண்பூ : கூவிளங்காய் நேர் ; -கூவிளந்தண்ணிழல் : கூவிளங்காய் நிரை ; -கூவிளநறும்பூ : கூவிளங்கனி நேர் ; -கூவிளநறுநிழல் : கூவிளங்கனி நிரை ; - +கருவிளநறும்பூ : கருவிளங்கனி நேர் ; +கருவிளநறுநிழல் : கருவிளங்கனி நிரை ; +கூவிளந்தண்பூ : கூவிளங்காய் நேர் ; +கூவிளந்தண்ணிழல் : கூவிளங்காய் நிரை ; +கூவிளநறும்பூ : கூவிளங்கனி நேர் ; +கூவிளநறுநிழல் : கூவிளங்கனி நிரை ; -// மூவசைச்சீர்கள் - 8 -தேமாங்காய் : தேமா நேர் ; -தேமாங்கனி : தேமா நிரை ; - +// மூவசைச்சீர்கள் +தேமாங்காய் : தேமா நேர் ; +தேமாங்கனி : தேமா நிரை ; புளிமாங்காய் : புளிமா நேர் ; -புளிமாங்கனி : புளிமா நிரை ; - +புளிமாங்கனி : புளிமா நிரை ; கருவிளங்காய் : கருவிளம் நேர் ; -கருவிளங்கனி : கருவிளம் நிரை ; - -கூவிளங்காய் : கூவிளம் நேர் ; -கூவிளங்கனி : கூவிளம் நிரை ; - -// ஈரசைச்சீர்கள் - 4 -தேமா: நேர் நேர் ; -புளிமா: நிரை நேர் ; -கருவிளம்: நிரை நிரை ; -கூவிளம்: நேர் நிரை ; - -// ஓரசைச்சீர்கள் -நேர்: குறில் | நெடில் | குறில் (ஆய்தம் | ஒற்று+) | நெடில் (ஆய்தம் | ஒற்று+) ; -நிரை: குறில் குறில் | குறில் நெடில் | குறில் குறில் (ஆய்தம் | ஒற்று+) | குறில் நெடில் (ஆய்தம் | ஒற்று+) ; - -I: ' ' ; - -ஒற்று: 'க்'|'ச்'|'ட்'|'த்'|'ப்'|'ற்'|'ஞ்'|'ங்'|'ண்'|'ந்'|'ம்'|'ன்'|'ய்'|'ர்'|'ல்'|'வ்'|'ழ்'|'ள்' ; +கருவிளங்கனி : கருவிளம் நிரை ; +கூவிளங்காய் : கூவிளம் நேர் ; +கூவிளங்கனி : கூவிளம் நிரை ; + +// ஈரசைச்சீர்கள் — the first அசை is foot-initial +தேமா : நேர் நேர் ; +புளிமா : முதல்நிரை நேர் ; +கருவிளம் : முதல்நிரை நிரை ; +கூவிளம் : நேர் நிரை ; + +// ஓரசை +// நேர்: one syllable (குறில் or நெடில், including a shortened ஐ), optionally closed by +// ஆய்தம் or one or more ஒற்று. +நேர் : (குறில் | நெடில் | ஐகாரக்குறுக்கம்) (ஆய்தம் | ஒற்று+)? ; +// நிரை: குறில் + any syllable, optionally closed. Foot-initial form: first must be a true குறில். +முதல்நிரை : குறில் (குறில் | நெடில் | ஐகாரக்குறுக்கம்) (ஆய்தம் | ஒற்று+)? ; +நிரை : (குறில் | ஐகாரக்குறுக்கம்) (குறில் | நெடில் | ஐகாரக்குறுக்கம்) (ஆய்தம் | ஒற்று+)? ; + +// Lexer rules shared with importers (ANTLR needs ASCII-uppercase names for lexer rules; +// Tamil letters are caseless so every Tamil-named rule is a parser rule). +I : [ \t]+ ; +NL : '\r'? '\n' ; + +ஒற்று : 'க்'|'ச்'|'ட்'|'த்'|'ப்'|'ற்'|'ஞ்'|'ங்'|'ண்'|'ந்'|'ம்'|'ன்'|'ய்'|'ர்'|'ல்'|'வ்'|'ழ்'|'ள்' ; + +ஆய்தம் : 'ஃ' ; + +// ஐ with a consonant: shortened (ஐகாரக்குறுக்கம்) except at the start of a foot, see header. +ஐகாரக்குறுக்கம் : + 'கை'|'ஙை'|'சை'|'ஞை'|'டை'|'ணை'|'தை'|'நை'|'பை'|'மை'|'யை'|'ரை'|'லை'|'வை'|'ழை'|'ளை'|'றை'|'னை' + ; -குறில்: +குறில் : 'அ'|'இ'|'உ'|'எ'|'ஒ'| 'க'|'கி'|'கு'|'கெ'|'கொ'| 'ங'|'ஙி'|'ஙு'|'ஙெ'|'ஙொ'| @@ -95,26 +122,26 @@ I: ' ' ; 'ன'|'னி'|'னு'|'னெ'|'னொ' ; -நெடில்: - 'ஆ'|'ஈ'|'ஊ'|'ஏ'|'ஐ'|'ஓ'|'ஒள'| - 'கா'|'கீ'|'கூ'|'கே'|'கை'|'கோ'|'கௌ'| - 'ஙா'|'ஙீ'|'ஙூ'|'ஙே'|'ஙை'|'ஙோ'|'ஙௌ'| - 'சா'|'சீ'|'சூ'|'சே'|'சை'|'சோ'|'சௌ'| - 'ஞா'|'ஞீ'|'ஞூ'|'ஞே'|'ஞை'|'ஞோ'|'ஞௌ'| - 'டா'|'டீ'|'டூ'|'டே'|'டை'|'டோ'|'டௌ'| - 'ணா'|'ணீ'|'ணூ'|'ணே'|'ணை'|'ணோ'|'ணௌ'| - 'தா'|'தீ'|'தூ'|'தே'|'தை'|'தோ'|'தௌ'| - 'நா'|'நீ'|'நூ'|'நே'|'நை'|'நோ'|'நௌ'| - 'பா'|'பீ'|'பூ'|'பே'|'பை'|'போ'|'பௌ'| - 'மா'|'மீ'|'மூ'|'மே'|'மை'|'மோ'|'மௌ'| - 'யா'|'யீ'|'யூ'|'யே'|'யை'|'யோ'|'யௌ'| - 'ரா'|'ரீ'|'ரூ'|'ரே'|'ரை'|'ரோ'|'ரௌ'| - 'லா'|'லீ'|'லூ'|'லே'|'லை'|'லோ'|'லௌ'| - 'வா'|'வீ'|'வூ'|'வே'|'வை'|'வோ'|'வௌ'| - 'ழா'|'ழீ'|'ழூ'|'ழே'|'ழை'|'ழோ'|'ழௌ'| - 'ளா'|'ளீ'|'ளூ'|'ளே'|'ளை'|'ளோ'|'ளௌ'| - 'றா'|'றீ'|'றூ'|'றே'|'றை'|'றோ'|'றௌ'| - 'னா'|'னீ'|'னூ'|'னே'|'னை'|'னோ'|'னௌ' +// The bare vowel letter ஐ (word-initial only) stays நெடில். The ஐ-series with consonants +// lives in ஐகாரக்குறுக்கம் above. ஔ is U+0B94 (the old file had the two-letter 'ஒள'). +நெடில் : + 'ஆ'|'ஈ'|'ஊ'|'ஏ'|'ஐ'|'ஓ'|'ஔ'| + 'கா'|'கீ'|'கூ'|'கே'|'கோ'|'கௌ'| + 'ஙா'|'ஙீ'|'ஙூ'|'ஙே'|'ஙோ'|'ஙௌ'| + 'சா'|'சீ'|'சூ'|'சே'|'சோ'|'சௌ'| + 'ஞா'|'ஞீ'|'ஞூ'|'ஞே'|'ஞோ'|'ஞௌ'| + 'டா'|'டீ'|'டூ'|'டே'|'டோ'|'டௌ'| + 'ணா'|'ணீ'|'ணூ'|'ணே'|'ணோ'|'ணௌ'| + 'தா'|'தீ'|'தூ'|'தே'|'தோ'|'தௌ'| + 'நா'|'நீ'|'நூ'|'நே'|'நோ'|'நௌ'| + 'பா'|'பீ'|'பூ'|'பே'|'போ'|'பௌ'| + 'மா'|'மீ'|'மூ'|'மே'|'மோ'|'மௌ'| + 'யா'|'யீ'|'யூ'|'யே'|'யோ'|'யௌ'| + 'ரா'|'ரீ'|'ரூ'|'ரே'|'ரோ'|'ரௌ'| + 'லா'|'லீ'|'லூ'|'லே'|'லோ'|'லௌ'| + 'வா'|'வீ'|'வூ'|'வே'|'வோ'|'வௌ'| + 'ழா'|'ழீ'|'ழூ'|'ழே'|'ழோ'|'ழௌ'| + 'ளா'|'ளீ'|'ளூ'|'ளே'|'ளோ'|'ளௌ'| + 'றா'|'றீ'|'றூ'|'றே'|'றோ'|'றௌ'| + 'னா'|'னீ'|'னூ'|'னே'|'னோ'|'னௌ' ; - -ஆய்தம் : 'ஃ'; diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.g4" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.g4" index fdd6ff5..e7c9ccc 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.g4" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.g4" @@ -3,7 +3,7 @@ import சீர்; // start: வெண்பா ; -வெண்பா : குறள்_வெண்பா | நேரிசை_வெண்பா | பஃறொடை_வெண்பா | கலி_வெண்பா ; +வெண்பா : (குறள்_வெண்பா | நேரிசை_வெண்பா | பஃறொடை_வெண்பா | கலி_வெண்பா) EOF ; குறள்_வெண்பா : அடி ஈற்றடி ; சிந்தியல்_வெண்பா : அடி அடி ஈற்றடி ; @@ -20,7 +20,7 @@ import சீர்; கலி_வெண்பா : அடி அடி அடி அடி அடி அடி அடி அடி அடி அடி அடி அடி+ ஈற்றடி ; -அடி: சீர் I சீர் I சீர் I சீர் '\n'; +அடி: சீர் I சீர் I சீர் I சீர் NL ; ஈற்றடி: சீர் I சீர் I ஈற்றுச்சீர் ; // சீர்: ஈரசை | மூவசை ; @@ -34,70 +34,12 @@ import சீர்; // மூவசை: தேமாங்காய் | புளிமாங்காய்| கருவிளங்காய் | கூவிளங்காய் ; -தேமா: நேர் நேர் ; -புளிமா: நிரை நேர் ; -கருவிளம்: நிரை நிரை ; -கூவிளம்: நேர் நிரை ; - -தேமாங்காய்: தேமா நேர் ; -புளிமாங்காய்: புளிமா நேர் ; -கருவிளங்காய்: கருவிளம் நேர் ; -கூவிளங்காய்: கூவிளம் நேர் ; +// தேமா ... கூவிளங்காய் come from the imported சீர் grammar. // அசை: நிரை |நேர் ; நாள்: நேர் ; -மலர்: நிரை ; +மலர்: முதல்நிரை ; காசு: நேர் நேர் ; -பிறப்பு: நிரை நேர் ; - -// நேர்: குறில் | நெடில் | குறில் ஒற்று | நெடில் ஒற்று ; -// நிரை: குறில் குறில் | குறில் நெடில் | குறில் குறில் ஒற்று | குறில் நெடில் ஒற்று ; - -// I: ' ' ; - -// ஒற்று: 'க்'|'ச்'|'ட்'|'த்'|'ப்'|'ற்'|'ஞ்'|'ங்'|'ண்'|'ந்'|'ம்'|'ன்'|'ய்'|'ர்'|'ல்'|'வ்'|'ழ்'|'ள்' ; - -// குறில்: -// 'அ'|'இ'|'உ'|'எ'|'ஒ'| -// 'க'|'கி'|'கு'|'கெ'|'கொ'| -// 'ங'|'ஙி'|'ஙு'|'ஙெ'|'ஙொ'| -// 'ச'|'சி'|'சு'|'செ'|'சொ'| -// 'ஞ'|'ஞி'|'ஞு'|'ஞெ'|'ஞொ'| -// 'ட'|'டி'|'டு'|'டெ'|'டொ'| -// 'ண'|'ணி'|'ணு'|'ணெ'|'ணொ'| -// 'த'|'தி'|'து'|'தெ'|'தொ'| -// 'ந'|'நி'|'நு'|'நெ'|'நொ'| -// 'ப'|'பி'|'பு'|'பெ'|'பொ'| -// 'ம'|'மி'|'மு'|'மெ'|'மொ'| -// 'ய'|'யி'|'யு'|'யெ'|'யொ'| -// 'ர'|'ரி'|'ரு'|'ரெ'|'ரொ'| -// 'ல'|'லி'|'லு'|'லெ'|'லொ'| -// 'வ'|'வி'|'வு'|'வெ'|'வொ'| -// 'ழ'|'ழி'|'ழு'|'ழெ'|'ழொ'| -// 'ள'|'ளி'|'ளு'|'ளெ'|'ளொ'| -// 'ற'|'றி'|'று'|'றெ'|'றொ'| -// 'ன'|'னி'|'னு'|'னெ'|'னொ' -// ; +பிறப்பு: முதல்நிரை நேர் ; -// நெடில்: -// 'ஆ'|'ஈ'|'ஊ'|'ஏ'|'ஐ'|'ஓ'|'ஒள'| -// 'கா'|'கீ'|'கூ'|'கே'|'கை'|'கோ'|'கௌ'| -// 'ஙா'|'ஙீ'|'ஙூ'|'ஙே'|'ஙை'|'ஙோ'|'ஙௌ'| -// 'சா'|'சீ'|'சூ'|'சே'|'சை'|'சோ'|'சௌ'| -// 'ஞா'|'ஞீ'|'ஞூ'|'ஞே'|'ஞை'|'ஞோ'|'ஞௌ'| -// 'டா'|'டீ'|'டூ'|'டே'|'டை'|'டோ'|'டௌ'| -// 'ணா'|'ணீ'|'ணூ'|'ணே'|'ணை'|'ணோ'|'ணௌ'| -// 'தா'|'தீ'|'தூ'|'தே'|'தை'|'தோ'|'தௌ'| -// 'நா'|'நீ'|'நூ'|'நே'|'நை'|'நோ'|'நௌ'| -// 'பா'|'பீ'|'பூ'|'பே'|'பை'|'போ'|'பௌ'| -// 'மா'|'மீ'|'மூ'|'மே'|'மை'|'மோ'|'மௌ'| -// 'யா'|'யீ'|'யூ'|'யே'|'யை'|'யோ'|'யௌ'| -// 'ரா'|'ரீ'|'ரூ'|'ரே'|'ரை'|'ரோ'|'ரௌ'| -// 'லா'|'லீ'|'லூ'|'லே'|'லை'|'லோ'|'லௌ'| -// 'வா'|'வீ'|'வூ'|'வே'|'வை'|'வோ'|'வௌ'| -// 'ழா'|'ழீ'|'ழூ'|'ழே'|'ழை'|'ழோ'|'ழௌ'| -// 'ளா'|'ளீ'|'ளூ'|'ளே'|'ளை'|'ளோ'|'ளௌ'| -// 'றா'|'றீ'|'றூ'|'றே'|'றை'|'றோ'|'றௌ'| -// 'னா'|'னீ'|'னூ'|'னே'|'னை'|'னோ'|'னௌ' -// ; diff --git a/specs/2026-09-20-revival-and-roadmap.md b/specs/2026-09-20-revival-and-roadmap.md index 7086955..9e381ea 100644 --- a/specs/2026-09-20-revival-and-roadmap.md +++ b/specs/2026-09-20-revival-and-roadmap.md @@ -3,6 +3,11 @@ Status (2026-09-20): approved plan for reviving pytamil. Part 1 is being execute branch `srix`; review baseline is the git tag `before-revival-2026-09-20` (`git diff before-revival-2026-09-20..srix`). Parts 2+ are the roadmap. Plans and design notes live in specs/; docs/ is for end users. + +Progress: Part 1 merged to master 2026-09-20. Phase 1c = PR #9 (phase1/antlr-4.13), +Phase 1b = PR #10 (phase1/parser-helper, stacked on #9), Phase 1a = phase1/seer-grammar +(stacked on #10). Execution order was 1c -> 1b -> 1a because the toolchain upgrade +regenerates all parsers and 1a needs the helper for its error tests. --> # pytamil (பைந்தமிழ்): merge `srix` → `master`, then roadmap From c7818c93fab02933776a9d06f0049d8ab3625d8f Mon Sep 17 00:00:00 2001 From: Srix Date: Sun, 20 Sep 2026 16:29:20 +0530 Subject: [PATCH 2/4] =?UTF-8?q?=E0=AE=9A=E0=AF=80=E0=AE=B0=E0=AF=8D.g4,=20?= =?UTF-8?q?=E0=AE=B5=E0=AF=86=E0=AE=A3=E0=AF=8D=E0=AE=AA=E0=AE=BE.g4,=20te?= =?UTF-8?q?st=5F=E0=AE=9A=E0=AF=80=E0=AE=B0=E0=AF=8D:=20=E0=AE=95=E0=AF=81?= =?UTF-8?q?=E0=AE=B1=E0=AE=BF=E0=AE=AA=E0=AF=8D=E0=AE=AA=E0=AF=81=E0=AE=95?= =?UTF-8?q?=E0=AE=B3=E0=AF=88=E0=AE=A4=E0=AF=8D=20=E0=AE=A4=E0=AE=AE?= =?UTF-8?q?=E0=AE=BF=E0=AE=B4=E0=AE=BF=E0=AE=B2=E0=AF=8D=20=E0=AE=8E?= =?UTF-8?q?=E0=AE=B4=E0=AF=81=E0=AE=A4=E0=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit இலக்கணக் கருத்துகள் (அசை, சீர், ஐகாரக்குறுக்கம், மாற்றுத் தேர்வு நெறி) தமிழிலே விளக்கப்பட வேண்டும்; ANTLR நுட்பம் மட்டும் ஆங்கிலம். Generated code unchanged. Co-Authored-By: Claude Fable 5.1 --- ...32\340\257\200\340\256\260\340\257\215.py" | 10 ++-- ...32\340\257\200\340\256\260\340\257\215.g4" | 50 ++++++++++--------- ...43\340\257\215\340\256\252\340\256\276.g4" | 2 +- 3 files changed, 32 insertions(+), 30 deletions(-) diff --git "a/pytamil/tests/test_\340\256\232\340\257\200\340\256\260\340\257\215.py" "b/pytamil/tests/test_\340\256\232\340\257\200\340\256\260\340\257\215.py" index 4c79f16..daebb82 100644 --- "a/pytamil/tests/test_\340\256\232\340\257\200\340\256\260\340\257\215.py" +++ "b/pytamil/tests/test_\340\256\232\340\257\200\340\256\260\340\257\215.py" @@ -10,7 +10,7 @@ ("நீரினும்"), ("தண்மையும்"), ("வெம்மையும்"), - ("கையினை"), # foot-initial ஐ is நெடில்: கை/யினை, must not flip to புளிமா + ("கையினை"), # சீர்முதல் ஐ நெடில்: கை/யினை; புளிமா ஆகக் கூடாது ]) def test_கூவிளம்(பதம்): புது_சீர்_வாய்பாடு = சீர்.சீர்_வாய்பாடு_கொடு(பதம்) @@ -31,9 +31,9 @@ def test_புளிமாங்காய்(பதம்): @pytest.mark.parametrize("பதம்", [ ("கேண்மை"), - ("கையும்"), # foot-initial ஐ stays நெடில் + ("கையும்"), # சீர்முதல் ஐ நெடிலாகவே நிற்கும் ("மையும்"), - ("ஔவை"), # ஔ (U+0B94) used to be unlexable ('ஒள' typo) + ("ஔவை"), # ஔ (U+0B94) முன்பு பிரிக்கவே இயலாதிருந்தது ('ஒள' எழுத்துப்பிழை) ]) def test_தேமா(பதம்): assert "தேமா" == சீர்.சீர்_வாய்பாடு_கொடு(பதம்) @@ -41,7 +41,7 @@ def test_தேமா(பதம்): @pytest.mark.parametrize("பதம்", [ ("தலைவன்"), - ("ஒளியும்"), # ஒளி/யும்; guards the ஔ typo regression + ("ஒளியும்"), # ஒளி/யும்; ஔ பிழை மீண்டும் வராமல் காக்கிறது ("அகர"), ]) def test_புளிமா(பதம்): @@ -49,7 +49,7 @@ def test_புளிமா(பதம்): @pytest.mark.parametrize("பதம்", [ - ("வழிபடுக"), # காய் before கனி: வழி/படு/க, not புளிமாங்கனி + ("வழிபடுக"), # காய் முன் கனி பின்: வழி/படு/க; புளிமாங்கனி அன்று ("னடியவற்காச்"), ]) def test_கருவிளங்காய்(பதம்): diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\232\340\257\200\340\256\260\340\257\215.g4" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\232\340\257\200\340\256\260\340\257\215.g4" index 6601452..f70af7a 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\232\340\257\200\340\256\260\340\257\215.g4" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\232\340\257\200\340\256\260\340\257\215.g4" @@ -1,19 +1,20 @@ grammar சீர்; -// சீர் (metrical foot) = 2, 3 or 4 அசை. Imported by வெண்பா.g4 and ஆசிரியப்பா.g4, which -// override the `சீர்` start rule with their own foot inventory but reuse everything below. +// சீர் = இரண்டு, மூன்று அல்லது நான்கு அசைகள். இந்த இலக்கணத்தை வெண்பா.g4, ஆசிரியப்பா.g4 +// இரண்டும் import செய்கின்றன; அவை `சீர்` தொடக்க விதியை மட்டும் தம் சீர் வகைகளுக்கு ஏற்ப +// மாற்றி எழுதி, கீழுள்ள மற்ற விதிகள் எல்லாவற்றையும் அப்படியே பயன்படுத்துகின்றன. // -// AMBIGUITY POLICY (importers rely on this): a word usually has more than one legal -// scansion (e.g. வானினும் = வா/னினும் or வா/னி/னும்). ANTLR picks the FIRST viable -// alternative, so the order of alternatives is the policy: -// * fewer அசை before more அசை (ஈரசை before மூவசை before நாலசை), -// * மா before விளம், காய் before கனி (within each group). +// மாற்றுத் தேர்வு நெறி (import செய்யும் இலக்கணங்கள் இதை நம்பியுள்ளன): ஒரு சொல்லுக்குப் +// பெரும்பாலும் ஒன்றுக்கு மேற்பட்ட அசைபிரிப்பு இயலும் (எ.கா. வானினும் = வா/னினும் அல்லது +// வா/னி/னும்). ANTLR பொருந்தும் முதல் மாற்றையே தேர்கிறது; ஆகவே மாற்றுகளின் வரிசையே நெறி: +// * குறைந்த அசைகள் முன், கூடிய அசைகள் பின் (ஈரசை, பின் மூவசை, பின் நாலசை) +// * மாச்சீர் முன் விளச்சீர்; காய்ச்சீர் முன் கனிச்சீர் (ஒவ்வொரு தொகுதியிலும்) // -// ஐகாரக்குறுக்கம்: an ஐ syllable at the start of a foot is a full நெடில் -// (கை/யினை = கூவிளம், கை/யும் = தேமா). Inside or at the end of a foot the ஐ is shortened -// and scans as குறில், so it may begin a நிரை there (தண்/மையும் = நேர் நிரை = கூவிளம்). -// Hence முதல்நிரை (foot-initial) requires a true குறில் first; நிரை (later) also accepts -// ஐகாரக்குறுக்கம். Decided 2026-09-20, see specs/2026-09-20-revival-and-roadmap.md. +// ஐகாரக்குறுக்கம்: சீரின் முதலில் வரும் ஐகார அசை முழு நெடில் (கை/யினை = கூவிளம், +// கை/யும் = தேமா). சீரின் இடையிலும் கடையிலும் ஐ குறுகி, குறிலாக அசை கொள்ளும்; அங்கு அது +// நிரையின் முதலெழுத்தாக வரலாம் (தண்/மையும் = நேர் நிரை = கூவிளம்). எனவே சீர்முதல் நிரை +// (முதல்நிரை) உண்மைக் குறிலால் தொடங்க வேண்டும்; பின்வரும் நிரை ஐகாரக்குறுக்கத்தையும் ஏற்கும். +// முடிவு: 2026-09-20, specs/2026-09-20-revival-and-roadmap.md. சீர் : (ஈரசை | மூவசை | நாலசை) EOF ; @@ -27,14 +28,14 @@ grammar சீர்; வெண்சீர் : தேமாங்காய் | புளிமாங்காய் | கருவிளங்காய் | கூவிளங்காய் ; -// நாலசைச்சீர்கள் - 16 : the eight ending in நேர் (...தண்பூ / ...நறும்பூ) before the eight -// ending in நிரை (...தண்ணிழல் / ...நறுநிழல்), காய் before கனி. +// நாலசைச்சீர்கள் - 16 : நேரில் முடியும் எட்டு (...தண்பூ / ...நறும்பூ) முன்; +// நிரையில் முடியும் எட்டு (...தண்ணிழல் / ...நறுநிழல்) பின்; காய் முன், கனி பின். நாலசை : தேமாந்தண்பூ | புளிமாந்தண்பூ | கருவிளந்தண்பூ | கூவிளந்தண்பூ | தேமாநறும்பூ | புளிமாநறும்பூ | கருவிளநறும்பூ | கூவிளநறும்பூ | தேமாந்தண்ணிழல் | புளிமாந்தண்ணிழல் | கருவிளந்தண்ணிழல் | கூவிளந்தண்ணிழல் | தேமாநறுநிழல் | புளிமாநறுநிழல் | கருவிளநறுநிழல் | கூவிளநறுநிழல் ; -// மூவசைச்சீர்கள் - 8 : all காய் before any கனி. +// மூவசைச்சீர்கள் - 8 : காய்ச்சீர்கள் நான்கும் முன், கனிச்சீர்கள் பின். மூவசை : தேமாங்காய் | புளிமாங்காய் | கருவிளங்காய் | கூவிளங்காய் | தேமாங்கனி | புளிமாங்கனி | கருவிளங்கனி | கூவிளங்கனி ; @@ -72,22 +73,23 @@ grammar சீர்; கூவிளங்காய் : கூவிளம் நேர் ; கூவிளங்கனி : கூவிளம் நிரை ; -// ஈரசைச்சீர்கள் — the first அசை is foot-initial +// ஈரசைச்சீர்கள் — முதல் அசை சீர்முதல் அசை தேமா : நேர் நேர் ; புளிமா : முதல்நிரை நேர் ; கருவிளம் : முதல்நிரை நிரை ; கூவிளம் : நேர் நிரை ; // ஓரசை -// நேர்: one syllable (குறில் or நெடில், including a shortened ஐ), optionally closed by -// ஆய்தம் or one or more ஒற்று. +// நேர்: ஓரெழுத்து அசை (குறில் அல்லது நெடில்; குறுகிய ஐயும் அடங்கும்); பின் ஆய்தம் அல்லது +// ஒன்று/பல ஒற்று வரலாம். நேர் : (குறில் | நெடில் | ஐகாரக்குறுக்கம்) (ஆய்தம் | ஒற்று+)? ; -// நிரை: குறில் + any syllable, optionally closed. Foot-initial form: first must be a true குறில். +// நிரை: குறில் + ஏதேனும் ஓர் எழுத்து; பின் ஒற்று வரலாம். சீர்முதல் வடிவம் (முதல்நிரை): முதலெழுத்து உண்மைக் குறில். முதல்நிரை : குறில் (குறில் | நெடில் | ஐகாரக்குறுக்கம்) (ஆய்தம் | ஒற்று+)? ; நிரை : (குறில் | ஐகாரக்குறுக்கம்) (குறில் | நெடில் | ஐகாரக்குறுக்கம்) (ஆய்தம் | ஒற்று+)? ; -// Lexer rules shared with importers (ANTLR needs ASCII-uppercase names for lexer rules; -// Tamil letters are caseless so every Tamil-named rule is a parser rule). +// import செய்யும் இலக்கணங்களுடன் பகிரும் lexer விதிகள். (ANTLR-இல் lexer விதிப் பெயர் ஆங்கிலப் +// பேரெழுத்தில் தொடங்க வேண்டும்; தமிழ் எழுத்தில் பேரெழுத்து/சிற்றெழுத்து வேறுபாடு இல்லாததால் +// தமிழ்ப் பெயர் கொண்ட விதிகள் எல்லாம் parser விதிகளாகவே கொள்ளப்படுகின்றன.) I : [ \t]+ ; NL : '\r'? '\n' ; @@ -95,7 +97,7 @@ NL : '\r'? '\n' ; ஆய்தம் : 'ஃ' ; -// ஐ with a consonant: shortened (ஐகாரக்குறுக்கம்) except at the start of a foot, see header. +// மெய்யொடு கூடிய ஐ: சீர்முதலில் அன்றி மற்ற இடங்களில் குறுகும் (ஐகாரக்குறுக்கம்); தலைப்புக் குறிப்பைக் காண்க. ஐகாரக்குறுக்கம் : 'கை'|'ஙை'|'சை'|'ஞை'|'டை'|'ணை'|'தை'|'நை'|'பை'|'மை'|'யை'|'ரை'|'லை'|'வை'|'ழை'|'ளை'|'றை'|'னை' ; @@ -122,8 +124,8 @@ NL : '\r'? '\n' ; 'ன'|'னி'|'னு'|'னெ'|'னொ' ; -// The bare vowel letter ஐ (word-initial only) stays நெடில். The ஐ-series with consonants -// lives in ஐகாரக்குறுக்கம் above. ஔ is U+0B94 (the old file had the two-letter 'ஒள'). +// தனி உயிரெழுத்து ஐ (மொழிமுதலில் மட்டும் வரும்) நெடிலாகவே நிற்கிறது; மெய்யொடு கூடிய ஐ வரிசை +// மேலே ஐகாரக்குறுக்கம் விதியில். ஔ = U+0B94 (பழைய கோப்பில் இரண்டெழுத்து 'ஒள' இருந்தது). நெடில் : 'ஆ'|'ஈ'|'ஊ'|'ஏ'|'ஐ'|'ஓ'|'ஔ'| 'கா'|'கீ'|'கூ'|'கே'|'கோ'|'கௌ'| diff --git "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.g4" "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.g4" index e7c9ccc..fe82593 100644 --- "a/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.g4" +++ "b/pytamil/\340\256\244\340\256\256\340\256\277\340\256\264\340\257\215/resources/\340\256\265\340\257\206\340\256\243\340\257\215\340\256\252\340\256\276.g4" @@ -34,7 +34,7 @@ import சீர்; // மூவசை: தேமாங்காய் | புளிமாங்காய்| கருவிளங்காய் | கூவிளங்காய் ; -// தேமா ... கூவிளங்காய் come from the imported சீர் grammar. +// தேமா முதல் கூவிளங்காய் வரை import செய்த சீர் இலக்கணத்திலிருந்து வருகின்றன. // அசை: நிரை |நேர் ; From 44056927762a8859ab912edfcaa68bba5edc6c0c Mon Sep 17 00:00:00 2001 From: Srix Date: Sun, 20 Sep 2026 14:42:12 +0530 Subject: [PATCH 3/4] Add CI: pytest on Python 3.10 and 3.12, plus a codegen-drift check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit .github/workflows/test.yml - pytest job, matrix 3.10 / 3.12, pip install -r requirements.txt. - codegen-drift job: installs Java, runs codegen.sh and fails if anything under pytamil/தமிழ்/codegen differs, so the committed parsers can never fall out of sync with the .g4 grammars. requirements.txt: PyYAML 6.0 -> 6.0.2. 6.0 fails to build on Python 3.12 (Cython 3 build_ext incompatibility); 6.0.2 supports 3.8-3.13. Verified locally: 116 passed, 9 xfailed on both 3.10 and 3.12. Roadmap Phase 1d (specs/2026-09-20-revival-and-roadmap.md). Co-Authored-By: Claude Fable 5.1 --- .github/workflows/test.yml | 40 ++++++++++++++++++++++++++++++++++++++ requirements.txt | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..e89c277 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,40 @@ +name: tests + +on: + push: + branches: ["master", "phase*/**", "srix"] + pull_request: + +jobs: + pytest: + name: pytest (py${{ matrix.python }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python: ["3.10", "3.12"] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + cache: pip + - run: python -m pip install -r requirements.txt + - run: python -m pytest -q + + codegen-drift: + # The generated parsers under pytamil/தமிழ்/codegen are committed. Regenerate them + # from the grammars and fail if anything differs, so grammar and codegen cannot drift. + name: codegen matches grammars + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "21" + - run: bash codegen.sh + - name: fail on drift + run: | + git status --porcelain -- pytamil/தமிழ்/codegen + git diff --exit-code --stat -- pytamil/தமிழ்/codegen diff --git a/requirements.txt b/requirements.txt index 5dd6522..cfc869a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,7 +10,7 @@ Open-Tamil==1.1 packaging==23.1 pluggy==1.0.0 pytest==7.3.1 -PyYAML==6.0 +PyYAML==6.0.2 # 6.0 does not build on Python 3.12+ regex==2023.5.5 TatSu==5.8.3 tomli==2.0.1 From 4a7c00063066ad499a13a2c7cca4b8b4f19496af Mon Sep 17 00:00:00 2001 From: Srix Date: Sun, 20 Sep 2026 14:43:41 +0530 Subject: [PATCH 4/4] CI: bump actions to current majors (checkout v5, setup-python v6, setup-java v5) The first run warned that v4/v5 of these target the deprecated Node 20 runtime. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e89c277..86795c7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,8 +14,8 @@ jobs: matrix: python: ["3.10", "3.12"] steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python }} cache: pip @@ -28,8 +28,8 @@ jobs: name: codegen matches grammars runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 + - uses: actions/checkout@v5 + - uses: actions/setup-java@v5 with: distribution: temurin java-version: "21"