diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/_TEALLexer.java b/src/main/gen/com/bloxbean/algodea/idea/language/_TEALLexer.java index e91e90d..a795326 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/_TEALLexer.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/_TEALLexer.java @@ -75,24 +75,25 @@ public static int ZZ_CMAP(int ch) { "\1\16\1\17\1\20\1\21\1\22\1\6\1\23\1\6"+ "\1\24\1\25\1\26\1\0\1\27\3\0\5\6\1\30"+ "\6\6\1\7\1\6\1\31\1\32\1\33\1\34\1\35"+ - "\1\36\1\37\1\0\1\40\1\41\1\42\67\6\1\43"+ + "\1\36\1\37\1\0\1\40\1\41\1\42\71\6\1\43"+ "\1\44\1\45\1\46\1\47\1\50\2\6\1\51\2\6"+ "\1\52\4\6\1\7\5\6\1\53\1\54\1\55\1\56"+ - "\1\6\1\57\1\60\5\6\1\61\2\6\1\62\12\6"+ - "\1\7\4\6\1\63\1\6\1\64\1\6\1\65\36\6"+ + "\1\6\1\57\1\60\5\6\1\61\2\6\1\62\13\6"+ + "\1\7\4\6\1\63\1\6\1\64\1\6\1\65\37\6"+ "\1\62\1\66\1\67\1\52\3\6\1\70\1\71\3\6"+ - "\1\62\5\6\1\72\2\6\1\62\1\73\1\74\5\6"+ - "\1\52\11\6\1\75\5\6\1\76\1\77\36\6\1\67"+ - "\1\52\3\6\1\100\60\6\1\101\15\6\1\102\1\103"+ - "\12\6\1\104\2\6\1\105\2\6\1\106\64\6\1\107"+ - "\5\6\1\110\1\111\1\112\3\6\1\113\45\6\1\114"+ - "\12\6\1\115\22\6\1\116\34\6\1\117\10\6\1\120"+ - "\53\6\1\121\1\122\21\6\1\123\6\6\1\124\17\6"+ - "\1\125\4\6\1\126\14\6\1\127\30\6\1\130\3\6"+ - "\1\57\16\6\1\131\1\132\1\133\47\6"; + "\1\62\5\6\1\72\2\6\1\62\1\73\1\74\6\6"+ + "\1\52\3\6\1\75\7\6\1\76\6\6\1\77\1\100"+ + "\36\6\1\67\1\52\3\6\1\101\15\6\1\67\1\6"+ + "\1\62\43\6\1\102\16\6\1\67\1\103\1\104\12\6"+ + "\1\105\2\6\1\106\2\6\1\107\5\6\1\110\60\6"+ + "\1\111\5\6\1\112\1\113\1\114\3\6\1\115\45\6"+ + "\1\116\13\6\1\117\22\6\1\120\34\6\1\121\10\6"+ + "\1\122\52\6\1\123\1\124\21\6\1\125\6\6\1\126"+ + "\17\6\1\127\4\6\1\130\14\6\1\131\30\6\1\132"+ + "\3\6\1\57\16\6\1\133\1\134\1\135\47\6"; private static int [] zzUnpackAction() { - int [] result = new int[754]; + int [] result = new int[769]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -134,87 +135,89 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\u1cb3\0\u1d02\0\u1d51\0\u1da0\0\u1def\0\u1e3e\0\u1e8d\0\u1edc"+ "\0\u1f2b\0\u1f7a\0\u1fc9\0\u2018\0\u2067\0\u20b6\0\u2105\0\u2154"+ "\0\u21a3\0\u21f2\0\u2241\0\u2290\0\u22df\0\u232e\0\u237d\0\u23cc"+ - "\0\u241b\0\u246a\0\u24b9\0\u2508\0\u2557\0\u25a6\0\u0316\0\117"+ - "\0\117\0\117\0\117\0\117\0\u25f5\0\u2644\0\u2693\0\u26e2"+ - "\0\u2731\0\u2780\0\u27cf\0\u281e\0\u286d\0\u28bc\0\u0316\0\u290b"+ - "\0\u295a\0\u29a9\0\u29f8\0\u2a47\0\u0316\0\117\0\117\0\117"+ - "\0\u2a96\0\u0316\0\u0316\0\u2ae5\0\u2b34\0\u2b83\0\u2bd2\0\u2c21"+ + "\0\u241b\0\u246a\0\u24b9\0\u2508\0\u2557\0\u25a6\0\u25f5\0\u2644"+ + "\0\u0316\0\117\0\117\0\117\0\117\0\117\0\u2693\0\u26e2"+ + "\0\u2731\0\u2780\0\u27cf\0\u281e\0\u286d\0\u28bc\0\u290b\0\u295a"+ + "\0\u0316\0\u29a9\0\u29f8\0\u2a47\0\u2a96\0\u2ae5\0\u0316\0\117"+ + "\0\117\0\117\0\u2b34\0\u0316\0\u0316\0\u2b83\0\u2bd2\0\u2c21"+ "\0\u2c70\0\u2cbf\0\u2d0e\0\u2d5d\0\u2dac\0\u2dfb\0\u2e4a\0\u2e99"+ "\0\u2ee8\0\u2f37\0\u2f86\0\u2fd5\0\u3024\0\u3073\0\u30c2\0\u3111"+ - "\0\u3160\0\u31af\0\u31fe\0\u0316\0\u324d\0\u0316\0\u329c\0\u0316"+ - "\0\u32eb\0\u333a\0\u3389\0\u33d8\0\u3427\0\u3476\0\u34c5\0\u3514"+ + "\0\u3160\0\u31af\0\u31fe\0\u324d\0\u329c\0\u32eb\0\u0316\0\u333a"+ + "\0\u0316\0\u3389\0\u0316\0\u33d8\0\u3427\0\u3476\0\u34c5\0\u3514"+ "\0\u3563\0\u35b2\0\u3601\0\u3650\0\u369f\0\u36ee\0\u373d\0\u378c"+ "\0\u37db\0\u382a\0\u3879\0\u38c8\0\u3917\0\u3966\0\u39b5\0\u3a04"+ - "\0\u3a53\0\u3aa2\0\u3af1\0\u3b40\0\u3b8f\0\u3bde\0\u3c2d\0\u0316"+ - "\0\u3c7c\0\u3ccb\0\u3d1a\0\u3d69\0\u3db8\0\u0316\0\u2693\0\u3e07"+ - "\0\u3e56\0\u3ea5\0\u3ef4\0\u3f43\0\u3f92\0\u3fe1\0\u4030\0\u407f"+ - "\0\u0316\0\u40ce\0\u411d\0\u0316\0\u0316\0\u0316\0\u416c\0\u41bb"+ - "\0\u420a\0\u4259\0\u42a8\0\u42f7\0\u4346\0\u4395\0\u43e4\0\u4433"+ - "\0\u4482\0\u44d1\0\u4520\0\u456f\0\u45be\0\u0316\0\u460d\0\u465c"+ - "\0\u46ab\0\u46fa\0\u4749\0\u0316\0\u0316\0\u4798\0\u47e7\0\u4836"+ - "\0\u4885\0\u48d4\0\u4923\0\u4972\0\u49c1\0\u4a10\0\u4a5f\0\u4aae"+ - "\0\u4afd\0\u4b4c\0\u4b9b\0\u4bea\0\u4c39\0\u4c88\0\u4cd7\0\u4d26"+ - "\0\u4d75\0\u4dc4\0\u4e13\0\u4e62\0\u4eb1\0\u4f00\0\u4f4f\0\u4f9e"+ - "\0\u4fed\0\u503c\0\u508b\0\u0316\0\u0316\0\u50da\0\u5129\0\u5178"+ - "\0\u0316\0\u51c7\0\u5216\0\u5265\0\u52b4\0\u5303\0\u5352\0\u53a1"+ - "\0\u53f0\0\u543f\0\u548e\0\u54dd\0\u552c\0\u557b\0\u55ca\0\u5619"+ + "\0\u3a53\0\u3aa2\0\u3af1\0\u3b40\0\u3b8f\0\u3bde\0\u3c2d\0\u3c7c"+ + "\0\u3ccb\0\u3d1a\0\u3d69\0\u0316\0\u3db8\0\u3e07\0\u3e56\0\u3ea5"+ + "\0\u3ef4\0\u0316\0\u2731\0\u3f43\0\u3f92\0\u3fe1\0\u4030\0\u407f"+ + "\0\u40ce\0\u411d\0\u416c\0\u41bb\0\u0316\0\u420a\0\u4259\0\u0316"+ + "\0\u0316\0\u0316\0\u42a8\0\u42f7\0\u4346\0\u4395\0\u43e4\0\u4433"+ + "\0\u4482\0\u44d1\0\u4520\0\u456f\0\u0316\0\u45be\0\u460d\0\u465c"+ + "\0\u46ab\0\u46fa\0\u4749\0\u4798\0\u0316\0\u47e7\0\u4836\0\u4885"+ + "\0\u48d4\0\u4923\0\u4972\0\u0316\0\u0316\0\u49c1\0\u4a10\0\u4a5f"+ + "\0\u4aae\0\u4afd\0\u4b4c\0\u4b9b\0\u4bea\0\u4c39\0\u4c88\0\u4cd7"+ + "\0\u4d26\0\u4d75\0\u4dc4\0\u4e13\0\u4e62\0\u4eb1\0\u4f00\0\u4f4f"+ + "\0\u4f9e\0\u4fed\0\u503c\0\u508b\0\u50da\0\u5129\0\u5178\0\u51c7"+ + "\0\u5216\0\u5265\0\u52b4\0\u5303\0\u0316\0\u5352\0\u53a1\0\u53f0"+ + "\0\u0316\0\u543f\0\u548e\0\u54dd\0\u552c\0\u557b\0\u55ca\0\u5619"+ "\0\u5668\0\u56b7\0\u5706\0\u5755\0\u57a4\0\u57f3\0\u5842\0\u5891"+ "\0\u58e0\0\u592f\0\u597e\0\u59cd\0\u5a1c\0\u5a6b\0\u5aba\0\u5b09"+ "\0\u5b58\0\u5ba7\0\u5bf6\0\u5c45\0\u5c94\0\u5ce3\0\u5d32\0\u5d81"+ "\0\u5dd0\0\u5e1f\0\u5e6e\0\u5ebd\0\u5f0c\0\u5f5b\0\u5faa\0\u5ff9"+ - "\0\u6048\0\u0316\0\u6097\0\u60e6\0\u6135\0\u6184\0\u61d3\0\u6222"+ - "\0\u6271\0\u62c0\0\u630f\0\u635e\0\u63ad\0\u63fc\0\u644b\0\u0316"+ - "\0\u0316\0\u649a\0\u64e9\0\u6538\0\u6587\0\u65d6\0\u6625\0\u6674"+ - "\0\u66c3\0\u6712\0\u6761\0\u0316\0\u67b0\0\u67ff\0\u0316\0\u684e"+ - "\0\u689d\0\u0316\0\u68ec\0\u693b\0\u698a\0\u69d9\0\u6a28\0\u6a77"+ - "\0\u6ac6\0\u6b15\0\u6b64\0\u6bb3\0\u6c02\0\u6c51\0\u6ca0\0\u6cef"+ - "\0\u6d3e\0\u6d8d\0\u6ddc\0\u6e2b\0\u6e7a\0\u6ec9\0\u6f18\0\u6f67"+ - "\0\u6fb6\0\u7005\0\u7054\0\u70a3\0\u70f2\0\u7141\0\u7190\0\u71df"+ - "\0\u722e\0\u727d\0\u72cc\0\u731b\0\u736a\0\u73b9\0\u7408\0\u7457"+ - "\0\u74a6\0\u74f5\0\u7544\0\u7593\0\u75e2\0\u7631\0\u7680\0\u76cf"+ - "\0\u771e\0\u776d\0\u77bc\0\u780b\0\u785a\0\u78a9\0\u78f8\0\u7947"+ - "\0\u7996\0\u79e5\0\u7a34\0\u7a83\0\u0316\0\u0316\0\u0316\0\u7ad2"+ - "\0\u7b21\0\u7b70\0\u0316\0\u7bbf\0\u7c0e\0\u7c5d\0\u7cac\0\u7cfb"+ - "\0\u7d4a\0\u7d99\0\u7de8\0\u7e37\0\u7e86\0\u7ed5\0\u7f24\0\u7f73"+ - "\0\u7fc2\0\u8011\0\u8060\0\u80af\0\u80fe\0\u814d\0\u819c\0\u81eb"+ - "\0\u823a\0\u8289\0\u82d8\0\u8327\0\u8376\0\u83c5\0\u8414\0\u8463"+ - "\0\u84b2\0\u8501\0\u8550\0\u859f\0\u85ee\0\u863d\0\u868c\0\u86db"+ - "\0\u0316\0\u872a\0\u8779\0\u87c8\0\u8817\0\u8866\0\u88b5\0\u8904"+ - "\0\u8953\0\u89a2\0\u89f1\0\u0316\0\u8a40\0\u8a8f\0\u8ade\0\u8b2d"+ - "\0\u8b7c\0\u8bcb\0\u3ef4\0\u8c1a\0\u8c69\0\u8cb8\0\u8d07\0\u8d56"+ - "\0\u8da5\0\u8df4\0\u8e43\0\u8e92\0\u8ee1\0\u8f30\0\u0316\0\u8f7f"+ - "\0\u8fce\0\u901d\0\u906c\0\u90bb\0\u910a\0\u9159\0\u91a8\0\u91f7"+ - "\0\u9246\0\u9295\0\u92e4\0\u9333\0\u9382\0\u93d1\0\u9420\0\u946f"+ - "\0\u94be\0\u950d\0\u955c\0\u95ab\0\u95fa\0\u9649\0\u9698\0\u96e7"+ - "\0\u9736\0\u9785\0\u97d4\0\u0316\0\u9823\0\u9872\0\u98c1\0\u9910"+ - "\0\u995f\0\u99ae\0\u99fd\0\u9a4c\0\u9a9b\0\u9aea\0\u9b39\0\u9b88"+ - "\0\u9bd7\0\u9c26\0\u9c75\0\u9cc4\0\u9d13\0\u9d62\0\u9db1\0\u9e00"+ - "\0\u9e4f\0\u9e9e\0\u9eed\0\u9f3c\0\u9f8b\0\u9fda\0\ua029\0\ua078"+ - "\0\ua0c7\0\ua116\0\ua165\0\ua1b4\0\ua203\0\ua252\0\ua2a1\0\ua2f0"+ - "\0\ua33f\0\ua38e\0\ua3dd\0\ua42c\0\ua47b\0\ua4ca\0\ua519\0\ua568"+ - "\0\ua5b7\0\ua606\0\ua655\0\ua6a4\0\ua6f3\0\ua742\0\ua791\0\ua7e0"+ - "\0\u0316\0\u0316\0\ua82f\0\ua87e\0\ua8cd\0\ua91c\0\ua96b\0\ua9ba"+ - "\0\uaa09\0\uaa58\0\uaaa7\0\uaaf6\0\uab45\0\uab94\0\uabe3\0\uac32"+ - "\0\uac81\0\uacd0\0\uad1f\0\u0316\0\uad6e\0\uadbd\0\uae0c\0\uae5b"+ - "\0\uaeaa\0\uaef9\0\ua47b\0\uaf48\0\uaf97\0\uafe6\0\ub035\0\ub084"+ - "\0\ub0d3\0\ub122\0\ub171\0\ub1c0\0\ub20f\0\ub25e\0\ub2ad\0\ub2fc"+ - "\0\ub34b\0\ub39a\0\u0316\0\ub3e9\0\ub438\0\ub487\0\ub4d6\0\u0316"+ + "\0\u6048\0\u6097\0\u60e6\0\u6135\0\u6184\0\u61d3\0\u6222\0\u6271"+ + "\0\u62c0\0\u630f\0\u635e\0\u63ad\0\u0316\0\u63fc\0\u644b\0\u649a"+ + "\0\u64e9\0\u6538\0\u6587\0\u65d6\0\u6625\0\u6674\0\u66c3\0\u6712"+ + "\0\u6761\0\u67b0\0\u67ff\0\u0316\0\u0316\0\u0316\0\u684e\0\u689d"+ + "\0\u68ec\0\u693b\0\u698a\0\u69d9\0\u6a28\0\u6a77\0\u6ac6\0\u6b15"+ + "\0\u0316\0\u6b64\0\u6bb3\0\u0316\0\u6c02\0\u6c51\0\u0316\0\u6ca0"+ + "\0\u6cef\0\u6d3e\0\u6d8d\0\u6ddc\0\u0316\0\u6e2b\0\u6e7a\0\u6ec9"+ + "\0\u6f18\0\u6f67\0\u6fb6\0\u7005\0\u7054\0\u70a3\0\u70f2\0\u7141"+ + "\0\u7190\0\u71df\0\u722e\0\u727d\0\u72cc\0\u731b\0\u736a\0\u73b9"+ + "\0\u7408\0\u7457\0\u74a6\0\u74f5\0\u7544\0\u7593\0\u75e2\0\u7631"+ + "\0\u7680\0\u76cf\0\u771e\0\u776d\0\u77bc\0\u780b\0\u785a\0\u78a9"+ + "\0\u78f8\0\u7947\0\u7996\0\u79e5\0\u7a34\0\u7a83\0\u7ad2\0\u7b21"+ + "\0\u7b70\0\u7bbf\0\u7c0e\0\u7c5d\0\u7cac\0\u7cfb\0\u7d4a\0\u7d99"+ + "\0\u7de8\0\u7e37\0\u7e86\0\u0316\0\u0316\0\u0316\0\u7ed5\0\u7f24"+ + "\0\u7f73\0\u0316\0\u7fc2\0\u8011\0\u8060\0\u80af\0\u80fe\0\u814d"+ + "\0\u819c\0\u81eb\0\u823a\0\u8289\0\u82d8\0\u8327\0\u8376\0\u83c5"+ + "\0\u8414\0\u8463\0\u84b2\0\u8501\0\u8550\0\u859f\0\u85ee\0\u863d"+ + "\0\u868c\0\u86db\0\u872a\0\u8779\0\u87c8\0\u8817\0\u8866\0\u88b5"+ + "\0\u8904\0\u8953\0\u89a2\0\u89f1\0\u8a40\0\u8a8f\0\u8ade\0\u0316"+ + "\0\u8b2d\0\u8b7c\0\u8bcb\0\u8c1a\0\u8c69\0\u8cb8\0\u8d07\0\u8d56"+ + "\0\u8da5\0\u8df4\0\u8e43\0\u0316\0\u8e92\0\u8ee1\0\u8f30\0\u8f7f"+ + "\0\u8fce\0\u901d\0\u4030\0\u906c\0\u90bb\0\u910a\0\u9159\0\u91a8"+ + "\0\u91f7\0\u9246\0\u9295\0\u92e4\0\u9333\0\u9382\0\u0316\0\u93d1"+ + "\0\u9420\0\u946f\0\u94be\0\u950d\0\u955c\0\u95ab\0\u95fa\0\u9649"+ + "\0\u9698\0\u96e7\0\u9736\0\u9785\0\u97d4\0\u9823\0\u9872\0\u98c1"+ + "\0\u9910\0\u995f\0\u99ae\0\u99fd\0\u9a4c\0\u9a9b\0\u9aea\0\u9b39"+ + "\0\u9b88\0\u9bd7\0\u9c26\0\u0316\0\u9c75\0\u9cc4\0\u9d13\0\u9d62"+ + "\0\u9db1\0\u9e00\0\u9e4f\0\u9e9e\0\u9eed\0\u9f3c\0\u9f8b\0\u9fda"+ + "\0\ua029\0\ua078\0\ua0c7\0\ua116\0\ua165\0\ua1b4\0\ua203\0\ua252"+ + "\0\ua2a1\0\ua2f0\0\ua33f\0\ua38e\0\ua3dd\0\ua42c\0\ua47b\0\ua4ca"+ + "\0\ua519\0\ua568\0\ua5b7\0\ua606\0\ua655\0\ua6a4\0\ua6f3\0\ua742"+ + "\0\ua791\0\ua7e0\0\ua82f\0\ua87e\0\ua8cd\0\ua91c\0\ua96b\0\ua9ba"+ + "\0\uaa09\0\uaa58\0\uaaa7\0\uaaf6\0\uab45\0\uab94\0\uabe3\0\u0316"+ + "\0\u0316\0\uac32\0\uac81\0\uacd0\0\uad1f\0\uad6e\0\uadbd\0\uae0c"+ + "\0\uae5b\0\uaeaa\0\uaef9\0\uaf48\0\uaf97\0\uafe6\0\ub035\0\ub084"+ + "\0\ub0d3\0\ub122\0\u0316\0\ub171\0\ub1c0\0\ub20f\0\ub25e\0\ub2ad"+ + "\0\ub2fc\0\ua8cd\0\ub34b\0\ub39a\0\ub3e9\0\ub438\0\ub487\0\ub4d6"+ "\0\ub525\0\ub574\0\ub5c3\0\ub612\0\ub661\0\ub6b0\0\ub6ff\0\ub74e"+ - "\0\ub79d\0\ub7ec\0\ub83b\0\ub88a\0\u0316\0\ub8d9\0\ub928\0\ub977"+ - "\0\ub9c6\0\uba15\0\uba64\0\ubab3\0\ubb02\0\ubb51\0\ubba0\0\ubbef"+ - "\0\ubc3e\0\ubc8d\0\ubcdc\0\ubd2b\0\ubd7a\0\ubdc9\0\ube18\0\ube67"+ - "\0\ubeb6\0\ubf05\0\ubf54\0\ubfa3\0\ubff2\0\u0316\0\uc041\0\uc090"+ - "\0\uc0df\0\uc12e\0\uc17d\0\uc1cc\0\uc21b\0\uc26a\0\uc2b9\0\uc308"+ - "\0\uc357\0\uc3a6\0\uc3f5\0\uc444\0\uc493\0\uc4e2\0\uc531\0\uc580"+ - "\0\u0316\0\u0316\0\u0316\0\uc5cf\0\uc61e\0\uc66d\0\uc6bc\0\uc70b"+ - "\0\uc75a\0\uc7a9\0\uc7f8\0\uc847\0\uc896\0\uc8e5\0\uc934\0\uc983"+ - "\0\uc9d2\0\uca21\0\uca70\0\ucabf\0\ucb0e\0\ucb5d\0\ucbac\0\ucbfb"+ - "\0\ucc4a\0\ucc99\0\ucce8\0\ucd37\0\ucd86\0\ucdd5\0\uce24\0\uce73"+ - "\0\ucec2\0\ucf11\0\ucf60\0\ucfaf\0\ucffe\0\ud04d\0\ud09c\0\ud0eb"+ - "\0\ud13a\0\ud189"; + "\0\ub79d\0\u0316\0\ub7ec\0\ub83b\0\ub88a\0\ub8d9\0\u0316\0\ub928"+ + "\0\ub977\0\ub9c6\0\uba15\0\uba64\0\ubab3\0\ubb02\0\ubb51\0\ubba0"+ + "\0\ubbef\0\ubc3e\0\ubc8d\0\u0316\0\ubcdc\0\ubd2b\0\ubd7a\0\ubdc9"+ + "\0\ube18\0\ube67\0\ubeb6\0\ubf05\0\ubf54\0\ubfa3\0\ubff2\0\uc041"+ + "\0\uc090\0\uc0df\0\uc12e\0\uc17d\0\uc1cc\0\uc21b\0\uc26a\0\uc2b9"+ + "\0\uc308\0\uc357\0\uc3a6\0\uc3f5\0\u0316\0\uc444\0\uc493\0\uc4e2"+ + "\0\uc531\0\uc580\0\uc5cf\0\uc61e\0\uc66d\0\uc6bc\0\uc70b\0\uc75a"+ + "\0\uc7a9\0\uc7f8\0\uc847\0\uc896\0\uc8e5\0\uc934\0\uc983\0\u0316"+ + "\0\u0316\0\u0316\0\uc9d2\0\uca21\0\uca70\0\ucabf\0\ucb0e\0\ucb5d"+ + "\0\ucbac\0\ucbfb\0\ucc4a\0\ucc99\0\ucce8\0\ucd37\0\ucd86\0\ucdd5"+ + "\0\uce24\0\uce73\0\ucec2\0\ucf11\0\ucf60\0\ucfaf\0\ucffe\0\ud04d"+ + "\0\ud09c\0\ud0eb\0\ud13a\0\ud189\0\ud1d8\0\ud227\0\ud276\0\ud2c5"+ + "\0\ud314\0\ud363\0\ud3b2\0\ud401\0\ud450\0\ud49f\0\ud4ee\0\ud53d"+ + "\0\ud58c"; private static int [] zzUnpackRowMap() { - int [] result = new int[754]; + int [] result = new int[769]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -273,1006 +276,1026 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) { "\1\141\1\142\1\143\5\13\1\144\11\13\1\145\24\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ "\3\0\15\13\1\146\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\147\2\13"+ - "\1\150\7\13\1\151\1\152\51\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\1\153\23\13"+ - "\1\154\43\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\2\13\1\155\12\13\1\156\6\13"+ - "\1\157\1\160\1\13\1\161\40\13\5\0\1\162\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\163"+ - "\7\13\1\164\5\13\1\165\43\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\166"+ - "\66\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\15\13\1\167\52\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\1\170\23\13"+ - "\1\171\43\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\6\13\1\172\61\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\23\13"+ - "\1\173\44\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\5\13\1\174\10\13\1\175\1\176"+ - "\4\13\1\177\43\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\1\13\1\200\21\13\1\201"+ - "\44\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\3\13\1\202\16\13\1\203\1\204\44\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\205\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\16\13\1\206\51\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\207\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\6\13\1\210\61\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\211\15\13\1\212\51\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\213"+ - "\7\13\1\214\51\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\17\13\1\215\50\13\5\0"+ - "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\41\13\1\216\26\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\62\13\1\217\5\13\5\0"+ - "\1\13\3\0\3\13\75\0\1\220\116\0\1\221\127\0"+ - "\1\222\117\0\1\223\104\0\1\224\25\0\1\13\1\0"+ - "\2\13\3\0\23\13\1\225\44\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\17\13\1\226"+ - "\50\13\5\0\1\13\3\0\3\13\1\0\1\67\1\0"+ - "\115\67\3\0\1\13\1\0\2\70\3\0\11\13\3\70"+ - "\47\13\3\70\2\13\5\0\1\13\3\0\1\13\1\70"+ - "\1\13\4\0\1\13\1\0\2\71\3\0\3\13\2\71"+ - "\4\13\3\71\1\13\2\71\2\13\1\71\14\13\1\71"+ - "\2\13\3\71\4\13\1\71\1\13\1\71\4\13\1\71"+ - "\3\13\3\71\2\13\5\0\1\13\3\0\1\13\1\71"+ - "\1\13\1\0\1\72\1\0\115\72\1\75\1\0\115\75"+ - "\3\0\1\13\1\0\2\13\3\0\2\13\1\227\65\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\6\13\1\230\22\13\1\231\36\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ - "\1\232\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\1\13\1\233\26\13\1\234\37\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\5\13\1\235\62\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\236\65\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\26\13\1\237\41\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\6\13\1\240\61\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\2\13\1\241\65\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\5\13\1\242\62\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\70\13\5\0\1\243\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\244\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\62\13"+ - "\1\245\5\13\5\0\1\13\3\0\3\13\75\0\1\246"+ - "\116\0\1\247\116\0\1\250\25\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\251\1\13\1\252\47\13\5\0\1\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\147\1\13\1\150"+ + "\2\13\1\151\7\13\1\152\1\153\51\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\154"+ + "\23\13\1\155\43\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\2\13\1\156\12\13\1\157"+ + "\6\13\1\160\1\161\1\13\1\162\40\13\5\0\1\163"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\6\13"+ + "\1\164\7\13\1\165\5\13\1\166\43\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ - "\1\253\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\3\13\1\254\10\13\1\255\53\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\21\13\1\256\46\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\237\50\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\12\13\1\257\55\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\260\20\13"+ - "\1\261\44\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\3\13\1\262\37\13\1\263\24\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\20\13\1\264\47\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\21\13\1\265\46\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\22\13\1\266\45\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\23\13\1\267\44\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\43\13\1\270\24\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\271\50\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\2\13\1\272\65\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\31\13\1\273\36\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\6\13\1\274\61\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\275\65\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\251\67\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\20\13\1\237\7\13\1\276"+ - "\37\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\23\13\1\277\44\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\300"+ + "\1\167\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\15\13\1\170\52\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\171"+ + "\14\13\1\172\6\13\1\173\43\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\174"+ "\61\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\2\13\1\301\2\13\1\302\62\13\5\0"+ + "\2\13\3\0\23\13\1\175\44\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\5\13\1\176"+ + "\10\13\1\177\1\200\4\13\1\201\43\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ + "\1\202\21\13\1\203\44\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\3\13\1\204\16\13"+ + "\1\205\1\206\44\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\15\13\1\207\52\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\4\13\1\303\63\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\5\13\1\304\10\13\1\305"+ - "\1\306\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\16\13\1\163\51\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ - "\1\307\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\23\13\1\237\44\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\14\13"+ - "\1\310\53\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\22\13\1\311\45\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\3\13"+ - "\1\312\3\13\1\313\60\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\314\50\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\13\1\315\66\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\5\13\1\316\62\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\34\13\1\317\33\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\320\1\321"+ - "\64\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\6\13\1\322\6\13\1\323\52\13\5\0"+ + "\16\13\1\210\51\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\15\13\1\211\52\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\5\13\1\324\62\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\325\52\13\5\0"+ + "\6\13\1\212\61\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\213\15\13\1\214\51\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\6\13\1\215\7\13\1\216\51\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ + "\1\217\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\41\13\1\220\26\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\62\13"+ + "\1\221\5\13\5\0\1\13\3\0\3\13\75\0\1\222"+ + "\116\0\1\223\127\0\1\224\117\0\1\225\104\0\1\226"+ + "\25\0\1\13\1\0\2\13\3\0\23\13\1\227\44\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\17\13\1\230\50\13\5\0\1\13\3\0\3\13"+ + "\1\0\1\67\1\0\115\67\3\0\1\13\1\0\2\70"+ + "\3\0\11\13\3\70\47\13\3\70\2\13\5\0\1\13"+ + "\3\0\1\13\1\70\1\13\4\0\1\13\1\0\2\71"+ + "\3\0\3\13\2\71\4\13\3\71\1\13\2\71\2\13"+ + "\1\71\14\13\1\71\2\13\3\71\4\13\1\71\1\13"+ + "\1\71\4\13\1\71\3\13\3\71\2\13\5\0\1\13"+ + "\3\0\1\13\1\71\1\13\1\0\1\72\1\0\115\72"+ + "\1\75\1\0\115\75\3\0\1\13\1\0\2\13\3\0"+ + "\2\13\1\231\65\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\6\13\1\232\22\13\1\233"+ + "\36\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\13\1\234\66\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\235"+ + "\26\13\1\236\37\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\5\13\1\237\62\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\17\13\1\326\50\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\7\13\1\313\60\13\5\0"+ + "\2\13\1\240\65\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\26\13\1\241\41\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\21\13\1\327\46\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\3\13\1\330\64\13\5\0"+ + "\6\13\1\242\61\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\2\13\1\243\65\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\22\13\1\331\45\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\23\13\1\332\44\13\5\0"+ + "\5\13\1\244\62\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\70\13\5\0\1\245\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\246"+ + "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\62\13\1\247\5\13\5\0\1\13\3\0"+ + "\3\13\75\0\1\250\116\0\1\251\116\0\1\252\25\0"+ + "\1\13\1\0\2\13\3\0\16\13\1\253\1\13\1\254"+ + "\47\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\13\1\255\66\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\3\13\1\256"+ + "\10\13\1\257\53\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\21\13\1\260\46\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\5\13\1\333\62\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\14\13\1\334\53\13\5\0"+ + "\17\13\1\241\50\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\12\13\1\261\55\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\14\13\1\335\53\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\24\13\1\336\43\13\5\0"+ + "\2\13\1\262\20\13\1\263\44\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\3\13\1\264"+ + "\37\13\1\265\24\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\20\13\1\266\47\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\13\1\337\66\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\31\13\1\340\36\13\5\0"+ + "\21\13\1\267\46\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\22\13\1\270\45\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\20\13\1\341\47\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\2\13\1\342\65\13\5\0"+ + "\23\13\1\271\44\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\43\13\1\272\24\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\6\13\1\343\61\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\46\13\1\344\21\13\5\0"+ + "\17\13\1\273\50\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\2\13\1\274\65\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\17\13\1\345\50\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\6\13\1\346\61\13\5\0"+ + "\2\13\1\275\65\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\31\13\1\276\36\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\3\13\1\347\64\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\4\13\1\350\63\13\5\0"+ + "\6\13\1\277\61\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\2\13\1\300\65\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\13\1\351\66\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\16\13\1\352\51\13\5\0"+ + "\1\253\67\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\20\13\1\241\7\13\1\301\37\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\23\13\1\302\44\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\6\13\1\303\61\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\2\13\1\304\2\13\1\305\62\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\4\13"+ + "\1\306\63\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\5\13\1\307\10\13\1\310\1\311"+ + "\50\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\16\13\1\164\51\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\17\13\1\312"+ + "\50\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\23\13\1\241\44\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\14\13\1\313"+ + "\53\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\22\13\1\314\45\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\3\13\1\315"+ + "\3\13\1\316\60\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\17\13\1\317\50\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\3\13\1\353\64\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\134\52\13\5\0"+ + "\1\13\1\320\66\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\2\13\1\321\65\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\5\13\1\354\62\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\5\13\1\355\62\13\5\0"+ + "\5\13\1\322\62\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\34\13\1\323\33\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\356\67\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\357\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ - "\1\360\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\17\13\1\361\50\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ - "\1\362\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\21\13\1\363\46\13\5\0\1\13"+ + "\2\13\1\324\1\325\64\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\6\13\1\326\6\13"+ + "\1\327\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\5\13\1\330\62\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ + "\1\331\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\17\13\1\332\50\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\7\13"+ + "\1\316\60\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\21\13\1\333\46\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\3\13"+ - "\1\364\64\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\17\13\1\365\50\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\22\13"+ - "\1\366\45\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\63\13\1\367\4\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ - "\1\370\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\27\13\1\371\40\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ - "\1\372\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\20\13\1\310\47\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\10\13"+ - "\1\373\11\13\1\374\45\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\375\7\13"+ - "\1\376\40\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\377\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\5\13"+ - "\1\310\2\13\1\u0100\57\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\15\13\1\u0101\52\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\26\13\1\310\41\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\22\13\1\u0102\1\13"+ - "\1\u0103\43\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\1\13\1\u0104\66\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\4\13"+ - "\1\u0105\11\13\1\251\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\4\13\1\u0106\63\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\32\13\1\u0107\35\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\12\13\1\237\55\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\17\13\1\u0108\50\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\4\13\1\u0109\63\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u010a\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\22\13\1\u010b\45\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\12\13\1\u010c\50\13\1\u010d\4\13\5\0\1\13"+ + "\1\334\64\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\22\13\1\335\45\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\23\13"+ + "\1\336\44\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\5\13\1\337\62\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\14\13"+ + "\1\340\53\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\14\13\1\341\53\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\24\13"+ + "\1\342\43\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\13\1\343\66\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\31\13"+ + "\1\344\36\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\20\13\1\345\47\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ - "\1\u010e\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\25\13\1\u010f\42\13\5\0\1\13"+ + "\1\346\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\6\13\1\347\61\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\46\13"+ + "\1\350\21\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\17\13\1\351\50\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\6\13"+ - "\1\u0110\61\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\1\13\1\u0111\66\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\22\13"+ - "\1\u0112\45\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\10\13\1\u0113\57\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\27\13"+ - "\1\u0114\40\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\23\13\1\u0115\44\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\35\13"+ - "\1\u0116\32\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\6\13\1\u0117\61\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\22\13"+ - "\1\u0118\45\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\16\13\1\u0119\51\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\5\13"+ - "\1\u011a\62\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\16\13\1\u011b\51\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ - "\1\u011c\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\16\13\1\u011d\51\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ - "\1\u011e\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u011f\52\13\5\0\1\13"+ + "\1\352\61\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\3\13\1\353\64\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\4\13"+ + "\1\354\63\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\13\1\355\66\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ + "\1\356\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\3\13\1\357\64\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ + "\1\134\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\5\13\1\360\62\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\5\13"+ - "\1\u0120\30\13\1\u0121\2\13\1\u0122\11\13\1\u0123\1\u0124"+ - "\2\13\1\u0125\10\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\u011d\52\13\5\0"+ + "\1\361\62\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\362\67\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\363"+ + "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\16\13\1\364\51\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\17\13\1\365"+ + "\50\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\17\13\1\366\50\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\21\13\1\367"+ + "\46\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\3\13\1\370\64\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\17\13\1\371"+ + "\50\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\22\13\1\372\45\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\63\13\1\373"+ + "\4\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\17\13\1\374\50\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\27\13\1\375"+ + "\40\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\2\13\1\376\65\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\20\13\1\313"+ + "\47\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\10\13\1\377\11\13\1\u0100\45\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\32\13\1\u0126\35\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\46\13\1\u0127\21\13\5\0"+ + "\17\13\1\u0101\7\13\1\u0102\40\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u0103"+ + "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\5\13\1\313\2\13\1\u0104\57\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\13\1\u0128\66\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\47\13\1\u0129\2\13\1\u012a"+ - "\15\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\47\13\1\u012b\20\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\1\u012c\67\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u012d\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\24\13\1\u012e\43\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\10\13\1\u012f\57\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\16\13\1\u0130\51\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\41\13\1\u0131\26\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\4\13\1\u0132\3\13"+ - "\1\373\57\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\10\13\1\u0133\5\13\1\u0134\51\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\22\13\1\u0135\45\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\16\13\1\u0136\51\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\22\13\1\u0102\45\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\15\13\1\u0137\52\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\13\1\u0138\66\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\u0139\65\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\6\13\1\374\61\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\22\13\1\374\45\13"+ + "\15\13\1\u0105\52\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\26\13\1\313\41\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\22\13\1\u0106\1\13\1\u0107\43\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\31\13\1\u0108"+ + "\36\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\13\1\u0109\66\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\4\13\1\u010a"+ + "\11\13\1\u010b\51\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\4\13\1\u010c\63\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\27\13\1\u010d\2\13\1\u010e\35\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\12\13\1\241"+ + "\55\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\17\13\1\u010f\50\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\4\13\1\u0110"+ + "\63\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\15\13\1\u0111\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\22\13\1\u0112"+ + "\45\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\12\13\1\u0113\50\13\1\u0114\4\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\2\13\1\u0115\65\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\25\13\1\u0116\42\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\6\13\1\u0117\61\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\13\1\u0118\66\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\22\13\1\u0119\45\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\10\13\1\u011a\57\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\25\13\1\u011b\42\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\27\13\1\u011c\40\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\23\13\1\u011d\44\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\35\13\1\u011e\32\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\6\13\1\u011f\61\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\22\13\1\u0120\45\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\16\13\1\u0121\51\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\5\13\1\u0122\62\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\16\13\1\u0123\51\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\17\13\1\u0124\50\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\16\13\1\u0125\51\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\2\13\1\u0126\65\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\15\13\1\u0127\52\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\5\13\1\u0128\30\13\1\u0129"+ + "\2\13\1\u012a\11\13\1\u012b\1\u012c\2\13\1\u012d\10\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\u013a\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\15\13\1\263\52\13"+ + "\3\0\15\13\1\u0125\52\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\32\13\1\u012e\35\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\u013b\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\63\13\1\u013c\4\13"+ + "\3\0\46\13\1\u012f\21\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\13\1\u0130\66\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\u013d\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\10\13\1\u013e\57\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\1\374"+ - "\1\13\3\0\11\13\3\374\54\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u013f"+ - "\14\13\1\u0140\50\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\5\13\1\u0141\1\u0142\11\13"+ - "\1\u0143\2\13\1\u0144\44\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\310\50\13"+ + "\3\0\47\13\1\u0131\2\13\1\u0132\15\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\47\13"+ + "\1\u0133\20\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\u0134\67\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u0135"+ + "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\24\13\1\u0136\43\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\10\13\1\u0137"+ + "\57\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\16\13\1\u0138\51\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\41\13\1\u0139"+ + "\26\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\4\13\1\u013a\3\13\1\377\57\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\10\13\1\u013b\5\13\1\u013c\51\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\22\13\1\u013d"+ + "\45\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\16\13\1\u013e\51\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\22\13\1\u0106"+ + "\45\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\15\13\1\u013f\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\u0140"+ + "\66\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\2\13\1\u0141\65\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\u0100"+ + "\61\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\22\13\1\u0100\45\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u0142"+ + "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\15\13\1\265\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u0143"+ + "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\63\13\1\u0144\4\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u0145"+ + "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\10\13\1\u0146\57\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\1\u0100\1\13\3\0\11\13"+ + "\3\u0100\54\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\2\13\1\u0147\14\13\1\u0148\50\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\24\13\1\u0145\43\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\u0146\50\13"+ + "\3\0\5\13\1\u0149\1\u014a\11\13\1\u014b\2\13\1\u014c"+ + "\44\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\17\13\1\313\50\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\24\13\1\u014d"+ + "\43\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\17\13\1\u014e\50\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\u014f"+ + "\66\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\16\13\1\356\3\13\1\234\45\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\16\13\1\u0150\51\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\21\13\1\u0151\46\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\1\u0152\13\13\1\u0153\53\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\6\13\1\u0154\61\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\15\13\1\367\52\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\u0155\13\13\1\u0156"+ + "\53\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\3\13\1\u0148\64\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u0157"+ + "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\63\13\1\u0158\4\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\11\13\1\u0159"+ + "\56\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\u015a\3\13\1\u015b\63\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\30\13"+ + "\1\236\37\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\6\13\1\u015c\61\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\u015d"+ + "\67\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\4\13\1\u015e\63\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\u015f"+ + "\61\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\13\1\u011d\66\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\21\13\1\u0160"+ + "\46\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\15\13\1\u0161\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\17\13\1\u0162"+ + "\50\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\15\13\1\u0163\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u0164"+ + "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\15\13\1\u0165\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u0166"+ + "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\41\13\1\u0167\7\13\1\u0168\1\u0169\15\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\352\3\13\1\232\45\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ - "\1\u0147\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\1\u0148\13\13\1\u0149\53\13\5\0"+ + "\3\0\2\13\1\u016a\65\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\u016b\67\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\5\13\1\u016c\11\13\1\u016d\50\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\21\13\1\u016e"+ + "\1\13\1\u016f\44\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\6\13\1\u0170\61\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\5\13\1\u0171\62\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\31\13\1\u0172\36\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\15\13\1\u0173\52\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\15\13\1\u0174\52\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\21\13\1\u0175\46\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\31\13\1\u0176\36\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\16\13\1\u0177\51\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\31\13\1\u0178\36\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\6\13\1\u014a\61\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\363\52\13\5\0"+ + "\3\13\1\u0179\64\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\22\13\1\u017a\45\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\u014b\13\13\1\u014c\53\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\3\13\1\u0140\64\13"+ + "\23\13\1\u017b\44\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\47\13\1\u017c\20\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\20\13\1\u017d\47\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\21\13\1\u017e\46\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\5\13\1\u017f\62\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\13\1\u0180\2\13\1\u0181"+ + "\15\13\1\u0182\20\13\1\u0183\24\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\22\13\1\u0184"+ + "\45\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\2\13\1\u0185\65\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\u0186"+ + "\66\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\3\13\1\u0187\64\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\7\13\1\u0188"+ + "\60\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\10\13\1\u0189\57\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\11\13\1\u018a"+ + "\56\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\3\13\1\u018b\64\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\23\13\1\u014c"+ + "\44\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\10\13\1\u018c\57\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\241"+ + "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\6\13\1\u018d\61\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\23\13\1\u018e"+ + "\44\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\5\13\1\u018f\62\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u0190"+ + "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\4\13\1\241\63\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\241"+ + "\66\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\16\13\1\u013c\51\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\5\13\1\u0100"+ + "\62\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\22\13\1\367\45\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u0191"+ + "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\2\13\1\u0192\65\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\21\13\1\u0193"+ + "\46\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\2\13\1\u0194\65\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u0195"+ + "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\17\13\1\u0196\50\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\64\13\1\u0197"+ + "\3\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\12\13\1\u0198\55\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\u0199"+ + "\66\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\14\13\1\u019a\53\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\27\13\1\u019b"+ + "\40\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\6\13\1\u019c\61\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\111"+ + "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\21\13\1\u019d\46\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u019e"+ + "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\34\13\1\u019f\33\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\37\13\1\u01a0"+ + "\30\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\17\13\1\u01a1\50\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\u01a2"+ + "\61\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\13\1\u01a3\66\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u01a4"+ + "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\24\13\1\u01a5\43\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\u01a6\67\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\2\13\1\u014d\65\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\63\13\1\u014e\4\13"+ + "\3\0\16\13\1\u01a7\51\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\33\13\1\u01a8\2\13"+ + "\1\u01a9\1\13\1\u01aa\1\13\1\u01ab\3\13\1\u01ac\1\u01ad"+ + "\1\u01ae\1\u01af\1\u01b0\15\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\3\13\1\u01b1\64\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\11\13\1\u014f\56\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\1\u0150\3\13\1\u0151"+ - "\63\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\30\13\1\234\37\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\u0152"+ - "\61\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\1\u0153\67\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\4\13\1\u0154\63\13"+ + "\3\0\15\13\1\u01b2\52\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\15\13\1\u01b3\52\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\13\1\u0115\66\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\21\13\1\u0155\46\13"+ + "\3\0\21\13\1\u01b4\46\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\23\13\1\u01b5\44\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u0156\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\u0157\50\13"+ + "\3\0\3\13\1\u01b6\64\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\6\13\1\u01b7\61\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u0158\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\u0159\65\13"+ + "\3\0\2\13\1\u01b8\65\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\13\1\u01b9\66\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u015a\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\u015b\65\13"+ + "\3\0\20\13\1\u01ba\47\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\13\1\u01bb\66\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\41\13\1\u015c\7\13\1\u015d\1\u015e\15\13\5\0"+ - "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\2\13\1\u015f\65\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\1\u0160\67\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\5\13"+ - "\1\u0161\11\13\1\u0162\50\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\21\13\1\u0163\1\13"+ - "\1\u0164\44\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\6\13\1\u0165\61\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\5\13"+ - "\1\u0166\62\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\31\13\1\u0167\36\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ - "\1\u0168\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u0169\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\21\13"+ - "\1\u016a\46\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\31\13\1\u016b\36\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ - "\1\u016c\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\31\13\1\u016d\36\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\3\13"+ - "\1\u016e\64\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\22\13\1\u016f\45\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\23\13"+ - "\1\u0170\44\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\47\13\1\u0171\20\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\20\13"+ - "\1\u0172\47\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\21\13\1\u0173\46\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\5\13"+ - "\1\u0174\62\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\4\13\1\u0175\15\13\1\u0176\20\13"+ - "\1\u0177\24\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\2\13\1\u0178\65\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ - "\1\u0179\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\3\13\1\u017a\64\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\7\13"+ - "\1\u017b\60\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\10\13\1\u017c\57\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\11\13"+ - "\1\u017d\56\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\3\13\1\u017e\64\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\23\13"+ - "\1\u0144\44\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\10\13\1\u017f\57\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ - "\1\237\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\6\13\1\u0180\61\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\23\13"+ - "\1\u0181\44\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\5\13\1\u0182\62\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ - "\1\u0183\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\4\13\1\237\63\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ - "\1\237\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\5\13\1\374\62\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ - "\1\u0184\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\2\13\1\u0185\65\13\5\0\1\13"+ + "\3\0\5\13\1\u01bc\62\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\13\1\u01bd\66\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\37\13\1\u01be\30\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\2\13\1\u01bf\65\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\35\13\1\u01c0\1\13\1\u01c1\30\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\51\13"+ + "\1\u01c2\16\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\32\13\1\u01c3\35\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\21\13"+ - "\1\u0186\46\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\2\13\1\u0187\65\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ - "\1\u0188\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\17\13\1\u0189\50\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\64\13"+ - "\1\u018a\3\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\12\13\1\u018b\55\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ - "\1\u018c\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\14\13\1\u018d\53\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\27\13"+ - "\1\u018e\40\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\6\13\1\u018f\61\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ - "\1\111\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u0190\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\34\13"+ - "\1\u0191\33\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\37\13\1\u0192\30\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ - "\1\u0193\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\6\13\1\u0194\61\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ - "\1\u0195\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u0196\52\13\5\0\1\13"+ + "\1\u01c4\46\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\6\13\1\u01c5\61\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ + "\1\u01c6\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\15\13\1\u01c7\52\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\24\13"+ - "\1\u0197\43\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\1\u0198\67\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u0199"+ - "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\33\13\1\u019a\2\13\1\u019b\1\13\1\u019c"+ - "\1\13\1\u019d\3\13\1\u019e\1\u019f\1\u01a0\1\u01a1\1\u01a2"+ - "\15\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\3\13\1\u01a3\64\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u01a4"+ + "\1\u01c8\43\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\u01c9\67\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\254"+ "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\15\13\1\u01a5\52\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\21\13\1\u01a6"+ - "\46\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\23\13\1\u01a7\44\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\3\13\1\u01a8"+ - "\64\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\6\13\1\u01a9\61\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u01aa"+ - "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\1\13\1\u01ab\66\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\20\13\1\u01ac"+ - "\47\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\1\13\1\u01ad\66\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\5\13\1\u01ae"+ - "\62\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\1\13\1\u01af\66\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\37\13\1\u01b0"+ - "\30\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\2\13\1\u01b1\65\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\35\13\1\u01b2"+ - "\1\13\1\u01b3\30\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\51\13\1\u01b4\16\13\5\0"+ - "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\32\13\1\u01b5\35\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\21\13\1\u01b6\46\13\5\0"+ + "\2\13\3\0\12\13\1\u01ca\55\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\23\13\1\u01cb"+ + "\4\13\1\u01cc\37\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\65\13\1\u01cd\2\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\6\13\1\u01b7\61\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\u01b8\52\13\5\0"+ - "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\24\13\1\u01b9\43\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\1\u01ba\67\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ - "\1\252\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\12\13\1\u01bb\55\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\23\13"+ - "\1\u01bc\4\13\1\u01bd\37\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\65\13\1\u01be\2\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\2\13\1\u01bf\65\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\23\13\1\u0144\1\13"+ - "\1\u01c0\42\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\3\13\1\u01c1\64\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ - "\1\u01c2\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\6\13\1\u01c3\61\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ - "\1\u01c4\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u01c5\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\27\13"+ - "\1\u01c6\40\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u01c7\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\u01c8"+ - "\67\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\10\13\1\u01c9\57\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\374"+ - "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\2\13\1\u01ca\65\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\310"+ - "\66\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\1\13\1\u01cb\66\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\52\13\1\u01cc"+ - "\15\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\24\13\1\u01cd\43\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u01ce"+ + "\2\13\1\u01ce\65\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\23\13\1\u014c\1\13\1\u01cf"+ + "\42\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\3\13\1\u01d0\64\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u01d1"+ "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\41\13\1\u01cf\26\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\17\13\1\346"+ + "\2\13\3\0\6\13\1\u01d2\61\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\17\13\1\u01d3"+ "\50\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\2\13\1\u0193\65\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\41\13\1\u01d0"+ - "\26\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\2\13\1\u01d1\65\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\u01d2"+ - "\66\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\5\13\1\u01d3\62\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u01d4"+ - "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\5\13\1\u01d5\1\u01d6\10\13\1\u01d7\50\13"+ + "\2\13\3\0\15\13\1\u01d4\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\27\13\1\u01d5"+ + "\40\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\15\13\1\u01d6\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\u01d7\67\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\13\1\u01d8\44\13\1\u01d9\21\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ - "\1\u01da\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u01db\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\6\13"+ - "\1\u01dc\10\13\1\u01dd\50\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\u01de\50\13"+ + "\3\0\10\13\1\u01d8\57\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\2\13\1\u0100\65\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u01df\1\u01e0\51\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u01e1"+ - "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\16\13\1\u01e2\51\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u01e3"+ - "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\16\13\1\u01e4\51\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\17\13\1\u01e5"+ - "\50\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\17\13\1\u01e6\50\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u01e7"+ - "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\4\13\1\u01a8\63\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\17\13\1\u01e8"+ - "\50\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\2\13\1\310\65\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\1\u01e9\67\13"+ + "\3\0\2\13\1\u01d9\65\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\13\1\313\66\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\50\13\1\u01ea\17\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\16\13\1\u01eb\51\13"+ + "\3\0\1\13\1\u01da\66\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\52\13\1\u01db\15\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\53\13\1\u01ec\14\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\1\u01ed\67\13\5\0"+ - "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\47\13\1\u01ee\20\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\42\13\1\u016a\25\13\5\0"+ - "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\u01ef\67\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\44\13\1\u01f0\23\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ - "\1\u01f1\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\17\13\1\u01f2\50\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\3\13"+ - "\1\u01f3\64\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\20\13\1\u01f4\47\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\4\13"+ - "\1\u01f5\63\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u01f6\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\63\13"+ - "\1\u01f7\4\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\7\13\1\u01f8\60\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ - "\1\u01f9\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\30\13\1\u01fa\37\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\10\13"+ - "\1\u01fb\2\13\1\u01fc\54\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\6\13\1\u01fd\61\13"+ + "\3\0\24\13\1\u01dc\43\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\2\13\1\u01dd\65\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\u01fe\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\15\13\1\u01ff\52\13"+ + "\3\0\41\13\1\u01de\26\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\17\13\1\352\50\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\4\13\1\u01c1\63\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\16\13\1\u0200\51\13"+ + "\3\0\2\13\1\u01a1\65\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\41\13\1\u01df\26\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\13\1\u0201\66\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\12\13\1\u0202\55\13"+ + "\3\0\2\13\1\u01e0\65\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\13\1\u01e1\66\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u0203\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\24\13\1\u0204\43\13"+ + "\3\0\5\13\1\u01e2\62\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\16\13\1\u01e3\51\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\2\13\1\u0115\65\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\16\13\1\u0205\51\13"+ + "\3\0\5\13\1\u01e4\1\u01e5\10\13\1\u01e6\50\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\1\13\1\u01e7\44\13\1\u01e8\21\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u01e9"+ + "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\15\13\1\u01ea\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\u01eb"+ + "\10\13\1\u01ec\50\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\17\13\1\u01ed\50\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\15\13\1\u01ee\1\u01ef\51\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\16\13\1\u01f0\51\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\23\13\1\u0206\44\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\23\13\1\u0207\44\13"+ + "\3\0\16\13\1\u01f1\51\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\16\13\1\u01f2\51\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\25\13\1\u0208\42\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\52\13\1\u015e\15\13"+ + "\3\0\16\13\1\u01f3\51\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\17\13\1\u01f4\50\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\u0209\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\32\13\1\u020a\35\13"+ + "\3\0\17\13\1\u01f5\50\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\16\13\1\u01f6\51\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\u020b\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\1\13\1\u020c\66\13"+ + "\3\0\4\13\1\u01b6\63\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\17\13\1\u01f7\50\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u020d\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\1\u020e\67\13\5\0"+ + "\3\0\2\13\1\313\65\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\u01f8\67\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\53\13\1\u020f\14\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\3\13\1\u0210\37\13\1\u0211"+ - "\24\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\22\13\1\u0212\45\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u0213"+ - "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\16\13\1\u0214\51\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\u0215"+ - "\6\13\1\u0216\52\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\2\13\1\u0217\65\13\5\0"+ + "\50\13\1\u01f9\17\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\16\13\1\u01fa\51\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\13\1\u0218\66\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\5\13\1\u0219\62\13\5\0"+ + "\53\13\1\u01fb\14\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\u01fc\67\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\47\13"+ + "\1\u01fd\20\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\42\13\1\u0175\25\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\u01fe"+ + "\67\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\44\13\1\u01ff\23\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u0200"+ + "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\17\13\1\u0201\50\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\3\13\1\u0202"+ + "\64\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\31\13\1\u0203\36\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\20\13\1\u0204"+ + "\47\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\4\13\1\u0205\63\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u0206"+ + "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\63\13\1\u0207\4\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\7\13\1\u0208"+ + "\60\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\15\13\1\u0209\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\30\13\1\u020a"+ + "\37\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\10\13\1\u020b\2\13\1\u020c\54\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\2\13\1\u021a\65\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\17\13\1\u021b\50\13\5\0"+ + "\6\13\1\u020d\61\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\16\13\1\u020e\51\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\2\13\1\u021c\65\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\u021d\52\13\5\0"+ + "\15\13\1\u020f\52\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\4\13\1\u01d0\63\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\6\13\1\u021e\61\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\5\13\1\u021f\62\13\5\0"+ + "\16\13\1\u0210\51\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\13\1\u0211\66\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\16\13\1\u0220\51\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\22\13\1\u0221\45\13\5\0"+ + "\12\13\1\u0212\55\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\15\13\1\u0213\52\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\15\13\1\u0222\52\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\1\13\1\u0223\66\13\5\0"+ + "\24\13\1\u0214\43\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\2\13\1\u011d\65\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\u0224\67\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\20\13\1\u0225\47\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\u0226"+ - "\67\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\26\13\1\u0222\41\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\53\13\1\u0227"+ - "\14\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\15\13\1\u0228\52\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\7\13\1\374"+ - "\60\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\1\u0229\67\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\32\13\1\u022a\35\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\5\13\1\u022b\62\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\64\13\1\u022c\3\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\10\13\1\u022d\57\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\u022e\50\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u022f\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\24\13\1\u0230\43\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\5\13\1\u0231\62\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\5\13\1\u0232\62\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\21\13\1\u0233\46\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\32\13\1\u0234\35\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\20\13\1\u0235\47\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\63\13\1\u0236\4\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\21\13\1\u0237\46\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\u0238\65\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\23\13\1\u0239\44\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\23\13\1\u023a\44\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\41\13\1\u023b\26\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\1\13\1\u023c\66\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u020f\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\27\13\1\u023d\40\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\43\13\1\u023e\24\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\16\13\1\u023f\51\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\2\13\1\u0240\65\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\1\u0241\67\13\5\0"+ + "\16\13\1\u0215\51\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\23\13\1\u0216\44\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\16\13\1\u0242\51\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\u0243\52\13\5\0"+ + "\23\13\1\u0217\44\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\25\13\1\u0218\42\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\16\13\1\u0244\51\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\1\13\1\u0245\66\13\5\0"+ + "\52\13\1\u0169\15\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\16\13\1\u0219\51\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\26\13\1\u0246\41\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\u0247\52\13\5\0"+ + "\32\13\1\u021a\35\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\16\13\1\u021b\51\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\16\13\1\u0248\51\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\16\13\1\u0249\51\13\5\0"+ + "\1\13\1\u021c\66\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\15\13\1\u021d\52\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\16\13\1\u024a\51\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\1\u024b\67\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\37\13"+ - "\1\u024c\30\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\6\13\1\u024d\61\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\22\13"+ - "\1\u024e\45\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\30\13\1\u024f\37\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\33\13"+ - "\1\u0250\34\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\44\13\1\u0251\23\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ - "\1\u0252\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u016a\52\13\5\0\1\13"+ + "\1\u021e\67\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\53\13\1\u021f\14\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\3\13"+ - "\1\u0222\64\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\43\13\1\u0222\24\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\55\13"+ - "\1\u0253\12\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\32\13\1\u0254\35\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\10\13"+ - "\1\u0255\57\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\22\13\1\u0256\45\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ - "\1\u0134\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\1\u0257\67\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\21\13\1\u0134"+ - "\46\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\17\13\1\u0258\1\13\1\u0259\46\13\5\0"+ - "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\u025a\67\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\17\13\1\u025b\50\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\u025c"+ - "\67\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\21\13\1\u025d\46\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\10\13\1\u025e"+ - "\57\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\10\13\1\u025f\57\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\22\13\1\u0260"+ - "\45\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\13\13\1\u0261\54\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\64\13\1\u0262"+ - "\3\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\20\13\1\u0263\47\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u0115"+ - "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\5\13\1\u0264\62\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\5\13\1\u0265"+ - "\62\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\21\13\1\u0266\46\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\3\13\1\u0267"+ - "\64\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\4\13\1\u0268\63\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\1\263\67\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\2\13\1\u0269\65\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\33\13\1\u019a\34\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\32\13\1\u026a\35\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\24\13\1\u026b\43\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\17\13\1\u026c\50\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\5\13\1\u020f\62\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\22\13\1\144\45\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\15\13\1\u026d\52\13"+ + "\1\u0220\37\13\1\u0221\24\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\22\13\1\u0222\45\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\26\13\1\u026e\41\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\21\13\1\u026f\46\13"+ + "\3\0\2\13\1\u0223\65\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\16\13\1\u0224\51\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\20\13\1\u0270\47\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\1\13\1\u0271\66\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\6\13\1\u0272\61\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\u0273\65\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\17\13\1\u0274\50\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\22\13\1\u0274\45\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\u0275\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\24\13\1\u0276\43\13"+ + "\3\0\6\13\1\u0225\6\13\1\u0226\52\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ + "\1\u0227\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\13\1\u0228\66\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\5\13"+ + "\1\u0229\62\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\2\13\1\u022a\65\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ + "\1\u022b\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\2\13\1\u022c\65\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ + "\1\u022d\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\6\13\1\u022e\61\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\5\13"+ + "\1\u022f\62\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\16\13\1\u0230\51\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\22\13"+ + "\1\u0231\45\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\15\13\1\u0232\52\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ + "\1\u0233\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\u0234\67\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\20\13\1\u0235"+ + "\47\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\u0236\67\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\26\13\1\u0232\41\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\17\13\1\u0277\50\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\u0278\50\13"+ + "\3\0\53\13\1\u0237\14\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\15\13\1\u0238\52\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u0279\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\15\13\1\u027a\52\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\u027b\1\0\2\u027b"+ - "\3\0\62\u027b\1\13\3\u027b\2\13\5\0\1\u027b\3\0"+ - "\3\u027b\4\0\1\13\1\0\2\13\3\0\22\13\1\u016a"+ - "\45\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\2\13\1\u0134\65\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u027c"+ - "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\15\13\1\u027d\52\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\43\13\1\u027e"+ - "\24\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\1\u027f\67\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\1\13\1\u0280\66\13"+ - "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\u0281\67\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\20\13\1\u0282\1\u0283\1\13"+ - "\1\u0284\44\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\1\u0285\67\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\10\13\1\u0286"+ - "\57\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\15\13\1\u0287\52\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\1\u0288\67\13"+ + "\3\0\7\13\1\u0100\60\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\2\13\1\u0184\65\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\u0289\67\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\21\13\1\u028a\46\13\5\0"+ + "\3\0\1\u0239\67\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\32\13\1\u023a\35\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\15\13\1\u028b\52\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\16\13\1\u028c\51\13\5\0"+ + "\5\13\1\u023b\62\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\64\13\1\u023c\3\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\6\13\1\u028d\61\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\16\13\1\u028e\51\13\5\0"+ + "\10\13\1\u023d\57\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\17\13\1\u023e\50\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\5\13\1\u028f\62\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\30\13\1\u020a\37\13\5\0"+ + "\15\13\1\u023f\52\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\24\13\1\u0240\43\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\13\1\u0290\66\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\310\52\13\5\0"+ + "\5\13\1\u0241\62\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\5\13\1\u0242\62\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\16\13\1\u0291\51\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\u028d\52\13\5\0"+ + "\21\13\1\u0243\46\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\32\13\1\u0244\35\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\3\13\1\u0292\64\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\1\13\1\u0293\66\13\5\0"+ + "\20\13\1\u0245\47\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\63\13\1\u0246\4\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\16\13\1\u0294\51\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\5\13\1\u0295\62\13\5\0"+ + "\21\13\1\u0247\46\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\2\13\1\u0248\65\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\32\13\1\u0296\35\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\6\13\1\u0297\61\13\5\0"+ + "\23\13\1\u0249\44\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\23\13\1\u024a\44\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\16\13\1\u0298\51\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\17\13\1\u0299\50\13\5\0"+ + "\41\13\1\u024b\26\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\13\1\u024c\66\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\22\13\1\u029a\45\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\3\13\1\u029b\64\13\5\0"+ + "\15\13\1\u021f\52\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\27\13\1\u024d\40\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\3\13\1\u029c\64\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\14\13\1\u029d\53\13\5\0"+ + "\43\13\1\u024e\24\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\16\13\1\u024f\51\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\2\13\1\u0250\65\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\u0251\67\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ + "\1\u0252\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\15\13\1\u0253\52\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ + "\1\u0254\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\13\1\u0255\66\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\26\13"+ + "\1\u0256\41\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\15\13\1\u0257\52\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ + "\1\u0258\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\16\13\1\u0259\51\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ + "\1\u025a\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\u025b\67\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\37\13\1\u025c"+ + "\30\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\6\13\1\u025d\61\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\22\13\1\u025e"+ + "\45\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\30\13\1\u025f\37\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\33\13\1\u0260"+ + "\34\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\44\13\1\u0261\23\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u0262"+ + "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\15\13\1\u0175\52\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\3\13\1\u0232"+ + "\64\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\43\13\1\u0232\24\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\55\13\1\u0263"+ + "\12\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\32\13\1\u0264\35\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\10\13\1\u0265"+ + "\57\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\22\13\1\u0266\45\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\u0184"+ + "\66\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\u0203\67\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\21\13\1\u0184\46\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\17\13\1\u0267\1\13\1\u0268\46\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\u0269"+ + "\67\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\17\13\1\u026a\50\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\u026b\67\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\21\13\1\u026c\46\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\10\13\1\u026d\57\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\10\13\1\u026e\57\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\22\13\1\u026f\45\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\13\13\1\u0270\54\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\64\13\1\u0271\3\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\20\13\1\u0272\47\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\15\13\1\u011d\52\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\5\13\1\u0273\62\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\5\13\1\u0274\62\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\21\13\1\u0275\46\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\3\13\1\u0276\64\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\4\13\1\u0277\63\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\265\67\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\43\13\1\u029e\24\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\2\13\1\u029f\65\13\5\0"+ + "\2\13\1\u0278\65\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\33\13\1\u01a8\34\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\13\1\u02a0\66\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\u02a1\52\13\5\0"+ + "\32\13\1\u0279\35\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\24\13\1\u027a\43\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\15\13\1\u02a2\52\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\24\13\1\u02a3\43\13\5\0"+ + "\17\13\1\u027b\50\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\5\13\1\u021f\62\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\1\13\1\252\66\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\20\13\1\u02a4\47\13\5\0"+ + "\22\13\1\144\45\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\15\13\1\u027c\52\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\2\13\1\u016a\65\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\3\13\1\u02a5\64\13\5\0"+ + "\26\13\1\u027d\41\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\21\13\1\u027e\46\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\3\13\1\u02a6\64\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\17\13\1\u028b\50\13\5\0"+ + "\20\13\1\u027f\47\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\13\1\u0280\66\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\3\13\1\u02a7\64\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\17\13\1\u020f\50\13\5\0"+ + "\6\13\1\u0281\61\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\2\13\1\u0282\65\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\5\13\1\u02a8\62\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\2\13\1\u02a9\65\13\5\0"+ + "\17\13\1\u0283\50\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\22\13\1\u0283\45\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\2\13\1\u02aa\65\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\15\13\1\u0290\52\13\5\0"+ + "\16\13\1\u0284\51\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\24\13\1\u0285\43\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\36\13\1\u02ab\31\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\2\13\1\u02ac\65\13\5\0"+ + "\17\13\1\u0286\50\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\17\13\1\u0287\50\13\5\0"+ "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ - "\44\13\1\u02ad\23\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\40\13\1\u02ae\11\13\1\u02af"+ - "\15\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\20\13\1\u02b0\47\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u02b1"+ - "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\22\13\1\u02b2\45\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u02b3"+ - "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\6\13\1\u02b4\61\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\u02b5"+ - "\61\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\14\13\1\u02b6\53\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\11\13\1\u02b7"+ - "\1\13\1\u02b8\50\13\1\u02b9\3\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\20\13\1\u0260"+ - "\47\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\2\13\1\u02ba\65\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\5\13\1\252"+ - "\62\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\2\13\1\252\65\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u02a3"+ - "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\16\13\1\u02bb\51\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u02bc"+ - "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\7\13\1\u020f\60\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\22\13\1\u020f"+ - "\45\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\50\13\1\u02bd\17\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u02be"+ - "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\16\13\1\u02bf\51\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u0295"+ - "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\17\13\1\u02c0\50\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\1\u02c1\67\13"+ + "\15\13\1\u0288\52\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\15\13\1\u0289\52\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\u028a\1\0\2\u028a\3\0"+ + "\62\u028a\1\13\3\u028a\2\13\5\0\1\u028a\3\0\3\u028a"+ + "\4\0\1\13\1\0\2\13\3\0\22\13\1\u0175\45\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\14\13\1\u02c2\53\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\u02c3\50\13"+ + "\3\0\15\13\1\u028b\52\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\15\13\1\u028c\52\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\u02c4\67\13\5\0\1\13\3\0\3\13\4\0"+ - "\1\13\1\0\2\13\3\0\1\u02c5\67\13\5\0\1\13"+ + "\3\0\43\13\1\u028d\24\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\u028e\67\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\1\13\1\u028f\66\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\u0290\67\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\20\13"+ + "\1\u0291\1\u0292\1\13\1\u0293\44\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\u0294\67\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\10\13\1\u0295\57\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\15\13\1\u0296\52\13"+ + "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ + "\3\0\1\u0297\67\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\u0298\67\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\21\13"+ + "\1\u0299\46\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\15\13\1\u029a\52\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ - "\1\u02c6\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\30\13\1\u02c7\37\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\32\13"+ - "\1\u02c8\35\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\64\13\1\u02c9\3\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\12\13"+ - "\1\u02ca\55\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\70\13\5\0\1\13\3\0\1\13"+ - "\1\u02cb\1\13\4\0\1\13\1\0\2\13\3\0\10\13"+ - "\1\u02cc\57\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\2\13\1\u02cd\65\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ - "\1\u02ce\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\17\13\1\u02cf\50\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\56\13"+ - "\1\u02d0\11\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\5\13\1\u02d1\62\13\5\0\1\13"+ + "\1\u029b\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\6\13\1\u029c\61\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\16\13"+ + "\1\u029d\51\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\5\13\1\u029e\62\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\30\13"+ + "\1\u021a\37\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\13\1\u029f\66\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ + "\1\313\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\16\13\1\u02a0\51\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ + "\1\u029c\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\3\13\1\u02a1\64\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ + "\1\u02a2\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\16\13\1\u02a3\51\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\5\13"+ + "\1\u02a4\62\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\32\13\1\u02a5\35\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\6\13"+ - "\1\u02d2\61\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\1\13\1\u02d3\66\13\5\0\1\13"+ + "\1\u02a6\61\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\16\13\1\u02a7\51\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ + "\1\u02a8\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\22\13\1\u02a9\45\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\3\13"+ + "\1\u02aa\64\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\3\13\1\u02ab\64\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\14\13"+ + "\1\u02ac\53\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\43\13\1\u02ad\24\13\5\0\1\13"+ "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ - "\1\u02d4\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\16\13\1\u02d5\51\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\6\13"+ - "\1\u018e\61\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\6\13\1\u02d6\61\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\32\13"+ - "\1\u02d7\35\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u02d8\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\23\13"+ - "\1\u02d9\44\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\15\13\1\u02da\52\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\u02db"+ - "\67\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\1\u02dc\67\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\6\13\1\u02dd\61\13"+ + "\1\u02ae\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\13\1\u02af\66\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ + "\1\u02b0\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\15\13\1\u02b1\52\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\24\13"+ + "\1\u02b2\43\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\1\13\1\254\66\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\20\13"+ + "\1\u02b3\47\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\2\13\1\u0175\65\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\3\13"+ + "\1\u02b4\64\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\3\13\1\u02b5\64\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ + "\1\u029a\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\3\13\1\u02b6\64\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\17\13"+ + "\1\u021f\50\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\5\13\1\u02b7\62\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ + "\1\u02b8\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\2\13\1\u02b9\65\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\15\13"+ + "\1\u029f\52\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\36\13\1\u02ba\31\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\2\13"+ + "\1\u02bb\65\13\5\0\1\13\3\0\3\13\4\0\1\13"+ + "\1\0\2\13\3\0\44\13\1\u02bc\23\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\40\13"+ + "\1\u02bd\11\13\1\u02be\15\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\20\13\1\u02bf\47\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\u02de\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\5\13\1\310\62\13"+ + "\3\0\2\13\1\u02c0\65\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\22\13\1\u02c1\45\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\20\13\1\u02df\47\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\2\13\1\u0274\65\13"+ + "\3\0\2\13\1\u02c2\65\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\6\13\1\u02c3\61\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u02e0\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\32\13\1\u02e1\35\13"+ + "\3\0\6\13\1\u02c4\61\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\14\13\1\u02c5\53\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\1\13\1\u016a\66\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\23\13\1\u016a\44\13"+ + "\3\0\11\13\1\u02c6\1\13\1\u02c7\50\13\1\u02c8\3\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\17\13\1\u029d\50\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\u02e2\50\13"+ + "\3\0\20\13\1\u026f\47\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\2\13\1\u02c9\65\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\31\13\1\252\36\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\6\13\1\u02e3\61\13"+ + "\3\0\5\13\1\254\62\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\2\13\1\254\65\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\6\13\1\u0116\61\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\26\13\1\u02e4\41\13"+ + "\3\0\15\13\1\u02b2\52\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\16\13\1\u02ca\51\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\22\13\1\u02e5\45\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\17\13\1\u02e6\50\13"+ + "\3\0\16\13\1\u02cb\51\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\7\13\1\u021f\60\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\37\13\1\u02e7\30\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\44\13\1\u02e8\23\13"+ + "\3\0\22\13\1\u021f\45\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\50\13\1\u02cc\17\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u02e9\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\1\13\1\u02ea\66\13"+ + "\3\0\16\13\1\u02cd\51\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\16\13\1\u02ce\51\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\15\13\1\u02eb\52\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\25\13\1\u020f\42\13"+ + "\3\0\15\13\1\u02a4\52\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\17\13\1\u02cf\50\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\u02ec\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\5\13\1\u02ed\62\13"+ + "\3\0\1\u02d0\67\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\14\13\1\u02d1\53\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\17\13\1\u02d2\50\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\u02d3\67\13\5\0\1\13"+ + "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\u02d4"+ + "\67\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\16\13\1\u02d5\51\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\30\13\1\u02d6"+ + "\37\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\32\13\1\u02d7\35\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\64\13\1\u02d8"+ + "\3\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\12\13\1\u02d9\55\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\70\13\5\0"+ + "\1\13\3\0\1\13\1\u02da\1\13\4\0\1\13\1\0"+ + "\2\13\3\0\10\13\1\u02db\57\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\2\13\1\u02dc"+ + "\65\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\2\13\1\u02dd\65\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\17\13\1\u02de"+ + "\50\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\56\13\1\u02df\11\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\5\13\1\u02e0"+ + "\62\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\6\13\1\u02e1\61\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\1\13\1\u02e2"+ + "\66\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\2\13\1\u02e3\65\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\16\13\1\u02e4"+ + "\51\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\6\13\1\u019b\61\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\6\13\1\u02e5"+ + "\61\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\32\13\1\u02e6\35\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u02e7"+ + "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\23\13\1\u02e8\44\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u02e9"+ + "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\u02ea\67\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\1\u02eb\67\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\6\13\1\u02ec\61\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\16\13\1\u02ed\51\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\5\13\1\313\62\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\20\13\1\u02ee\47\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\2\13\1\u0283\65\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\15\13\1\u02ef\52\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\32\13\1\u02f0\35\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\1\13\1\u0175\66\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\23\13\1\u0175\44\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\17\13\1\u02ac\50\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\17\13\1\u02f1\50\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\31\13\1\254\36\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\6\13\1\u02f2\61\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\6\13\1\u011e\61\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\26\13\1\u02f3\41\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\22\13\1\u02f4\45\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\17\13\1\u02f5\50\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\37\13\1\u02f6\30\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\44\13\1\u02f7\23\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\15\13\1\u02f8\52\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\1\13\1\u02f9\66\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\15\13\1\u02fa\52\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\25\13\1\u021f\42\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\16\13\1\u02fb\51\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\5\13\1\u02fc\62\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\16\13\1\u02fd\51\13\5\0"+ + "\1\13\3\0\3\13\4\0\1\13\1\0\2\13\3\0"+ + "\22\13\1\u02fe\45\13\5\0\1\13\3\0\3\13\4\0"+ + "\1\13\1\0\2\13\3\0\35\13\1\u01c0\3\13\1\u0139"+ + "\26\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\13\1\u021f\66\13\5\0\1\13\3\0"+ + "\3\13\4\0\1\13\1\0\2\13\3\0\32\13\1\u0283"+ + "\35\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ + "\2\13\3\0\1\u02ff\67\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\20\13\1\u0300\47\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\16\13\1\u02ee\51\13\5\0\1\13\3\0\3\13"+ - "\4\0\1\13\1\0\2\13\3\0\22\13\1\u02ef\45\13"+ + "\3\0\22\13\1\u02ac\45\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\3\13\1\u0301\64\13"+ "\5\0\1\13\3\0\3\13\4\0\1\13\1\0\2\13"+ - "\3\0\35\13\1\u01b2\3\13\1\u0131\26\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\13"+ - "\1\u020f\66\13\5\0\1\13\3\0\3\13\4\0\1\13"+ - "\1\0\2\13\3\0\32\13\1\u0274\35\13\5\0\1\13"+ - "\3\0\3\13\4\0\1\13\1\0\2\13\3\0\1\u02f0"+ - "\67\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\20\13\1\u02f1\47\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\22\13\1\u029d"+ - "\45\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\3\13\1\u02f2\64\13\5\0\1\13\3\0"+ - "\3\13\4\0\1\13\1\0\2\13\3\0\15\13\1\u024e"+ - "\52\13\5\0\1\13\3\0\3\13\4\0\1\13\1\0"+ - "\2\13\3\0\15\13\1\u0274\52\13\5\0\1\13\3\0"+ - "\3\13\1\0"; + "\3\0\15\13\1\u025e\52\13\5\0\1\13\3\0\3\13"+ + "\4\0\1\13\1\0\2\13\3\0\15\13\1\u0283\52\13"+ + "\5\0\1\13\3\0\3\13\1\0"; private static int [] zzUnpackTrans() { - int [] result = new int[53720]; + int [] result = new int[54747]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -1312,11 +1335,11 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\1\0\1\11\50\1\1\11\5\1\2\11\2\1\1\11"+ "\4\1\1\0\1\11\3\0\5\1\1\11\12\1\1\11"+ - "\2\1\2\11\1\0\2\11\71\1\5\11\21\1\3\11"+ - "\u024a\1"; + "\2\1\2\11\1\0\2\11\73\1\5\11\21\1\3\11"+ + "\u0257\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[754]; + int [] result = new int[769]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1625,457 +1648,467 @@ else if (zzAtEOF) { { return BAD_CHARACTER; } // fall through - case 92: break; + case 94: break; case 2: { return WHITE_SPACE; } // fall through - case 93: break; + case 95: break; case 3: { return EOF; } // fall through - case 94: break; + case 96: break; case 4: { return DIVIDE; } // fall through - case 95: break; + case 97: break; case 5: { return L_INTEGER; } // fall through - case 96: break; + case 98: break; case 6: { return ID; } // fall through - case 97: break; + case 99: break; case 7: { return FLOWCONTROL_OP; } // fall through - case 98: break; + case 100: break; case 8: { return PLUS; } // fall through - case 99: break; + case 101: break; case 9: { return MINUS; } // fall through - case 100: break; + case 102: break; case 10: { return TIMES; } // fall through - case 101: break; + case 103: break; case 11: { return LESSTHAN; } // fall through - case 102: break; + case 104: break; case 12: { return GREATERTHAN; } // fall through - case 103: break; + case 105: break; case 13: { return BITWISE_AND; } // fall through - case 104: break; + case 106: break; case 14: { return BITWISE_OR; } // fall through - case 105: break; + case 107: break; case 15: { return NOT; } // fall through - case 106: break; + case 108: break; case 16: { return MODULO; } // fall through - case 107: break; + case 109: break; case 17: { return BITWISE_XOR; } // fall through - case 108: break; + case 110: break; case 18: { return BITWISE_INVERT; } // fall through - case 109: break; + case 111: break; case 19: { return COLON; } // fall through - case 110: break; + case 112: break; case 20: { return COMMENT; } // fall through - case 111: break; + case 113: break; case 21: { return OCTAL; } // fall through - case 112: break; + case 114: break; case 22: { return HEX; } // fall through - case 113: break; + case 115: break; case 23: { return L_STRING; } // fall through - case 114: break; + case 116: break; case 24: { return B_DIV_OPCODE; } // fall through - case 115: break; + case 117: break; case 25: { return B_PLUS_OPCODE; } // fall through - case 116: break; + case 118: break; case 26: { return B_MINUS_OPCODE; } // fall through - case 117: break; + case 119: break; case 27: { return B_TIMES_OPCODE; } // fall through - case 118: break; + case 120: break; case 28: { return B_LESS_THAN_OPCODE; } // fall through - case 119: break; + case 121: break; case 29: { return B_GREATER_THAN_OPCODE; } // fall through - case 120: break; + case 122: break; case 30: { return B_BITWISE_AND_OPCODE; } // fall through - case 121: break; + case 123: break; case 31: { return B_BITWISE_OR_OPCODE; } // fall through - case 122: break; + case 124: break; case 32: { return B_MODULO_OPCODE; } // fall through - case 123: break; + case 125: break; case 33: { return B_BITWISE_XOR_OPCODE; } // fall through - case 124: break; + case 126: break; case 34: { return B_INVERT_OPCODE; } // fall through - case 125: break; + case 127: break; case 35: { return LOGICAL_EQUAL; } // fall through - case 126: break; + case 128: break; case 36: { return LESSTHANEQUAL; } // fall through - case 127: break; + case 129: break; case 37: { return GREATERTHANEQUAL; } // fall through - case 128: break; + case 130: break; case 38: { return LOGICAL_AND; } // fall through - case 129: break; + case 131: break; case 39: { return LOGICAL_OR; } // fall through - case 130: break; + case 132: break; case 40: { return LOGICAL_NOTEQUAL; } // fall through - case 131: break; + case 133: break; case 41: { return INT; } // fall through - case 132: break; + case 134: break; case 42: { return TXN_LOADING_OP; } // fall through - case 133: break; + case 135: break; case 43: { return B_EQUAL_OPCODE; } // fall through - case 134: break; + case 136: break; case 44: { return B_LESS_THAN_EQ_OPCODE; } // fall through - case 135: break; + case 137: break; case 45: { return B_GREATER_THAN_EQ_OPCODE; } // fall through - case 136: break; + case 138: break; case 46: { return B_NOT_EQUAL_OPCODE; } // fall through - case 137: break; + case 139: break; case 47: { return STATEACCESS_OP; } // fall through - case 138: break; + case 140: break; case 48: { return LEN; } // fall through - case 139: break; + case 141: break; case 49: { return EXP_OPCODE; } // fall through - case 140: break; + case 142: break; case 50: { return LOADING_OP; } // fall through - case 141: break; + case 143: break; case 51: { return SHL_OPCODE; } // fall through - case 142: break; + case 144: break; case 52: { return SHR_OPCODE; } // fall through - case 143: break; + case 145: break; case 53: { return TYPENUM_CONSTANT; } // fall through - case 144: break; + case 146: break; case 54: { return ITOB; } // fall through - case 145: break; + case 147: break; case 55: { return INNER_TRANSACTION_OP; } // fall through - case 146: break; + case 148: break; case 56: { return BTOI; } // fall through - case 147: break; + case 149: break; case 57: { return BYTE; } // fall through - case 148: break; + case 150: break; case 58: { return EXPW_OPCODE; } // fall through - case 149: break; + case 151: break; case 59: { return ADDR; } // fall through - case 150: break; + case 152: break; case 60: { return ADDW; } // fall through - case 151: break; + case 153: break; case 61: - { return SQRT_OPCODE; + { return DIVW; } // fall through - case 152: break; + case 154: break; case 62: - { return MULW; + { return SQRT_OPCODE; } // fall through - case 153: break; + case 155: break; case 63: - { return NAMED_INTEGER_CONSTANT; + { return MULW; } // fall through - case 154: break; + case 156: break; case 64: - { return B_SQRT_OPCODE; + { return NAMED_INTEGER_CONSTANT; } // fall through - case 155: break; + case 157: break; case 65: - { return GLOBAL_FIELD; + { return B_SQRT_OPCODE; } // fall through - case 156: break; + case 158: break; case 66: - { return CONCAT; + { return GLOBAL_FIELD; } // fall through - case 157: break; + case 159: break; case 67: - { return BITLEN_OPCODE; + { return CONCAT; } // fall through - case 158: break; + case 160: break; case 68: - { return GETBIT; + { return BITLEN_OPCODE; } // fall through - case 159: break; + case 161: break; case 69: - { return SETBIT; + { return GETBIT; } // fall through - case 160: break; + case 162: break; case 70: - { return SHA256; + { return SETBIT; } // fall through - case 161: break; + case 163: break; case 71: - { return EXTRACT_OPCODE; + { return SHA256; } // fall through - case 162: break; + case 164: break; case 72: - { return GETBYTE; + { return METHOD; } // fall through - case 163: break; + case 165: break; case 73: - { return DIVMODW; + { return EXTRACT_OPCODE; } // fall through - case 164: break; + case 166: break; case 74: - { return SETBYTE; + { return GETBYTE; } // fall through - case 165: break; + case 167: break; case 75: - { return VERSION; + { return DIVMODW; } // fall through - case 166: break; + case 168: break; case 76: - { return PRAGMA_KEYWORD; + { return SETBYTE; } // fall through - case 167: break; + case 169: break; case 77: - { return EXTRACT_3_OPCODE; + { return VERSION; } // fall through - case 168: break; + case 170: break; case 78: - { return ASSET_PARAMS_GET_FIELD; + { return PRAGMA_KEYWORD; } // fall through - case 169: break; + case 171: break; case 79: - { return KECCAK256; + { return EXTRACT_3_OPCODE; } // fall through - case 170: break; + case 172: break; case 80: - { return SUBSTRING; + { return ASSET_PARAMS_GET_FIELD; } // fall through - case 171: break; + case 173: break; case 81: - { return SUBSTRING3; + { return KECCAK256; } // fall through - case 172: break; + case 174: break; case 82: - { return SHA512_256; + { return SUBSTRING; } // fall through - case 173: break; + case 175: break; case 83: - { return APP_PARAMS_GET_FIELD; + { return SUBSTRING3; } // fall through - case 174: break; + case 176: break; case 84: - { return VAR_TMPL; + { return SHA512_256; } // fall through - case 175: break; + case 177: break; case 85: - { return ACCT_PARAMS_GET_FIELD; + { return APP_PARAMS_GET_FIELD; } // fall through - case 176: break; + case 178: break; case 86: - { return ASSET_HOLDING_GET_FIELD; + { return VAR_TMPL; } // fall through - case 177: break; + case 179: break; case 87: - { return ECDSA_OP; + { return ACCT_PARAMS_GET_FIELD; } // fall through - case 178: break; + case 180: break; case 88: - { return ED25519VERIFY; + { return ASSET_HOLDING_GET_FIELD; } // fall through - case 179: break; + case 181: break; case 89: - { return EXTRACT_UINT_16_OPCODE; + { return ECDSA_OP; } // fall through - case 180: break; + case 182: break; case 90: - { return EXTRACT_UINT_32_OPCODE; + { return ED25519VERIFY; } // fall through - case 181: break; + case 183: break; case 91: + { return EXTRACT_UINT_16_OPCODE; + } + // fall through + case 184: break; + case 92: + { return EXTRACT_UINT_32_OPCODE; + } + // fall through + case 185: break; + case 93: { return EXTRACT_UINT_64_OPCODE; } // fall through - case 182: break; + case 186: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/parser/TEALParser.java b/src/main/gen/com/bloxbean/algodea/idea/language/parser/TEALParser.java index 6f6b2ee..547463d 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/parser/TEALParser.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/parser/TEALParser.java @@ -300,6 +300,18 @@ public static boolean DIVMODW_OPCODE(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // 'divw' + public static boolean DIVW_OPCODE(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "DIVW_OPCODE")) return false; + if (!nextTokenIs(b, DIVW)) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeToken(b, DIVW); + exit_section_(b, m, DIVW_OPCODE, r); + return r; + } + /* ********************************************************** */ // 'ecdsa_pk_decompress' public static boolean ECDSA_PK_DECOMPRESS_OPCODE(PsiBuilder b, int l) { @@ -485,6 +497,50 @@ public static boolean GETBYTE_OPCODE(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // 'gitxnas' + public static boolean GITXNAS_OPCODE(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "GITXNAS_OPCODE")) return false; + boolean r; + Marker m = enter_section_(b, l, _NONE_, GITXNAS_OPCODE, ""); + r = consumeToken(b, "gitxnas"); + exit_section_(b, l, m, r, false, null); + return r; + } + + /* ********************************************************** */ + // 'gitxna' + public static boolean GITXNA_OPCODE(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "GITXNA_OPCODE")) return false; + boolean r; + Marker m = enter_section_(b, l, _NONE_, GITXNA_OPCODE, ""); + r = consumeToken(b, "gitxna"); + exit_section_(b, l, m, r, false, null); + return r; + } + + /* ********************************************************** */ + // 'gitxn' + public static boolean GITXN_OPCODE(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "GITXN_OPCODE")) return false; + boolean r; + Marker m = enter_section_(b, l, _NONE_, GITXN_OPCODE, ""); + r = consumeToken(b, "gitxn"); + exit_section_(b, l, m, r, false, null); + return r; + } + + /* ********************************************************** */ + // 'gloadss' + public static boolean GLOADSS_OPCODE(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "GLOADSS_OPCODE")) return false; + boolean r; + Marker m = enter_section_(b, l, _NONE_, GLOADSS_OPCODE, ""); + r = consumeToken(b, "gloadss"); + exit_section_(b, l, m, r, false, null); + return r; + } + /* ********************************************************** */ // 'gloads' public static boolean GLOADS_OPCODE(PsiBuilder b, int l) { @@ -607,6 +663,7 @@ public static boolean GTXN_OPCODE(PsiBuilder b, int l) { // | BITWISE_INVERT // | MULW // | ADDW + // | DIVW_OPCODE //v6 // | DIVMODW_OPCODE // | EXPW_OPCODE // | GETBIT_OPCODE @@ -658,6 +715,7 @@ public static boolean GeneralOperation(PsiBuilder b, int l) { if (!r) r = consumeToken(b, BITWISE_INVERT); if (!r) r = consumeToken(b, MULW); if (!r) r = consumeToken(b, ADDW); + if (!r) r = DIVW_OPCODE(b, l + 1); if (!r) r = DIVMODW_OPCODE(b, l + 1); if (!r) r = EXPW_OPCODE(b, l + 1); if (!r) r = GETBIT_OPCODE(b, l + 1); @@ -676,6 +734,17 @@ public static boolean GeneralOperation(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // 'itxnas' + public static boolean ITXNAS_OPCODE(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "ITXNAS_OPCODE")) return false; + boolean r; + Marker m = enter_section_(b, l, _NONE_, ITXNAS_OPCODE, ""); + r = consumeToken(b, "itxnas"); + exit_section_(b, l, m, r, false, null); + return r; + } + /* ********************************************************** */ // 'itxna' public static boolean ITXNA_OPCODE(PsiBuilder b, int l) { @@ -709,6 +778,17 @@ public static boolean ITXN_FIELD_OPCODE(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // 'itxn_next' + public static boolean ITXN_NEXT_OPCODE(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "ITXN_NEXT_OPCODE")) return false; + boolean r; + Marker m = enter_section_(b, l, _NONE_, ITXN_NEXT_OPCODE, ""); + r = consumeToken(b, "itxn_next"); + exit_section_(b, l, m, r, false, null); + return r; + } + /* ********************************************************** */ // 'itxn' public static boolean ITXN_OPCODE(PsiBuilder b, int l) { @@ -785,6 +865,7 @@ public static boolean LOG_OPCODE(PsiBuilder b, int l) { // | gtxnsaLoadingOperation // | gloadOperation // | gloadsOperation + // | GLOADSS_OPCODE //v6 // | gaidOperation // | gaidsOperation // | loadsOperation @@ -828,6 +909,7 @@ public static boolean LoadingOperation(PsiBuilder b, int l) { if (!r) r = gtxnsaLoadingOperation(b, l + 1); if (!r) r = gloadOperation(b, l + 1); if (!r) r = gloadsOperation(b, l + 1); + if (!r) r = GLOADSS_OPCODE(b, l + 1); if (!r) r = gaidOperation(b, l + 1); if (!r) r = gaidsOperation(b, l + 1); if (!r) r = loadsOperation(b, l + 1); @@ -1809,6 +1891,115 @@ public static boolean gaidsOperation(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // GITXN_OPCODE (unsignedInteger | VAR_TMPL) (unsignedInteger | TxnFieldArg | VAR_TMPL) + public static boolean gitxnOperation(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "gitxnOperation")) return false; + boolean r, p; + Marker m = enter_section_(b, l, _NONE_, GITXN_OPERATION, ""); + r = GITXN_OPCODE(b, l + 1); + p = r; // pin = 1 + r = r && report_error_(b, gitxnOperation_1(b, l + 1)); + r = p && gitxnOperation_2(b, l + 1) && r; + exit_section_(b, l, m, r, p, null); + return r || p; + } + + // unsignedInteger | VAR_TMPL + private static boolean gitxnOperation_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "gitxnOperation_1")) return false; + boolean r; + r = unsignedInteger(b, l + 1); + if (!r) r = consumeToken(b, VAR_TMPL); + return r; + } + + // unsignedInteger | TxnFieldArg | VAR_TMPL + private static boolean gitxnOperation_2(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "gitxnOperation_2")) return false; + boolean r; + r = unsignedInteger(b, l + 1); + if (!r) r = TxnFieldArg(b, l + 1); + if (!r) r = consumeToken(b, VAR_TMPL); + return r; + } + + /* ********************************************************** */ + // GITXNA_OPCODE (unsignedInteger | VAR_TMPL) (unsignedInteger | TxnFieldArg | VAR_TMPL) (unsignedInteger | VAR_TMPL) + public static boolean gitxnaOperation(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "gitxnaOperation")) return false; + boolean r, p; + Marker m = enter_section_(b, l, _NONE_, GITXNA_OPERATION, ""); + r = GITXNA_OPCODE(b, l + 1); + p = r; // pin = 1 + r = r && report_error_(b, gitxnaOperation_1(b, l + 1)); + r = p && report_error_(b, gitxnaOperation_2(b, l + 1)) && r; + r = p && gitxnaOperation_3(b, l + 1) && r; + exit_section_(b, l, m, r, p, null); + return r || p; + } + + // unsignedInteger | VAR_TMPL + private static boolean gitxnaOperation_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "gitxnaOperation_1")) return false; + boolean r; + r = unsignedInteger(b, l + 1); + if (!r) r = consumeToken(b, VAR_TMPL); + return r; + } + + // unsignedInteger | TxnFieldArg | VAR_TMPL + private static boolean gitxnaOperation_2(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "gitxnaOperation_2")) return false; + boolean r; + r = unsignedInteger(b, l + 1); + if (!r) r = TxnFieldArg(b, l + 1); + if (!r) r = consumeToken(b, VAR_TMPL); + return r; + } + + // unsignedInteger | VAR_TMPL + private static boolean gitxnaOperation_3(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "gitxnaOperation_3")) return false; + boolean r; + r = unsignedInteger(b, l + 1); + if (!r) r = consumeToken(b, VAR_TMPL); + return r; + } + + /* ********************************************************** */ + // GITXNAS_OPCODE (unsignedInteger | VAR_TMPL) (unsignedInteger | TxnFieldArg | VAR_TMPL) + public static boolean gitxnasOperation(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "gitxnasOperation")) return false; + boolean r, p; + Marker m = enter_section_(b, l, _NONE_, GITXNAS_OPERATION, ""); + r = GITXNAS_OPCODE(b, l + 1); + p = r; // pin = 1 + r = r && report_error_(b, gitxnasOperation_1(b, l + 1)); + r = p && gitxnasOperation_2(b, l + 1) && r; + exit_section_(b, l, m, r, p, null); + return r || p; + } + + // unsignedInteger | VAR_TMPL + private static boolean gitxnasOperation_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "gitxnasOperation_1")) return false; + boolean r; + r = unsignedInteger(b, l + 1); + if (!r) r = consumeToken(b, VAR_TMPL); + return r; + } + + // unsignedInteger | TxnFieldArg | VAR_TMPL + private static boolean gitxnasOperation_2(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "gitxnasOperation_2")) return false; + boolean r; + r = unsignedInteger(b, l + 1); + if (!r) r = TxnFieldArg(b, l + 1); + if (!r) r = consumeToken(b, VAR_TMPL); + return r; + } + /* ********************************************************** */ // GLOAD_OPCODE (unsignedInteger | VAR_TMPL) (unsignedInteger | VAR_TMPL) public static boolean gloadOperation(PsiBuilder b, int l) { @@ -2104,18 +2295,28 @@ private static boolean gtxnsasOperation_1(PsiBuilder b, int l) { /* ********************************************************** */ // ITXN_BEGIN_OPCODE | ITXN_SUBMIT_OPCODE + // | ITXN_NEXT_OPCODE //v6 // | itxnFieldOperation // | itxnOperation // | itxnaOperation + // | itxnasOperation + // | gitxnOperation + // | gitxnaOperation + // | gitxnasOperation public static boolean innerTransactionOperation(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "innerTransactionOperation")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, INNER_TRANSACTION_OPERATION, ""); r = ITXN_BEGIN_OPCODE(b, l + 1); if (!r) r = ITXN_SUBMIT_OPCODE(b, l + 1); + if (!r) r = ITXN_NEXT_OPCODE(b, l + 1); if (!r) r = itxnFieldOperation(b, l + 1); if (!r) r = itxnOperation(b, l + 1); if (!r) r = itxnaOperation(b, l + 1); + if (!r) r = itxnasOperation(b, l + 1); + if (!r) r = gitxnOperation(b, l + 1); + if (!r) r = gitxnaOperation(b, l + 1); + if (!r) r = gitxnasOperation(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } @@ -2292,6 +2493,29 @@ private static boolean itxnaOperation_2(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // ITXNAS_OPCODE (unsignedInteger | TxnFieldArg | VAR_TMPL) + public static boolean itxnasOperation(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "itxnasOperation")) return false; + boolean r, p; + Marker m = enter_section_(b, l, _NONE_, ITXNAS_OPERATION, ""); + r = ITXNAS_OPCODE(b, l + 1); + p = r; // pin = 1 + r = r && itxnasOperation_1(b, l + 1); + exit_section_(b, l, m, r, p, null); + return r || p; + } + + // unsignedInteger | TxnFieldArg | VAR_TMPL + private static boolean itxnasOperation_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "itxnasOperation_1")) return false; + boolean r; + r = unsignedInteger(b, l + 1); + if (!r) r = TxnFieldArg(b, l + 1); + if (!r) r = consumeToken(b, VAR_TMPL); + return r; + } + /* ********************************************************** */ // 'load' (unsignedInteger | VAR_TMPL) public static boolean loadOperation(PsiBuilder b, int l) { @@ -2325,6 +2549,30 @@ public static boolean loadsOperation(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // METHOD (l_string | ID | VAR_TMPL) + public static boolean method_statement(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "method_statement")) return false; + if (!nextTokenIs(b, METHOD)) return false; + boolean r, p; + Marker m = enter_section_(b, l, _NONE_, METHOD_STATEMENT, null); + r = consumeToken(b, METHOD); + p = r; // pin = 1 + r = r && method_statement_1(b, l + 1); + exit_section_(b, l, m, r, p, null); + return r || p; + } + + // l_string | ID | VAR_TMPL + private static boolean method_statement_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "method_statement_1")) return false; + boolean r; + r = consumeToken(b, L_STRING); + if (!r) r = consumeToken(b, ID); + if (!r) r = consumeToken(b, VAR_TMPL); + return r; + } + /* ********************************************************** */ // PRAGMA_KEYWORD VERSION pragma_version public static boolean pragma(PsiBuilder b, int l) { @@ -2351,59 +2599,71 @@ public static boolean pragma_version(PsiBuilder b, int l) { } /* ********************************************************** */ - // [pragma NL*] statement* + // COMMENT* [pragma NL*] statement* public static boolean program(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "program")) return false; boolean r; Marker m = enter_section_(b, l, _NONE_, PROGRAM, ""); r = program_0(b, l + 1); r = r && program_1(b, l + 1); + r = r && program_2(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } - // [pragma NL*] + // COMMENT* private static boolean program_0(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "program_0")) return false; - program_0_0(b, l + 1); + while (true) { + int c = current_position_(b); + if (!consumeToken(b, COMMENT)) break; + if (!empty_element_parsed_guard_(b, "program_0", c)) break; + } + return true; + } + + // [pragma NL*] + private static boolean program_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "program_1")) return false; + program_1_0(b, l + 1); return true; } // pragma NL* - private static boolean program_0_0(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "program_0_0")) return false; + private static boolean program_1_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "program_1_0")) return false; boolean r; Marker m = enter_section_(b); r = pragma(b, l + 1); - r = r && program_0_0_1(b, l + 1); + r = r && program_1_0_1(b, l + 1); exit_section_(b, m, null, r); return r; } // NL* - private static boolean program_0_0_1(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "program_0_0_1")) return false; + private static boolean program_1_0_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "program_1_0_1")) return false; while (true) { int c = current_position_(b); if (!consumeToken(b, NL)) break; - if (!empty_element_parsed_guard_(b, "program_0_0_1", c)) break; + if (!empty_element_parsed_guard_(b, "program_1_0_1", c)) break; } return true; } // statement* - private static boolean program_1(PsiBuilder b, int l) { - if (!recursion_guard_(b, l, "program_1")) return false; + private static boolean program_2(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "program_2")) return false; while (true) { int c = current_position_(b); if (!statement(b, l + 1)) break; - if (!empty_element_parsed_guard_(b, "program_1", c)) break; + if (!empty_element_parsed_guard_(b, "program_2", c)) break; } return true; } /* ********************************************************** */ - // int_statement | byte_statement | addr_statement + // int_statement | byte_statement | addr_statement | method_statement public static boolean pseudo_op(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "pseudo_op")) return false; boolean r; @@ -2411,6 +2671,7 @@ public static boolean pseudo_op(PsiBuilder b, int l) { r = int_statement(b, l + 1); if (!r) r = byte_statement(b, l + 1); if (!r) r = addr_statement(b, l + 1); + if (!r) r = method_statement(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALDivwOpcode.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALDivwOpcode.java new file mode 100644 index 0000000..3befbf1 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALDivwOpcode.java @@ -0,0 +1,10 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALDivwOpcode extends PsiElement { + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGeneralOperation.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGeneralOperation.java index 1a4e3d7..5b937bb 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGeneralOperation.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGeneralOperation.java @@ -13,6 +13,9 @@ public interface TEALGeneralOperation extends PsiElement { @Nullable TEALDivmodwOpcode getDivmodwOpcode(); + @Nullable + TEALDivwOpcode getDivwOpcode(); + @Nullable TEALExpwOpcode getExpwOpcode(); diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnOpcode.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnOpcode.java new file mode 100644 index 0000000..29e7128 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnOpcode.java @@ -0,0 +1,10 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALGitxnOpcode extends PsiElement { + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnOperation.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnOperation.java new file mode 100644 index 0000000..420a309 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnOperation.java @@ -0,0 +1,19 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALGitxnOperation extends PsiElement { + + @NotNull + TEALGitxnOpcode getGitxnOpcode(); + + @Nullable + TEALTxnFieldArg getTxnFieldArg(); + + @NotNull + List getUnsignedIntegerList(); + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnaOpcode.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnaOpcode.java new file mode 100644 index 0000000..dd736a1 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnaOpcode.java @@ -0,0 +1,10 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALGitxnaOpcode extends PsiElement { + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnaOperation.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnaOperation.java new file mode 100644 index 0000000..6c18594 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnaOperation.java @@ -0,0 +1,19 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALGitxnaOperation extends PsiElement { + + @NotNull + TEALGitxnaOpcode getGitxnaOpcode(); + + @Nullable + TEALTxnFieldArg getTxnFieldArg(); + + @NotNull + List getUnsignedIntegerList(); + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnasOpcode.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnasOpcode.java new file mode 100644 index 0000000..f06327f --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnasOpcode.java @@ -0,0 +1,10 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALGitxnasOpcode extends PsiElement { + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnasOperation.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnasOperation.java new file mode 100644 index 0000000..8de4dce --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGitxnasOperation.java @@ -0,0 +1,19 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALGitxnasOperation extends PsiElement { + + @NotNull + TEALGitxnasOpcode getGitxnasOpcode(); + + @Nullable + TEALTxnFieldArg getTxnFieldArg(); + + @NotNull + List getUnsignedIntegerList(); + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGloadssOpcode.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGloadssOpcode.java new file mode 100644 index 0000000..07c43f1 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALGloadssOpcode.java @@ -0,0 +1,10 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALGloadssOpcode extends PsiElement { + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALInnerTransactionOperation.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALInnerTransactionOperation.java index 12ce30e..da7fc37 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALInnerTransactionOperation.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALInnerTransactionOperation.java @@ -10,9 +10,21 @@ public interface TEALInnerTransactionOperation extends PsiElement { @Nullable TEALItxnBeginOpcode getItxnBeginOpcode(); + @Nullable + TEALItxnNextOpcode getItxnNextOpcode(); + @Nullable TEALItxnSubmitOpcode getItxnSubmitOpcode(); + @Nullable + TEALGitxnOperation getGitxnOperation(); + + @Nullable + TEALGitxnaOperation getGitxnaOperation(); + + @Nullable + TEALGitxnasOperation getGitxnasOperation(); + @Nullable TEALItxnFieldOperation getItxnFieldOperation(); @@ -22,4 +34,7 @@ public interface TEALInnerTransactionOperation extends PsiElement { @Nullable TEALItxnaOperation getItxnaOperation(); + @Nullable + TEALItxnasOperation getItxnasOperation(); + } diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALItxnNextOpcode.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALItxnNextOpcode.java new file mode 100644 index 0000000..366ae59 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALItxnNextOpcode.java @@ -0,0 +1,10 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALItxnNextOpcode extends PsiElement { + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALItxnasOpcode.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALItxnasOpcode.java new file mode 100644 index 0000000..b325b32 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALItxnasOpcode.java @@ -0,0 +1,10 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALItxnasOpcode extends PsiElement { + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALItxnasOperation.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALItxnasOperation.java new file mode 100644 index 0000000..e81c976 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALItxnasOperation.java @@ -0,0 +1,22 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALItxnasOperation extends PsiElement { + + @NotNull + TEALItxnasOpcode getItxnasOpcode(); + + @Nullable + TEALTxnFieldArg getTxnFieldArg(); + + @Nullable + TEALUnsignedInteger getUnsignedInteger(); + + @Nullable + PsiElement getVarTmpl(); + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALLoadingOperation.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALLoadingOperation.java index a074bf7..a2f6da5 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALLoadingOperation.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALLoadingOperation.java @@ -13,6 +13,9 @@ public interface TEALLoadingOperation extends PsiElement { @Nullable TEALBZeroOpcode getBZeroOpcode(); + @Nullable + TEALGloadssOpcode getGloadssOpcode(); + @Nullable TEALArgOperation getArgOperation(); diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALMethodStatement.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALMethodStatement.java new file mode 100644 index 0000000..b78f922 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALMethodStatement.java @@ -0,0 +1,19 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface TEALMethodStatement extends PsiElement { + + @Nullable + PsiElement getId(); + + @Nullable + PsiElement getVarTmpl(); + + @Nullable + PsiElement getLString(); + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALPseudoOp.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALPseudoOp.java index a0af56d..5c344d3 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALPseudoOp.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALPseudoOp.java @@ -16,4 +16,7 @@ public interface TEALPseudoOp extends PsiElement { @Nullable TEALIntStatement getIntStatement(); + @Nullable + TEALMethodStatement getMethodStatement(); + } diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALTypes.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALTypes.java index 15bf080..41ebba9 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALTypes.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALTypes.java @@ -52,6 +52,7 @@ public interface TEALTypes { IElementType DIG_OPCODE = new TEALElementType("DIG_OPCODE"); IElementType DIG_OPERATION = new TEALElementType("DIG_OPERATION"); IElementType DIVMODW_OPCODE = new TEALElementType("DIVMODW_OPCODE"); + IElementType DIVW_OPCODE = new TEALElementType("DIVW_OPCODE"); IElementType ECDSA_OP = new TEALElementType("ECDSA_OP"); IElementType ECDSA_PK_DECOMPRESS_OPCODE = new TEALElementType("ECDSA_PK_DECOMPRESS_OPCODE"); IElementType ECDSA_PK_RECOVER_OPCODE = new TEALElementType("ECDSA_PK_RECOVER_OPCODE"); @@ -72,6 +73,13 @@ public interface TEALTypes { IElementType GENERAL_OPERATION = new TEALElementType("GENERAL_OPERATION"); IElementType GETBIT_OPCODE = new TEALElementType("GETBIT_OPCODE"); IElementType GETBYTE_OPCODE = new TEALElementType("GETBYTE_OPCODE"); + IElementType GITXNAS_OPCODE = new TEALElementType("GITXNAS_OPCODE"); + IElementType GITXNAS_OPERATION = new TEALElementType("GITXNAS_OPERATION"); + IElementType GITXNA_OPCODE = new TEALElementType("GITXNA_OPCODE"); + IElementType GITXNA_OPERATION = new TEALElementType("GITXNA_OPERATION"); + IElementType GITXN_OPCODE = new TEALElementType("GITXN_OPCODE"); + IElementType GITXN_OPERATION = new TEALElementType("GITXN_OPERATION"); + IElementType GLOADSS_OPCODE = new TEALElementType("GLOADSS_OPCODE"); IElementType GLOADS_OPCODE = new TEALElementType("GLOADS_OPCODE"); IElementType GLOADS_OPERATION = new TEALElementType("GLOADS_OPERATION"); IElementType GLOAD_OPCODE = new TEALElementType("GLOAD_OPCODE"); @@ -94,11 +102,14 @@ public interface TEALTypes { IElementType INTCBLOCK_OPERATION = new TEALElementType("INTCBLOCK_OPERATION"); IElementType INTC_OPERATION = new TEALElementType("INTC_OPERATION"); IElementType INT_STATEMENT = new TEALElementType("INT_STATEMENT"); + IElementType ITXNAS_OPCODE = new TEALElementType("ITXNAS_OPCODE"); + IElementType ITXNAS_OPERATION = new TEALElementType("ITXNAS_OPERATION"); IElementType ITXNA_OPCODE = new TEALElementType("ITXNA_OPCODE"); IElementType ITXNA_OPERATION = new TEALElementType("ITXNA_OPERATION"); IElementType ITXN_BEGIN_OPCODE = new TEALElementType("ITXN_BEGIN_OPCODE"); IElementType ITXN_FIELD_OPCODE = new TEALElementType("ITXN_FIELD_OPCODE"); IElementType ITXN_FIELD_OPERATION = new TEALElementType("ITXN_FIELD_OPERATION"); + IElementType ITXN_NEXT_OPCODE = new TEALElementType("ITXN_NEXT_OPCODE"); IElementType ITXN_OPCODE = new TEALElementType("ITXN_OPCODE"); IElementType ITXN_OPERATION = new TEALElementType("ITXN_OPERATION"); IElementType ITXN_SUBMIT_OPCODE = new TEALElementType("ITXN_SUBMIT_OPCODE"); @@ -107,6 +118,7 @@ public interface TEALTypes { IElementType LOADS_OPERATION = new TEALElementType("LOADS_OPERATION"); IElementType LOAD_OPERATION = new TEALElementType("LOAD_OPERATION"); IElementType LOG_OPCODE = new TEALElementType("LOG_OPCODE"); + IElementType METHOD_STATEMENT = new TEALElementType("METHOD_STATEMENT"); IElementType MIN_BALANCE_OPCODE = new TEALElementType("MIN_BALANCE_OPCODE"); IElementType PRAGMA = new TEALElementType("PRAGMA"); IElementType PRAGMA_VERSION = new TEALElementType("PRAGMA_VERSION"); @@ -158,6 +170,7 @@ public interface TEALTypes { IElementType CONCAT = new TEALTokenType("concat"); IElementType DIVIDE = new TEALTokenType("/"); IElementType DIVMODW = new TEALTokenType("divmodw"); + IElementType DIVW = new TEALTokenType("divw"); IElementType ED25519VERIFY = new TEALTokenType("ed25519verify"); IElementType EOF = new TEALTokenType("EOF"); IElementType FLOWCONTROL_OP = new TEALTokenType("FLOWCONTROL_OP"); @@ -182,6 +195,7 @@ public interface TEALTypes { IElementType LOGICAL_OR = new TEALTokenType("||"); IElementType L_INTEGER = new TEALTokenType("l_integer"); IElementType L_STRING = new TEALTokenType("l_string"); + IElementType METHOD = new TEALTokenType("method"); IElementType MINUS = new TEALTokenType("-"); IElementType MODULO = new TEALTokenType("%"); IElementType MULW = new TEALTokenType("mulw"); @@ -339,6 +353,9 @@ else if (type == DIG_OPERATION) { else if (type == DIVMODW_OPCODE) { return new TEALDivmodwOpcodeImpl(node); } + else if (type == DIVW_OPCODE) { + return new TEALDivwOpcodeImpl(node); + } else if (type == ECDSA_OP) { return new TEALEcdsaOpImpl(node); } @@ -399,6 +416,27 @@ else if (type == GETBIT_OPCODE) { else if (type == GETBYTE_OPCODE) { return new TEALGetbyteOpcodeImpl(node); } + else if (type == GITXNAS_OPCODE) { + return new TEALGitxnasOpcodeImpl(node); + } + else if (type == GITXNAS_OPERATION) { + return new TEALGitxnasOperationImpl(node); + } + else if (type == GITXNA_OPCODE) { + return new TEALGitxnaOpcodeImpl(node); + } + else if (type == GITXNA_OPERATION) { + return new TEALGitxnaOperationImpl(node); + } + else if (type == GITXN_OPCODE) { + return new TEALGitxnOpcodeImpl(node); + } + else if (type == GITXN_OPERATION) { + return new TEALGitxnOperationImpl(node); + } + else if (type == GLOADSS_OPCODE) { + return new TEALGloadssOpcodeImpl(node); + } else if (type == GLOADS_OPCODE) { return new TEALGloadsOpcodeImpl(node); } @@ -465,6 +503,12 @@ else if (type == INTC_OPERATION) { else if (type == INT_STATEMENT) { return new TEALIntStatementImpl(node); } + else if (type == ITXNAS_OPCODE) { + return new TEALItxnasOpcodeImpl(node); + } + else if (type == ITXNAS_OPERATION) { + return new TEALItxnasOperationImpl(node); + } else if (type == ITXNA_OPCODE) { return new TEALItxnaOpcodeImpl(node); } @@ -480,6 +524,9 @@ else if (type == ITXN_FIELD_OPCODE) { else if (type == ITXN_FIELD_OPERATION) { return new TEALItxnFieldOperationImpl(node); } + else if (type == ITXN_NEXT_OPCODE) { + return new TEALItxnNextOpcodeImpl(node); + } else if (type == ITXN_OPCODE) { return new TEALItxnOpcodeImpl(node); } @@ -504,6 +551,9 @@ else if (type == LOAD_OPERATION) { else if (type == LOG_OPCODE) { return new TEALLogOpcodeImpl(node); } + else if (type == METHOD_STATEMENT) { + return new TEALMethodStatementImpl(node); + } else if (type == MIN_BALANCE_OPCODE) { return new TEALMinBalanceOpcodeImpl(node); } diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALVisitor.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALVisitor.java index 6468038..3c9a027 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALVisitor.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/TEALVisitor.java @@ -103,6 +103,10 @@ public void visitDivmodwOpcode(@NotNull TEALDivmodwOpcode o) { visitPsiElement(o); } + public void visitDivwOpcode(@NotNull TEALDivwOpcode o) { + visitPsiElement(o); + } + public void visitEcdsaPkDecompressOpcode(@NotNull TEALEcdsaPkDecompressOpcode o) { visitPsiElement(o); } @@ -163,6 +167,22 @@ public void visitGetbyteOpcode(@NotNull TEALGetbyteOpcode o) { visitPsiElement(o); } + public void visitGitxnasOpcode(@NotNull TEALGitxnasOpcode o) { + visitPsiElement(o); + } + + public void visitGitxnaOpcode(@NotNull TEALGitxnaOpcode o) { + visitPsiElement(o); + } + + public void visitGitxnOpcode(@NotNull TEALGitxnOpcode o) { + visitPsiElement(o); + } + + public void visitGloadssOpcode(@NotNull TEALGloadssOpcode o) { + visitPsiElement(o); + } + public void visitGloadsOpcode(@NotNull TEALGloadsOpcode o) { visitPsiElement(o); } @@ -199,6 +219,10 @@ public void visitGeneralOperation(@NotNull TEALGeneralOperation o) { visitPsiElement(o); } + public void visitItxnasOpcode(@NotNull TEALItxnasOpcode o) { + visitPsiElement(o); + } + public void visitItxnaOpcode(@NotNull TEALItxnaOpcode o) { visitPsiElement(o); } @@ -211,6 +235,10 @@ public void visitItxnFieldOpcode(@NotNull TEALItxnFieldOpcode o) { visitPsiElement(o); } + public void visitItxnNextOpcode(@NotNull TEALItxnNextOpcode o) { + visitPsiElement(o); + } + public void visitItxnOpcode(@NotNull TEALItxnOpcode o) { visitPsiElement(o); } @@ -399,6 +427,18 @@ public void visitGaidsOperation(@NotNull TEALGaidsOperation o) { visitPsiElement(o); } + public void visitGitxnOperation(@NotNull TEALGitxnOperation o) { + visitPsiElement(o); + } + + public void visitGitxnaOperation(@NotNull TEALGitxnaOperation o) { + visitPsiElement(o); + } + + public void visitGitxnasOperation(@NotNull TEALGitxnasOperation o) { + visitPsiElement(o); + } + public void visitGloadOperation(@NotNull TEALGloadOperation o) { visitPsiElement(o); } @@ -467,6 +507,10 @@ public void visitItxnaOperation(@NotNull TEALItxnaOperation o) { visitPsiElement(o); } + public void visitItxnasOperation(@NotNull TEALItxnasOperation o) { + visitPsiElement(o); + } + public void visitLoadOperation(@NotNull TEALLoadOperation o) { visitPsiElement(o); } @@ -475,6 +519,10 @@ public void visitLoadsOperation(@NotNull TEALLoadsOperation o) { visitPsiElement(o); } + public void visitMethodStatement(@NotNull TEALMethodStatement o) { + visitPsiElement(o); + } + public void visitPragma(@NotNull TEALPragma o) { visitPsiElement(o); } diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALDivwOpcodeImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALDivwOpcodeImpl.java new file mode 100644 index 0000000..48e9b13 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALDivwOpcodeImpl.java @@ -0,0 +1,30 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALDivwOpcodeImpl extends ASTWrapperPsiElement implements TEALDivwOpcode { + + public TEALDivwOpcodeImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitDivwOpcode(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGeneralOperationImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGeneralOperationImpl.java index 42ea6bb..baa968c 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGeneralOperationImpl.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGeneralOperationImpl.java @@ -39,6 +39,12 @@ public TEALDivmodwOpcode getDivmodwOpcode() { return findChildByClass(TEALDivmodwOpcode.class); } + @Override + @Nullable + public TEALDivwOpcode getDivwOpcode() { + return findChildByClass(TEALDivwOpcode.class); + } + @Override @Nullable public TEALExpwOpcode getExpwOpcode() { diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnOpcodeImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnOpcodeImpl.java new file mode 100644 index 0000000..4646710 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnOpcodeImpl.java @@ -0,0 +1,30 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALGitxnOpcodeImpl extends ASTWrapperPsiElement implements TEALGitxnOpcode { + + public TEALGitxnOpcodeImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitGitxnOpcode(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnOperationImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnOperationImpl.java new file mode 100644 index 0000000..e6ffca2 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnOperationImpl.java @@ -0,0 +1,48 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALGitxnOperationImpl extends ASTWrapperPsiElement implements TEALGitxnOperation { + + public TEALGitxnOperationImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitGitxnOperation(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + + @Override + @NotNull + public TEALGitxnOpcode getGitxnOpcode() { + return findNotNullChildByClass(TEALGitxnOpcode.class); + } + + @Override + @Nullable + public TEALTxnFieldArg getTxnFieldArg() { + return findChildByClass(TEALTxnFieldArg.class); + } + + @Override + @NotNull + public List getUnsignedIntegerList() { + return PsiTreeUtil.getChildrenOfTypeAsList(this, TEALUnsignedInteger.class); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnaOpcodeImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnaOpcodeImpl.java new file mode 100644 index 0000000..d22b7e0 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnaOpcodeImpl.java @@ -0,0 +1,30 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALGitxnaOpcodeImpl extends ASTWrapperPsiElement implements TEALGitxnaOpcode { + + public TEALGitxnaOpcodeImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitGitxnaOpcode(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnaOperationImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnaOperationImpl.java new file mode 100644 index 0000000..cfb731f --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnaOperationImpl.java @@ -0,0 +1,48 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALGitxnaOperationImpl extends ASTWrapperPsiElement implements TEALGitxnaOperation { + + public TEALGitxnaOperationImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitGitxnaOperation(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + + @Override + @NotNull + public TEALGitxnaOpcode getGitxnaOpcode() { + return findNotNullChildByClass(TEALGitxnaOpcode.class); + } + + @Override + @Nullable + public TEALTxnFieldArg getTxnFieldArg() { + return findChildByClass(TEALTxnFieldArg.class); + } + + @Override + @NotNull + public List getUnsignedIntegerList() { + return PsiTreeUtil.getChildrenOfTypeAsList(this, TEALUnsignedInteger.class); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnasOpcodeImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnasOpcodeImpl.java new file mode 100644 index 0000000..ee902b6 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnasOpcodeImpl.java @@ -0,0 +1,30 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALGitxnasOpcodeImpl extends ASTWrapperPsiElement implements TEALGitxnasOpcode { + + public TEALGitxnasOpcodeImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitGitxnasOpcode(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnasOperationImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnasOperationImpl.java new file mode 100644 index 0000000..ba38275 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGitxnasOperationImpl.java @@ -0,0 +1,48 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALGitxnasOperationImpl extends ASTWrapperPsiElement implements TEALGitxnasOperation { + + public TEALGitxnasOperationImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitGitxnasOperation(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + + @Override + @NotNull + public TEALGitxnasOpcode getGitxnasOpcode() { + return findNotNullChildByClass(TEALGitxnasOpcode.class); + } + + @Override + @Nullable + public TEALTxnFieldArg getTxnFieldArg() { + return findChildByClass(TEALTxnFieldArg.class); + } + + @Override + @NotNull + public List getUnsignedIntegerList() { + return PsiTreeUtil.getChildrenOfTypeAsList(this, TEALUnsignedInteger.class); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGloadssOpcodeImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGloadssOpcodeImpl.java new file mode 100644 index 0000000..c346036 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALGloadssOpcodeImpl.java @@ -0,0 +1,30 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALGloadssOpcodeImpl extends ASTWrapperPsiElement implements TEALGloadssOpcode { + + public TEALGloadssOpcodeImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitGloadssOpcode(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALInnerTransactionOperationImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALInnerTransactionOperationImpl.java index 8592404..6250c2f 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALInnerTransactionOperationImpl.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALInnerTransactionOperationImpl.java @@ -33,12 +33,36 @@ public TEALItxnBeginOpcode getItxnBeginOpcode() { return findChildByClass(TEALItxnBeginOpcode.class); } + @Override + @Nullable + public TEALItxnNextOpcode getItxnNextOpcode() { + return findChildByClass(TEALItxnNextOpcode.class); + } + @Override @Nullable public TEALItxnSubmitOpcode getItxnSubmitOpcode() { return findChildByClass(TEALItxnSubmitOpcode.class); } + @Override + @Nullable + public TEALGitxnOperation getGitxnOperation() { + return findChildByClass(TEALGitxnOperation.class); + } + + @Override + @Nullable + public TEALGitxnaOperation getGitxnaOperation() { + return findChildByClass(TEALGitxnaOperation.class); + } + + @Override + @Nullable + public TEALGitxnasOperation getGitxnasOperation() { + return findChildByClass(TEALGitxnasOperation.class); + } + @Override @Nullable public TEALItxnFieldOperation getItxnFieldOperation() { @@ -57,4 +81,10 @@ public TEALItxnaOperation getItxnaOperation() { return findChildByClass(TEALItxnaOperation.class); } + @Override + @Nullable + public TEALItxnasOperation getItxnasOperation() { + return findChildByClass(TEALItxnasOperation.class); + } + } diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALItxnNextOpcodeImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALItxnNextOpcodeImpl.java new file mode 100644 index 0000000..012397a --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALItxnNextOpcodeImpl.java @@ -0,0 +1,30 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALItxnNextOpcodeImpl extends ASTWrapperPsiElement implements TEALItxnNextOpcode { + + public TEALItxnNextOpcodeImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitItxnNextOpcode(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALItxnasOpcodeImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALItxnasOpcodeImpl.java new file mode 100644 index 0000000..5280808 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALItxnasOpcodeImpl.java @@ -0,0 +1,30 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALItxnasOpcodeImpl extends ASTWrapperPsiElement implements TEALItxnasOpcode { + + public TEALItxnasOpcodeImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitItxnasOpcode(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALItxnasOperationImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALItxnasOperationImpl.java new file mode 100644 index 0000000..d22849d --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALItxnasOperationImpl.java @@ -0,0 +1,54 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALItxnasOperationImpl extends ASTWrapperPsiElement implements TEALItxnasOperation { + + public TEALItxnasOperationImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitItxnasOperation(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + + @Override + @NotNull + public TEALItxnasOpcode getItxnasOpcode() { + return findNotNullChildByClass(TEALItxnasOpcode.class); + } + + @Override + @Nullable + public TEALTxnFieldArg getTxnFieldArg() { + return findChildByClass(TEALTxnFieldArg.class); + } + + @Override + @Nullable + public TEALUnsignedInteger getUnsignedInteger() { + return findChildByClass(TEALUnsignedInteger.class); + } + + @Override + @Nullable + public PsiElement getVarTmpl() { + return findChildByType(VAR_TMPL); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALLoadingOperationImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALLoadingOperationImpl.java index a34315e..785a0a6 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALLoadingOperationImpl.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALLoadingOperationImpl.java @@ -39,6 +39,12 @@ public TEALBZeroOpcode getBZeroOpcode() { return findChildByClass(TEALBZeroOpcode.class); } + @Override + @Nullable + public TEALGloadssOpcode getGloadssOpcode() { + return findChildByClass(TEALGloadssOpcode.class); + } + @Override @Nullable public TEALArgOperation getArgOperation() { diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALMethodStatementImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALMethodStatementImpl.java new file mode 100644 index 0000000..1892fb5 --- /dev/null +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALMethodStatementImpl.java @@ -0,0 +1,48 @@ +// This is a generated file. Not intended for manual editing. +package com.bloxbean.algodea.idea.language.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.bloxbean.algodea.idea.language.psi.*; + +public class TEALMethodStatementImpl extends ASTWrapperPsiElement implements TEALMethodStatement { + + public TEALMethodStatementImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull TEALVisitor visitor) { + visitor.visitMethodStatement(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof TEALVisitor) accept((TEALVisitor)visitor); + else super.accept(visitor); + } + + @Override + @Nullable + public PsiElement getId() { + return findChildByType(ID); + } + + @Override + @Nullable + public PsiElement getVarTmpl() { + return findChildByType(VAR_TMPL); + } + + @Override + @Nullable + public PsiElement getLString() { + return findChildByType(L_STRING); + } + +} diff --git a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALPseudoOpImpl.java b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALPseudoOpImpl.java index d68266b..24a06b6 100644 --- a/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALPseudoOpImpl.java +++ b/src/main/gen/com/bloxbean/algodea/idea/language/psi/impl/TEALPseudoOpImpl.java @@ -45,4 +45,10 @@ public TEALIntStatement getIntStatement() { return findChildByClass(TEALIntStatement.class); } + @Override + @Nullable + public TEALMethodStatement getMethodStatement() { + return findChildByClass(TEALMethodStatement.class); + } + } diff --git a/src/main/java/com/bloxbean/algodea/idea/language/TEAL.bnf b/src/main/java/com/bloxbean/algodea/idea/language/TEAL.bnf index cb8b69a..5532978 100644 --- a/src/main/java/com/bloxbean/algodea/idea/language/TEAL.bnf +++ b/src/main/java/com/bloxbean/algodea/idea/language/TEAL.bnf @@ -34,12 +34,12 @@ l_integer="regexp:0|[1-9][0-9]*" l_string="regexp:('([^'\\]|\\.)*'|\"([^\"\\]|\\.)*\")" - LOADING_OP = "regexp:(intcblock|intc|intc_0|intc_1|intc_2|intc_3|bytecblock|bytec|bytec_0|bytec_1|bytec_2|bytec_3|arg|arg_0|arg_1|arg_2|arg_3|global|load|store|pushint|pushbytes|gload|gloads|gaid|gaids|loads|stores|bzero|args)" + LOADING_OP = "regexp:(intcblock|intc|intc_0|intc_1|intc_2|intc_3|bytecblock|bytec|bytec_0|bytec_1|bytec_2|bytec_3|arg|arg_0|arg_1|arg_2|arg_3|global|load|store|pushint|pushbytes|gload|gloads|gaid|gaids|loads|stores|bzero|args|gloadss)" FLOWCONTROL_OP = "regexp:(err|return|pop|dup|dup2|bnz|bz|b|dig|swap|select|cover|uncover|assert)" STATEACCESS_OP = "regexp:(balance|app_opted_in|app_local_get|app_local_get_ex|app_global_get|app_global_get_ex|app_local_put|app_global_put|app_local_del|app_global_del|asset_holding_get|asset_params_get|app_params_get|min_balance|log)" TXN_LOADING_OP = 'regexp:(txn|gtxn|txna|gtxna|gtxns|gtxnsa|txnas|gtxnas|gtxnsas)' - INNER_TRANSACTION_OP = 'regexp:(itxn_begin|itxn_field|itxn_submit|itxn|itxna)' + INNER_TRANSACTION_OP = 'regexp:(itxn_begin|itxn_field|itxn_submit|itxn|itxna|itxn_next|gitxn|gitxna|gitxnas|itxnas)' //Operations SHA256 = 'sha256' @@ -73,6 +73,7 @@ MULW = 'mulw' ADDW = 'addw' + DIVW = 'divw' //v6 DIVMODW = 'divmodw' GETBIT = 'getbit' SETBIT = 'setbit' @@ -104,6 +105,7 @@ INT = "int" BYTE = "byte" ADDR = "addr" + METHOD = "method" //v6 PRAGMA_KEYWORD = "#pragma" @@ -125,7 +127,7 @@ //top level tealFile ::= program -program ::= [pragma NL*] statement* +program ::= COMMENT* [pragma NL*] statement* //since v3 opcodes GTXNS_OPCODE ::= 'gtxns'; @@ -211,6 +213,13 @@ ARGS_OPCODE ::= 'args' //v6 opcodes start B_SQRT_OPCODE ::= 'bsqrt' +DIVW_OPCODE ::= 'divw' +GLOADSS_OPCODE ::= 'gloadss' +ITXN_NEXT_OPCODE ::= 'itxn_next' +GITXN_OPCODE ::= 'gitxn' +GITXNA_OPCODE ::= 'gitxna' +GITXNAS_OPCODE ::= 'gitxnas' +ITXNAS_OPCODE ::= 'itxnas' //v6 opcodes pragma ::= PRAGMA_KEYWORD VERSION pragma_version {pin=1 recoverWhile=statement_recover} @@ -245,7 +254,7 @@ private statement_recover ::= !( branch ::= ID COLON -pseudo_op ::= int_statement | byte_statement | addr_statement +pseudo_op ::= int_statement | byte_statement | addr_statement | method_statement int_statement ::= INT (HEX | OCTAL | unsignedInteger | NAMED_INTEGER_CONSTANT | TYPENUM_CONSTANT | VAR_TMPL) {pin=1} //TODO No strict check for byte pseudo opcode for now @@ -262,6 +271,8 @@ byte_statement ::= BYTE (l_string | HEX | byte_base64_encoding_type_values | byt addr_param ::= (ID | VAR_TMPL) {name= "Algo address"} addr_statement ::= ADDR addr_param {pin=1} +method_statement ::= METHOD (l_string | ID | VAR_TMPL) {pin=1} //v6 + LoadingOperation ::= intcblockOperation | intcOperation | 'intc_0' @@ -295,6 +306,7 @@ LoadingOperation ::= intcblockOperation | gtxnsaLoadingOperation | gloadOperation | gloadsOperation + | GLOADSS_OPCODE //v6 | gaidOperation | gaidsOperation | loadsOperation @@ -387,6 +399,7 @@ GeneralOperation ::= SHA256 | BITWISE_INVERT | MULW | ADDW + | DIVW_OPCODE //v6 | DIVMODW_OPCODE | EXPW_OPCODE | GETBIT_OPCODE @@ -456,9 +469,14 @@ uncoverOperation ::= UNCOVER_OPCODE (unsignedInteger | VAR_TMPL) {pin=1} extractOperation ::= EXTRACT_OPCODE (unsignedInteger | VAR_TMPL) (unsignedInteger | VAR_TMPL) {pin=1} innerTransactionOperation ::= ITXN_BEGIN_OPCODE | ITXN_SUBMIT_OPCODE + | ITXN_NEXT_OPCODE //v6 | itxnFieldOperation | itxnOperation - | itxnaOperation {pin=1} + | itxnaOperation + | itxnasOperation + | gitxnOperation + | gitxnaOperation + | gitxnasOperation {pin=1} itxnFieldOperation ::= ITXN_FIELD_OPCODE (unsignedInteger | TxnFieldArg | VAR_TMPL) {pin=1} itxnOperation ::= ITXN_OPCODE (unsignedInteger | TxnFieldArg | VAR_TMPL) {pin=1} itxnaOperation ::= ITXNA_OPCODE (unsignedInteger | TxnFieldArg | VAR_TMPL) (unsignedInteger | VAR_TMPL) {pin=1} @@ -470,3 +488,9 @@ gtxnsasOperation ::= GTXNSAS_OPCODE (unsignedInteger | TxnFieldArg | VAR_TMPL) { //In v6 acctParamsGetOp ::= 'acct_params_get' acctParamsGetOperation ::= acctParamsGetOp (unsignedInteger | ACCT_PARAMS_GET_FIELD | VAR_TMPL) {pin=1} + +gitxnOperation ::= GITXN_OPCODE (unsignedInteger | VAR_TMPL) (unsignedInteger | TxnFieldArg | VAR_TMPL) {pin=1} +gitxnaOperation ::= GITXNA_OPCODE (unsignedInteger | VAR_TMPL) (unsignedInteger | TxnFieldArg | VAR_TMPL) (unsignedInteger | VAR_TMPL) {pin=1} +gitxnasOperation ::= GITXNAS_OPCODE (unsignedInteger | VAR_TMPL) (unsignedInteger | TxnFieldArg | VAR_TMPL) {pin=1} +itxnasOperation ::= ITXNAS_OPCODE (unsignedInteger | TxnFieldArg | VAR_TMPL) {pin=1} + diff --git a/src/main/java/com/bloxbean/algodea/idea/language/_TEALLexer.flex b/src/main/java/com/bloxbean/algodea/idea/language/_TEALLexer.flex index 9cc3cdd..0ae0244 100644 --- a/src/main/java/com/bloxbean/algodea/idea/language/_TEALLexer.flex +++ b/src/main/java/com/bloxbean/algodea/idea/language/_TEALLexer.flex @@ -31,7 +31,7 @@ SPACE=[ \t\n\x0B\f\r]+ COMMENT="//".* L_INTEGER=0|[1-9][0-9]* L_STRING=('([^'\\]|\\.)*'|\"([^\"\\]|\\.)*\") -LOADING_OP=(intcblock|intc|intc_0|intc_1|intc_2|intc_3|bytecblock|bytec|bytec_0|bytec_1|bytec_2|bytec_3|arg|arg_0|arg_1|arg_2|arg_3|global|load|store|pushint|pushbytes|gload|gloads|gaid|gaids|loads|stores|bzero|args) +LOADING_OP=(intcblock|intc|intc_0|intc_1|intc_2|intc_3|bytecblock|bytec|bytec_0|bytec_1|bytec_2|bytec_3|arg|arg_0|arg_1|arg_2|arg_3|global|load|store|pushint|pushbytes|gload|gloads|gaid|gaids|loads|stores|bzero|args|gloadss) FLOWCONTROL_OP=(err|return|pop|dup|dup2|bnz|bz|b|dig|swap|select|cover|uncover|assert|callsub|retsub) STATEACCESS_OP=(balance|app_opted_in|app_local_get|app_local_get_ex|app_global_get|app_global_get_ex|app_local_put|app_global_put|app_local_del|app_global_del|asset_holding_get|asset_params_get|app_params_get|acct_params_get|min_balance|log) TXN_LOADING_OP=(txn|gtxn|txna|gtxna|gtxns|gtxnsa|txnas|gtxnas|gtxnsas) @@ -43,7 +43,7 @@ ASSET_PARAMS_GET_FIELD=(AssetTotal|AssetDecimals|AssetDefaultFrozen|AssetUnitNam ECDSA_OP=(ecdsa_verify|ecdsa_pk_decompress|ecdsa_pk_recover) APP_PARAMS_GET_FIELD=(AppApprovalProgram|AppClearStateProgram|AppGlobalNumUint|AppGlobalNumByteSlice|AppLocalNumUint|AppLocalNumByteSlice|AppExtraProgramPages|AppCreator|AppAddress) ACCT_PARAMS_GET_FIELD=(AcctBalance|AcctMinBalance|AcctAuthAddr) -INNER_TRANSACTION_OP=(itxn_begin|itxn_field|itxn_submit|itxn|itxna) +INNER_TRANSACTION_OP=(itxn_begin|itxn_field|itxn_submit|itxn|itxna|itxn_next|gitxn|gitxna|gitxnas|itxnas) OCTAL=(0)[0-9]+ HEX=(0x|0X)[a-fA-F0-9]* VAR_TMPL=(VAR_TMPL_)([a-zA-Z0-9_$.#@~?]+) @@ -91,6 +91,7 @@ ID=([a-zA-Z0-9_$.#@~?=+-]+[a-zA-Z0-9_$.#@~?=+-]*) "~" { return BITWISE_INVERT; } "mulw" { return MULW; } "addw" { return ADDW; } + "divw" { return DIVW; } //v6 "divmodw" { return DIVMODW;} //v4 "expw" { return EXPW_OPCODE; } //v4 "getbit" { return GETBIT; } @@ -109,6 +110,7 @@ ID=([a-zA-Z0-9_$.#@~?=+-]+[a-zA-Z0-9_$.#@~?=+-]*) "int" { return INT; } "byte" { return BYTE; } "addr" { return ADDR; } + "method" { return METHOD; } "#pragma" { return PRAGMA_KEYWORD; } ":" { return COLON; } diff --git a/src/main/java/com/bloxbean/algodea/idea/language/annotator/TEALV6OpCodeAnnotator.java b/src/main/java/com/bloxbean/algodea/idea/language/annotator/TEALV6OpCodeAnnotator.java index 92ccb7c..34799a1 100644 --- a/src/main/java/com/bloxbean/algodea/idea/language/annotator/TEALV6OpCodeAnnotator.java +++ b/src/main/java/com/bloxbean/algodea/idea/language/annotator/TEALV6OpCodeAnnotator.java @@ -22,6 +22,13 @@ public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder hold if(versionInt < 6) { if(element instanceof TEALAcctParamsGetOp || element instanceof TEALBSqrtOpcode + || element instanceof TEALDivwOpcode + || element instanceof TEALGloadssOpcode + || element instanceof TEALItxnNextOpcode + || element instanceof TEALGitxnOpcode + || element instanceof TEALGitxnaOpcode + || element instanceof TEALGitxnasOpcode + || element instanceof TEALItxnasOpcode ) { holder.newAnnotation(HighlightSeverity.ERROR, V6_SUPPORT_MSG).create(); diff --git a/src/main/java/com/bloxbean/algodea/idea/language/completion/TEALCompletionContributor.java b/src/main/java/com/bloxbean/algodea/idea/language/completion/TEALCompletionContributor.java index 395bff4..fdfc2cf 100644 --- a/src/main/java/com/bloxbean/algodea/idea/language/completion/TEALCompletionContributor.java +++ b/src/main/java/com/bloxbean/algodea/idea/language/completion/TEALCompletionContributor.java @@ -92,6 +92,14 @@ public TEALCompletionContributor() { ItxnTxnArgsCompletionProvider.PATTERN, new ItxnTxnArgsCompletionProvider()); + //Gitxn, Gitxna + extend(CompletionType.BASIC, + GITxnArgCompletionProvider.FIRSTARG_PATTERN, + new GITxnArgCompletionProvider()); + extend(CompletionType.BASIC, + GITxnArgCompletionProvider.SECONDARG_PATTERN, + new GITxnArgCompletionProvider()); + } } diff --git a/src/main/java/com/bloxbean/algodea/idea/language/completion/metadata/atoms/TEALKeywords.java b/src/main/java/com/bloxbean/algodea/idea/language/completion/metadata/atoms/TEALKeywords.java index c7186bb..e6b5ab8 100644 --- a/src/main/java/com/bloxbean/algodea/idea/language/completion/metadata/atoms/TEALKeywords.java +++ b/src/main/java/com/bloxbean/algodea/idea/language/completion/metadata/atoms/TEALKeywords.java @@ -37,7 +37,7 @@ import static com.bloxbean.algodea.idea.language.psi.TEALTypes.*; public final class TEALKeywords { - public final static LookupElement PRAGMA_LINE = new TEALKeywordElement("#pragma version 5").getLookupElement(); + public final static LookupElement PRAGMA_LINE = new TEALKeywordElement("#pragma version 6").getLookupElement(); public final static String TXN_FIELDS = "txn_fields"; public final static String TYPE_ENUM_MAPPING = "typeenum_constants"; @@ -90,6 +90,7 @@ public final class TEALKeywords { BITWISE_INVERT, MULW, ADDW, + DIVW, //v6 DIVMODW, //v4 EXPW_OPCODE, //v4 diff --git a/src/main/java/com/bloxbean/algodea/idea/language/completion/providers/GITxnArgCompletionProvider.java b/src/main/java/com/bloxbean/algodea/idea/language/completion/providers/GITxnArgCompletionProvider.java new file mode 100644 index 0000000..ab97a4b --- /dev/null +++ b/src/main/java/com/bloxbean/algodea/idea/language/completion/providers/GITxnArgCompletionProvider.java @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2020 BloxBean Project + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package com.bloxbean.algodea.idea.language.completion.providers; + +import com.bloxbean.algodea.idea.language.TEALLanguage; +import com.bloxbean.algodea.idea.language.TEALParserDefinition; +import com.bloxbean.algodea.idea.language.completion.metadata.TEALKeywordConstant; +import com.bloxbean.algodea.idea.language.psi.TEALTypes; +import com.intellij.codeInsight.completion.CompletionParameters; +import com.intellij.codeInsight.completion.CompletionResultSet; +import com.intellij.patterns.ElementPattern; +import com.intellij.patterns.PatternCondition; +import com.intellij.patterns.PlatformPatterns; +import com.intellij.patterns.StandardPatterns; +import com.intellij.psi.PsiElement; +import com.intellij.util.ProcessingContext; +import org.jetbrains.annotations.NotNull; + +import java.util.stream.Collectors; + +import static com.intellij.patterns.PlatformPatterns.psiElement; + +public final class GITxnArgCompletionProvider extends BaseTxnArgCompletionProvider { + private final static String GITXNA = "gitxna"; + private final static String FIRST_ARG = "FIRST_ARG"; + + public static final ElementPattern FIRSTARG_PATTERN = PlatformPatterns + .psiElement() + .andOr( + StandardPatterns.or( + psiElement().afterLeaf( + psiElement(TEALTypes.INNER_TRANSACTION_OP) + .withParent(psiElement(TEALTypes.GITXN_OPCODE)) + ), + psiElement().afterLeaf( + psiElement(TEALTypes.INNER_TRANSACTION_OP) + .withParent(psiElement(TEALTypes.GITXNA_OPCODE)) + ).with(new PatternCondition("nfa_gitxna") { + @Override + public boolean accepts(@NotNull PsiElement psiElement, ProcessingContext context) { + context.put(GITXNA, GITXNA); + return true; + } + }) + , + psiElement().afterLeaf( + psiElement(TEALTypes.INNER_TRANSACTION_OP) + .withParent(psiElement(TEALTypes.GITXNAS_OPCODE)) + ) + ) + ) + .withLanguage(TEALLanguage.INSTANCE) + .andNot(PlatformPatterns.psiElement(TEALParserDefinition.LINE_COMMENT)) + .andNot(PlatformPatterns.psiElement(TEALParserDefinition.BLOCK_COMMENT)) + .with(new PatternCondition("nfa_gitxn_first_arg") { + + @Override + public boolean accepts(@NotNull PsiElement psiElement, ProcessingContext context) { + context.put(FIRST_ARG, FIRST_ARG); + return true; + } + }); + + + public static final ElementPattern SECONDARG_PATTERN = PlatformPatterns + .psiElement() + .afterLeaf( + psiElement(TEALTypes.L_INTEGER) + .withParent( + psiElement(TEALTypes.UNSIGNED_INTEGER) + .afterSibling( + psiElement().andOr( + StandardPatterns.or( + psiElement(TEALTypes.GITXN_OPCODE), + psiElement(TEALTypes.GITXNA_OPCODE) + .with(new PatternCondition("nfa_gitxn_first_arg") { + + @Override + public boolean accepts(@NotNull PsiElement psiElement, ProcessingContext context) { + context.put(GITXNA, GITXNA); + return true; + } + }) + , psiElement(TEALTypes.GITXNAS_OPCODE) + ) + ) + ) + ) + ) + .withLanguage(TEALLanguage.INSTANCE) + .andNot(PlatformPatterns.psiElement(TEALParserDefinition.LINE_COMMENT)) + .andNot(PlatformPatterns.psiElement(TEALParserDefinition.BLOCK_COMMENT)); + + @Override + protected void addCompletions(@NotNull CompletionParameters parameters, + ProcessingContext context, + @NotNull CompletionResultSet result) { + + if (context.get(FIRST_ARG) != null) { + + if (context.get(GITXNA) != null) { + result.addAllElements(getTxnArgsLookupElementsStream(parameters) + .stream() + .map(e -> + e.getCompositeLookupElement(TEALKeywordConstant.UINT8_PLACEHOLDER, + TEALKeywordConstant.UINT8_PLACEHOLDER)) + .collect(Collectors.toList())); + } else { + result.addAllElements(getTxnArgsLookupElementsStream(parameters) + .stream() + .map(e -> + e.getCompositeLookupElement(TEALKeywordConstant.UINT8_PLACEHOLDER, + null)) + .collect(Collectors.toList())); + } + } else { //second arg position + if (context.get(GITXNA) != null) { + result.addAllElements(getTxnArgsLookupElementsStream(parameters) + .stream() + .map(e -> + e.getCompositeLookupElement(null, + TEALKeywordConstant.UINT8_PLACEHOLDER)) + .collect(Collectors.toList())); + } else { + result.addAllElements(getTxnArgsLookupElements(parameters)); + } + } + + result.stopHere(); + } +} diff --git a/src/main/java/com/bloxbean/algodea/idea/language/completion/providers/ItxnTxnArgsCompletionProvider.java b/src/main/java/com/bloxbean/algodea/idea/language/completion/providers/ItxnTxnArgsCompletionProvider.java index d777dcb..88c3c01 100644 --- a/src/main/java/com/bloxbean/algodea/idea/language/completion/providers/ItxnTxnArgsCompletionProvider.java +++ b/src/main/java/com/bloxbean/algodea/idea/language/completion/providers/ItxnTxnArgsCompletionProvider.java @@ -52,7 +52,12 @@ public final class ItxnTxnArgsCompletionProvider extends BaseTxnArgCompletionPro ), psiElement().afterLeaf( psiElement(TEALTypes.INNER_TRANSACTION_OP) - .withParent(psiElement(TEALTypes.ITXN_OPCODE)) + .withParent( + StandardPatterns.or( + psiElement(TEALTypes.ITXN_OPCODE), + psiElement(TEALTypes.ITXNAS_OPCODE) + ) + ) ), psiElement().afterLeaf( psiElement(TEALTypes.INNER_TRANSACTION_OP) diff --git a/src/main/java/com/bloxbean/algodea/idea/language/highlights/TEALSyntaxHighlighter.java b/src/main/java/com/bloxbean/algodea/idea/language/highlights/TEALSyntaxHighlighter.java index 1fab91e..af11744 100644 --- a/src/main/java/com/bloxbean/algodea/idea/language/highlights/TEALSyntaxHighlighter.java +++ b/src/main/java/com/bloxbean/algodea/idea/language/highlights/TEALSyntaxHighlighter.java @@ -46,7 +46,7 @@ public class TEALSyntaxHighlighter extends SyntaxHighlighterBase { private static final TokenSet OPERATIONS = TokenSet.create(TEALKeywords.GENERAL_OPERATIONS_ELEMENTS.toArray(new IElementType[0])); private static final TokenSet PSEUDO_OP_CODES = TokenSet.create( - INT, BYTE, ADDR + INT, BYTE, ADDR, METHOD ); // private static final Map keys = new HashMap<>(); diff --git a/src/main/resources/opcodes/opcodes.json b/src/main/resources/opcodes/opcodes.json index 68674ed..9fb857d 100644 --- a/src/main/resources/opcodes/opcodes.json +++ b/src/main/resources/opcodes/opcodes.json @@ -2810,5 +2810,13 @@ "pushes": [], "desc":"addr pseudo opcode", "additionalDesc" : "addr {address}" + }, + { + "op": "method", + "opcode": "Pseudo opcode", + "pops": [], + "pushes": [], + "desc":"method pseudo opcode", + "additionalDesc" : "method \"{method signature}\"" } ]