From 7ec7b199a10ed7e97e739d1edd0acbb991bd2313 Mon Sep 17 00:00:00 2001 From: Olga Bachishe Date: Mon, 6 May 2024 23:31:47 +0300 Subject: [PATCH] fix bench --- benchmarks/src/main/java/org/ucfs/Java.x | 2 +- .../src/main/java/org/ucfs/JavaLexer.java | 1578 ++++++++--------- benchmarks/src/main/kotlin/org/Benchmarks.kt | 2 +- benchmarks/src/main/kotlin/org/Jmh.kt | 74 - benchmarks/src/main/kotlin/org/Main.kt | 21 +- .../src/main/kotlin/org/OnlineGllBench.kt | 14 +- .../main/{java => kotlin}/org/ucfs/Java8.kt | 0 .../kotlin/org/ucfs/descriptors/Descriptor.kt | 4 + .../main/kotlin/org/ucfs/input/IInputGraph.kt | 10 +- .../src/main/kotlin/org/ucfs/parser/IGll.kt | 6 +- 10 files changed, 819 insertions(+), 892 deletions(-) delete mode 100644 benchmarks/src/main/kotlin/org/Jmh.kt rename benchmarks/src/main/{java => kotlin}/org/ucfs/Java8.kt (100%) diff --git a/benchmarks/src/main/java/org/ucfs/Java.x b/benchmarks/src/main/java/org/ucfs/Java.x index 071bd086f..ae543b7e3 100644 --- a/benchmarks/src/main/java/org/ucfs/Java.x +++ b/benchmarks/src/main/java/org/ucfs/Java.x @@ -54,9 +54,9 @@ Comment = {TraditionalComment} | {DocumentationComment} TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" DocumentationComment = "/**" {CommentContent} "*"+ "/" CommentContent = ( [^*] | \*+ [^/*] )* - %% +"//".* { /* DO NOTHING */ } "boolean" { return JavaToken.BOOLEAN; } "byte" { return JavaToken.BYTE; } "short" { return JavaToken.SHORT; } diff --git a/benchmarks/src/main/java/org/ucfs/JavaLexer.java b/benchmarks/src/main/java/org/ucfs/JavaLexer.java index de1705df5..281066324 100644 --- a/benchmarks/src/main/java/org/ucfs/JavaLexer.java +++ b/benchmarks/src/main/java/org/ucfs/JavaLexer.java @@ -43,19 +43,14 @@ public class JavaLexer { "\1\u1d00\1\u1e00\12\u1f00\1\u2000\1\u2100\1\u2200\1\u1f00\1\u2300"+ "\1\u2400\2\u1f00\31\u0100\1\u2500\121\u0100\1\u2600\4\u0100\1\u2700"+ "\1\u0100\1\u2800\1\u2900\1\u2a00\1\u2b00\1\u2c00\1\u2d00\53\u0100"+ - "\1\u2e00\41\u1f00\1\u0100\1\u2f00\1\u3000\1\u0100\1\u3100\1\u3200"+ - "\1\u3300\1\u3400\1\u3500\1\u3600\1\u3700\1\u3800\1\u3900\1\u0100"+ - "\1\u3a00\1\u3b00\1\u3c00\1\u3d00\1\u3e00\1\u3f00\3\u1f00\1\u4000"+ - "\1\u4100\1\u4200\1\u4300\1\u4400\1\u4500\1\u4600\1\u4700\1\u4800"+ - "\1\u1f00\1\u4900\1\u1f00\1\u4a00\1\u4b00\2\u1f00\3\u0100\1\u4c00"+ - "\1\u4d00\1\u4e00\12\u1f00\4\u0100\1\u4f00\17\u1f00\2\u0100\1\u5000"+ - "\41\u1f00\2\u0100\1\u5100\1\u5200\3\u1f00\1\u5300\27\u0100\1\u5400"+ - "\2\u0100\1\u5500\45\u1f00\1\u0100\1\u5600\1\u5700\11\u1f00\1\u5800"+ - "\24\u1f00\1\u5900\1\u5a00\1\u1f00\1\u5b00\1\u5c00\1\u5d00\1\u5e00"+ - "\2\u1f00\1\u5f00\5\u1f00\1\u6000\7\u1f00\1\u6100\1\u6200\4\u1f00"+ - "\1\u6300\21\u1f00\246\u0100\1\u6400\20\u0100\1\u6500\1\u6600\25\u0100"+ - "\1\u6700\34\u0100\1\u6800\14\u1f00\2\u0100\1\u6900\u0b05\u1f00\1\u6a00"+ - "\1\u6b00\u02fe\u1f00"; + "\1\u2e00\10\u2f00\31\u1f00\1\u0100\1\u3000\1\u3100\1\u0100\1\u3200"+ + "\1\u3300\1\u3400\1\u3500\1\u3600\1\u3700\1\u3800\1\u3900\3\u1f00"+ + "\1\u3a00\1\u3b00\1\u3c00\1\u3d00\1\u3e00\3\u1f00\1\u3f00\1\u4000"+ + "\4\u1f00\1\u4100\11\u1f00\3\u0100\1\u4200\1\u4300\13\u1f00\4\u0100"+ + "\1\u4400\63\u1f00\2\u0100\1\u4500\4\u1f00\1\u4600\100\u1f00\1\u4700"+ + "\40\u1f00\1\u4800\1\u4900\1\u1f00\1\u4a00\1\u4b00\1\u4c00\1\u4d00"+ + "\26\u1f00\1\u4e00\21\u1f00\246\u0100\1\u4f00\20\u0100\1\u5000\1\u5100"+ + "\77\u1f00\2\u0100\1\u5100\u0b05\u1f00\1\u5200\1\u5300\u02fe\u1f00"; private static int [] zzUnpackcmap_top() { int [] result = new int[4352]; @@ -83,224 +78,188 @@ private static int zzUnpackcmap_top(String packed, int offset, int [] result) { private static final int [] ZZ_CMAP_BLOCKS = zzUnpackcmap_blocks(); private static final String ZZ_CMAP_BLOCKS_PACKED_0 = - "\11\0\1\1\1\2\1\3\1\1\1\4\16\0\4\3"+ - "\1\1\1\5\1\6\1\3\1\7\1\10\1\11\1\12"+ - "\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22"+ - "\1\23\1\24\2\25\4\26\2\27\1\30\1\31\1\32"+ - "\1\33\1\34\1\35\1\36\1\37\1\40\1\37\1\41"+ - "\1\42\1\41\5\7\1\43\3\7\1\44\7\7\1\45"+ - "\2\7\1\46\1\47\1\50\1\51\1\52\1\3\1\53"+ - "\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\63"+ - "\1\7\1\64\1\65\1\66\1\67\1\70\1\71\1\7"+ - "\1\72\1\73\1\74\1\75\1\76\1\77\1\100\1\101"+ - "\1\102\1\103\1\104\1\105\1\106\41\0\2\3\4\7"+ - "\4\3\1\7\2\3\1\0\7\3\1\7\4\3\1\7"+ - "\5\3\27\7\1\3\37\7\1\3\u01ca\7\4\3\14\7"+ - "\16\3\5\7\7\3\1\7\1\3\1\7\21\3\160\0"+ - "\5\7\1\3\2\7\2\3\4\7\1\3\1\7\6\3"+ - "\1\7\1\3\3\7\1\3\1\7\1\3\24\7\1\3"+ - "\123\7\1\3\213\7\1\3\5\0\2\3\246\7\1\3"+ - "\46\7\2\3\1\7\7\3\47\7\7\3\1\7\1\3"+ - "\55\0\1\3\1\0\1\3\2\0\1\3\2\0\1\3"+ - "\1\0\10\3\33\7\5\3\3\7\15\3\6\0\5\3"+ - "\1\7\4\3\13\0\1\3\1\0\3\3\53\7\37\0"+ - "\4\3\2\7\1\0\143\7\1\3\1\7\10\0\1\3"+ - "\6\0\2\7\2\0\1\3\4\0\2\7\12\0\3\7"+ - "\2\3\1\7\17\3\1\0\1\7\1\0\36\7\33\0"+ - "\2\3\131\7\13\0\1\7\16\3\12\0\41\7\11\0"+ - "\2\7\4\3\1\7\5\3\26\7\4\0\1\7\11\0"+ - "\1\7\3\0\1\7\5\0\22\3\31\7\3\0\4\3"+ - "\13\7\65\3\25\7\1\3\10\7\26\3\60\0\66\7"+ - "\3\0\1\7\22\0\1\7\7\0\12\7\2\0\2\3"+ - "\12\0\1\3\20\7\3\0\1\3\10\7\2\3\2\7"+ - "\2\3\26\7\1\3\7\7\1\3\1\7\3\3\4\7"+ - "\2\3\1\0\1\7\7\0\2\3\2\0\2\3\3\0"+ - "\1\7\10\3\1\0\4\3\2\7\1\3\3\7\2\0"+ - "\2\3\12\0\4\7\7\3\2\7\4\3\3\0\1\3"+ - "\6\7\4\3\2\7\2\3\26\7\1\3\7\7\1\3"+ - "\2\7\1\3\2\7\1\3\2\7\2\3\1\0\1\3"+ - "\5\0\4\3\2\0\2\3\3\0\3\3\1\0\7\3"+ - "\4\7\1\3\1\7\7\3\14\0\3\7\1\0\13\3"+ - "\3\0\1\3\11\7\1\3\3\7\1\3\26\7\1\3"+ - "\7\7\1\3\2\7\1\3\5\7\2\3\1\0\1\7"+ - "\10\0\1\3\3\0\1\3\3\0\2\3\1\7\17\3"+ - "\2\7\2\0\2\3\12\0\1\3\1\7\7\3\1\7"+ - "\6\0\1\3\3\0\1\3\10\7\2\3\2\7\2\3"+ - "\26\7\1\3\7\7\1\3\2\7\1\3\5\7\2\3"+ - "\1\0\1\7\7\0\2\3\2\0\2\3\3\0\10\3"+ - "\2\0\4\3\2\7\1\3\3\7\2\0\2\3\12\0"+ - "\1\3\1\7\20\3\1\0\1\7\1\3\6\7\3\3"+ - "\3\7\1\3\4\7\3\3\2\7\1\3\1\7\1\3"+ - "\2\7\3\3\2\7\3\3\3\7\3\3\14\7\4\3"+ - "\5\0\3\3\3\0\1\3\4\0\2\3\1\7\6\3"+ - "\1\0\16\3\12\0\11\3\1\7\6\3\4\0\1\3"+ - "\10\7\1\3\3\7\1\3\27\7\1\3\20\7\3\3"+ - "\1\7\7\0\1\3\3\0\1\3\4\0\7\3\2\0"+ - "\1\3\3\7\5\3\2\7\2\0\2\3\12\0\20\3"+ - "\1\7\3\0\1\3\10\7\1\3\3\7\1\3\27\7"+ - "\1\3\12\7\1\3\5\7\2\3\1\0\1\7\7\0"+ - "\1\3\3\0\1\3\4\0\7\3\2\0\7\3\1\7"+ - "\1\3\2\7\2\0\2\3\12\0\1\3\2\7\15\3"+ - "\4\0\1\3\10\7\1\3\3\7\1\3\51\7\2\0"+ - "\1\7\7\0\1\3\3\0\1\3\4\0\1\7\5\3"+ - "\3\7\1\0\7\3\3\7\2\0\2\3\12\0\12\3"+ - "\6\7\2\3\2\0\1\3\22\7\3\3\30\7\1\3"+ - "\11\7\1\3\1\7\2\3\7\7\3\3\1\0\4\3"+ - "\6\0\1\3\1\0\1\3\10\0\6\3\12\0\2\3"+ - "\2\0\15\3\60\7\1\0\2\7\7\0\4\3\10\7"+ - "\10\0\1\3\12\0\47\3\2\7\1\3\1\7\2\3"+ - "\2\7\1\3\1\7\2\3\1\7\6\3\4\7\1\3"+ - "\7\7\1\3\3\7\1\3\1\7\1\3\1\7\2\3"+ - "\2\7\1\3\4\7\1\0\2\7\6\0\1\3\2\0"+ - "\1\7\2\3\5\7\1\3\1\7\1\3\6\0\2\3"+ - "\12\0\2\3\4\7\40\3\1\7\27\3\2\0\6\3"+ - "\12\0\13\3\1\0\1\3\1\0\1\3\1\0\4\3"+ - "\2\0\10\7\1\3\44\7\4\3\24\0\1\3\2\0"+ - "\5\7\13\0\1\3\44\0\11\3\1\0\71\3\53\7"+ - "\24\0\1\7\12\0\6\3\6\7\4\0\4\7\3\0"+ - "\1\7\3\0\2\7\7\0\3\7\4\0\15\7\14\0"+ - "\1\7\17\0\2\3\46\7\1\3\1\7\5\3\1\7"+ - "\2\3\53\7\1\3\115\7\1\3\4\7\2\3\7\7"+ - "\1\3\1\7\1\3\4\7\2\3\51\7\1\3\4\7"+ - "\2\3\41\7\1\3\4\7\2\3\7\7\1\3\1\7"+ - "\1\3\4\7\2\3\17\7\1\3\71\7\1\3\4\7"+ - "\2\3\103\7\2\3\3\0\40\3\20\7\20\3\126\7"+ - "\2\3\6\7\3\3\u016c\7\2\3\21\7\1\3\32\7"+ - "\5\3\113\7\3\3\13\7\7\3\15\7\1\3\4\7"+ - "\3\0\13\3\22\7\3\0\13\3\22\7\2\0\14\3"+ - "\15\7\1\3\3\7\1\3\2\0\14\3\64\7\40\0"+ - "\3\3\1\7\3\3\2\7\1\0\2\3\12\0\41\3"+ - "\4\0\1\3\12\0\6\3\130\7\10\3\5\7\2\0"+ - "\42\7\1\0\1\7\5\3\106\7\12\3\37\7\1\3"+ - "\14\0\4\3\14\0\12\3\12\0\36\7\2\3\5\7"+ - "\13\3\54\7\4\3\32\7\6\3\12\0\46\3\27\7"+ - "\5\0\4\3\65\7\12\0\1\3\35\0\2\3\13\0"+ - "\6\3\12\0\15\3\1\7\10\3\16\0\102\3\5\0"+ - "\57\7\21\0\7\7\4\3\12\0\21\3\11\0\14\3"+ - "\3\0\36\7\15\0\2\7\12\0\54\7\16\0\14\3"+ - "\44\7\24\0\10\3\12\0\3\3\3\7\12\0\44\7"+ - "\2\3\11\7\107\3\3\0\1\3\25\0\4\7\1\0"+ - "\4\7\3\0\2\7\3\0\6\3\300\7\72\0\1\3"+ - "\5\0\26\7\2\3\6\7\2\3\46\7\2\3\6\7"+ - "\2\3\10\7\1\3\1\7\1\3\1\7\1\3\1\7"+ - "\1\3\37\7\2\3\65\7\1\3\7\7\1\3\1\7"+ - "\3\3\3\7\1\3\7\7\3\3\4\7\2\3\6\7"+ - "\4\3\15\7\5\3\3\7\1\3\7\7\16\3\5\0"+ - "\32\3\5\0\20\3\2\7\23\3\1\7\13\3\5\0"+ - "\1\3\12\0\1\3\1\7\15\3\1\7\20\3\15\7"+ - "\3\3\40\7\20\3\15\0\4\3\1\0\3\3\14\0"+ - "\21\3\1\7\4\3\1\7\2\3\12\7\1\3\1\7"+ - "\3\3\5\7\6\3\1\7\1\3\1\7\1\3\1\7"+ - "\1\3\4\7\1\3\13\7\2\3\4\7\5\3\5\7"+ - "\4\3\1\7\21\3\51\7\u0177\3\57\7\1\3\57\7"+ - "\1\3\205\7\6\3\4\7\3\0\2\7\14\3\46\7"+ - "\1\3\1\7\5\3\1\7\2\3\70\7\7\3\1\7"+ - "\17\3\1\0\27\7\11\3\7\7\1\3\7\7\1\3"+ - "\7\7\1\3\7\7\1\3\7\7\1\3\7\7\1\3"+ - "\7\7\1\3\7\7\1\3\40\0\57\3\1\7\325\3"+ - "\3\7\31\3\11\7\6\0\1\3\5\7\2\3\5\7"+ - "\4\3\126\7\2\3\2\0\2\3\3\7\1\3\132\7"+ - "\1\3\4\7\5\3\52\7\2\3\136\7\21\3\33\7"+ - "\65\3\306\7\112\3\353\7\25\3\215\7\103\3\56\7"+ - "\2\3\15\7\3\3\20\7\12\0\2\7\24\3\57\7"+ - "\1\0\4\3\12\0\1\3\37\7\2\0\120\7\2\0"+ - "\45\3\11\7\2\3\147\7\2\3\44\7\1\3\10\7"+ - "\77\3\13\7\1\0\3\7\1\0\4\7\1\0\27\7"+ - "\5\0\20\3\1\7\7\3\64\7\14\3\2\0\62\7"+ - "\22\0\12\3\12\0\6\3\22\0\6\7\3\3\1\7"+ - "\1\3\1\7\2\3\12\0\34\7\10\0\2\3\27\7"+ - "\15\0\14\3\35\7\3\3\4\0\57\7\16\0\16\3"+ - "\1\7\12\0\6\3\5\7\1\0\12\7\12\0\5\7"+ - "\1\3\51\7\16\0\11\3\3\7\1\0\10\7\2\0"+ - "\2\3\12\0\6\3\27\7\3\3\1\7\3\0\62\7"+ - "\1\0\1\7\3\0\2\7\2\0\5\7\2\0\1\7"+ - "\1\0\1\7\30\3\3\7\2\3\13\7\5\0\2\3"+ - "\3\7\2\0\12\3\6\7\2\3\6\7\2\3\6\7"+ - "\11\3\7\7\1\3\7\7\1\3\53\7\1\3\12\7"+ - "\12\3\163\7\10\0\1\3\2\0\2\3\12\0\6\3"+ - "\244\7\14\3\27\7\4\3\61\7\4\3\156\7\2\3"+ - "\152\7\46\3\7\7\14\3\5\7\5\3\1\7\1\0"+ - "\12\7\1\3\15\7\1\3\5\7\1\3\1\7\1\3"+ - "\2\7\1\3\2\7\1\3\154\7\41\3\153\7\22\3"+ - "\100\7\2\3\66\7\50\3\15\7\3\3\20\0\20\3"+ - "\20\0\3\3\2\7\30\3\3\7\31\3\1\7\6\3"+ - "\5\7\1\3\207\7\2\3\1\0\4\3\1\7\13\3"+ - "\12\0\7\3\32\7\4\3\1\7\1\3\32\7\13\3"+ - "\131\7\3\3\6\7\2\3\6\7\2\3\6\7\2\3"+ - "\3\7\3\3\2\7\3\3\2\7\22\3\3\0\4\3"+ - "\14\7\1\3\32\7\1\3\23\7\1\3\2\7\1\3"+ - "\17\7\2\3\16\7\42\3\173\7\105\3\65\7\210\3"+ - "\1\0\202\3\35\7\3\3\61\7\17\3\1\0\37\3"+ - "\40\7\15\3\36\7\5\3\46\7\5\0\5\3\36\7"+ - "\2\3\44\7\4\3\10\7\1\3\5\7\52\3\236\7"+ - "\2\3\12\0\6\3\44\7\4\3\44\7\4\3\50\7"+ - "\10\3\64\7\234\3\67\7\11\3\26\7\12\3\10\7"+ - "\230\3\6\7\2\3\1\7\1\3\54\7\1\3\2\7"+ - "\3\3\1\7\2\3\27\7\12\3\27\7\11\3\37\7"+ - "\101\3\23\7\1\3\2\7\12\3\26\7\12\3\32\7"+ - "\106\3\70\7\6\3\2\7\100\3\1\7\3\0\1\3"+ - "\2\0\5\3\4\0\4\7\1\3\3\7\1\3\33\7"+ - "\4\3\3\0\4\3\1\0\40\3\35\7\3\3\35\7"+ - "\43\3\10\7\1\3\34\7\2\0\31\3\66\7\12\3"+ - "\26\7\12\3\23\7\15\3\22\7\156\3\111\7\67\3"+ - "\63\7\15\3\63\7\15\3\3\0\65\7\17\0\37\3"+ - "\12\0\17\3\4\0\55\7\13\0\2\3\1\0\22\3"+ - "\31\7\7\3\12\0\6\3\3\0\44\7\16\0\1\3"+ - "\12\0\20\3\43\7\1\0\2\3\1\7\11\3\3\0"+ - "\60\7\16\0\4\7\5\3\3\0\3\3\12\0\1\7"+ - "\1\3\1\7\43\3\22\7\1\3\31\7\14\0\6\3"+ - "\1\0\101\3\7\7\1\3\1\7\1\3\4\7\1\3"+ - "\17\7\1\3\12\7\7\3\57\7\14\0\5\3\12\0"+ - "\6\3\4\0\1\3\10\7\2\3\2\7\2\3\26\7"+ - "\1\3\7\7\1\3\2\7\1\3\5\7\2\3\1\0"+ - "\1\7\7\0\2\3\2\0\2\3\3\0\2\3\1\7"+ - "\6\3\1\0\5\3\5\7\2\0\2\3\7\0\3\3"+ - "\5\0\213\3\65\7\22\0\4\7\5\3\12\0\46\3"+ - "\60\7\24\0\2\7\1\3\1\7\10\3\12\0\246\3"+ - "\57\7\7\0\2\3\11\0\27\3\4\7\2\0\42\3"+ - "\60\7\21\0\3\3\1\7\13\3\12\0\46\3\53\7"+ - "\15\0\10\3\12\0\66\3\32\7\3\3\17\0\4\3"+ - "\12\0\u0166\3\100\7\12\0\25\3\2\7\12\0\50\7"+ - "\7\0\1\7\4\0\10\3\1\0\10\3\1\7\13\0"+ - "\50\7\2\3\4\7\20\0\46\3\71\7\7\3\11\7"+ - "\1\3\45\7\10\0\1\3\10\0\1\7\17\3\12\0"+ - "\30\3\36\7\2\3\26\0\1\3\16\0\111\3\7\7"+ - "\1\3\2\7\1\3\46\7\6\0\3\3\1\0\1\3"+ - "\2\0\1\3\7\0\1\7\1\0\10\3\12\0\246\3"+ - "\232\7\146\3\157\7\21\3\304\7\274\3\57\7\321\3"+ - "\107\7\271\3\71\7\7\3\37\7\1\3\12\0\146\3"+ - "\36\7\2\3\5\0\13\3\60\7\7\0\11\3\4\7"+ - "\14\3\12\0\11\3\25\7\5\3\23\7\160\3\105\7"+ - "\13\3\1\7\56\0\20\3\4\0\15\7\100\3\2\7"+ - "\36\3\355\7\23\3\363\7\15\3\37\7\121\3\u018c\7"+ - "\4\3\153\7\5\3\15\7\3\3\11\7\7\3\12\7"+ - "\3\3\2\0\1\3\4\0\301\3\5\0\3\3\26\0"+ - "\2\3\7\0\36\3\4\0\224\3\3\0\273\3\125\7"+ - "\1\3\107\7\1\3\2\7\2\3\1\7\2\3\2\7"+ - "\2\3\4\7\1\3\14\7\1\3\1\7\1\3\7\7"+ - "\1\3\101\7\1\3\4\7\2\3\10\7\1\3\7\7"+ - "\1\3\34\7\1\3\4\7\1\3\5\7\1\3\1\7"+ - "\3\3\7\7\1\3\u0154\7\2\3\31\7\1\3\31\7"+ - "\1\3\37\7\1\3\31\7\1\3\37\7\1\3\31\7"+ - "\1\3\37\7\1\3\31\7\1\3\37\7\1\3\31\7"+ - "\1\3\10\7\2\3\151\0\4\3\62\0\10\3\1\0"+ - "\16\3\1\0\26\3\5\0\1\3\17\0\120\3\7\0"+ - "\1\3\21\0\2\3\7\0\1\3\2\0\1\3\5\0"+ - "\325\3\305\7\13\3\7\0\51\3\104\7\7\0\5\3"+ - "\12\0\246\3\4\7\1\3\33\7\1\3\2\7\1\3"+ - "\1\7\2\3\1\7\1\3\12\7\1\3\4\7\1\3"+ - "\1\7\1\3\1\7\6\3\1\7\4\3\1\7\1\3"+ - "\1\7\1\3\1\7\1\3\3\7\1\3\2\7\1\3"+ - "\1\7\2\3\1\7\1\3\1\7\1\3\1\7\1\3"+ - "\1\7\1\3\1\7\1\3\2\7\1\3\1\7\2\3"+ - "\4\7\1\3\7\7\1\3\4\7\1\3\4\7\1\3"+ - "\1\7\1\3\12\7\1\3\21\7\5\3\3\7\1\3"+ - "\5\7\1\3\21\7\104\3\327\7\51\3\65\7\13\3"+ - "\336\7\2\3\u0182\7\16\3\u0131\7\37\3\36\7\343\3"+ - "\1\0\36\3\140\0\200\3\360\0\20\3"; + "\11\0\1\1\1\2\1\3\1\4\1\5\16\0\4\6"+ + "\1\1\1\7\1\10\1\6\1\11\1\12\1\13\1\14"+ + "\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+ + "\1\25\1\26\2\27\4\30\2\31\1\32\1\33\1\34"+ + "\1\35\1\36\1\37\1\40\1\41\1\42\1\41\1\43"+ + "\1\44\1\43\5\11\1\45\3\11\1\46\7\11\1\47"+ + "\2\11\1\50\1\51\1\52\1\53\1\54\1\6\1\55"+ + "\1\56\1\57\1\60\1\61\1\62\1\63\1\64\1\65"+ + "\1\11\1\66\1\67\1\70\1\71\1\72\1\73\1\11"+ + "\1\74\1\75\1\76\1\77\1\100\1\101\1\102\1\103"+ + "\1\104\1\105\1\106\1\107\1\110\6\0\1\111\32\0"+ + "\2\6\4\11\4\6\1\11\2\6\1\0\7\6\1\11"+ + "\4\6\1\11\5\6\27\11\1\6\37\11\1\6\u01ca\11"+ + "\4\6\14\11\16\6\5\11\7\6\1\11\1\6\1\11"+ + "\21\6\160\0\5\11\1\6\2\11\2\6\4\11\10\6"+ + "\1\11\1\6\3\11\1\6\1\11\1\6\24\11\1\6"+ + "\123\11\1\6\213\11\1\6\5\0\2\6\236\11\11\6"+ + "\46\11\2\6\1\11\7\6\47\11\7\6\1\11\1\6"+ + "\55\0\1\6\1\0\1\6\2\0\1\6\2\0\1\6"+ + "\1\0\10\6\33\11\5\6\3\11\15\6\5\0\6\6"+ + "\1\11\4\6\13\0\5\6\53\11\37\0\4\6\2\11"+ + "\1\0\143\11\1\6\1\11\10\0\1\6\6\0\2\11"+ + "\2\0\1\6\4\0\2\11\12\0\3\11\2\6\1\11"+ + "\17\6\1\0\1\11\1\0\36\11\33\0\2\6\131\11"+ + "\13\0\1\11\16\6\12\0\41\11\11\0\2\11\4\6"+ + "\1\11\5\6\26\11\4\0\1\11\11\0\1\11\3\0"+ + "\1\11\5\0\22\6\31\11\3\0\104\6\1\11\1\6"+ + "\13\11\67\6\33\0\1\6\4\0\66\11\3\0\1\11"+ + "\22\0\1\11\7\0\12\11\2\0\2\6\12\0\1\6"+ + "\7\11\1\6\7\11\1\6\3\0\1\6\10\11\2\6"+ + "\2\11\2\6\26\11\1\6\7\11\1\6\1\11\3\6"+ + "\4\11\2\6\1\0\1\11\7\0\2\6\2\0\2\6"+ + "\3\0\1\11\10\6\1\0\4\6\2\11\1\6\3\11"+ + "\2\0\2\6\12\0\4\11\7\6\1\11\5\6\3\0"+ + "\1\6\6\11\4\6\2\11\2\6\26\11\1\6\7\11"+ + "\1\6\2\11\1\6\2\11\1\6\2\11\2\6\1\0"+ + "\1\6\5\0\4\6\2\0\2\6\3\0\3\6\1\0"+ + "\7\6\4\11\1\6\1\11\7\6\14\0\3\11\1\0"+ + "\13\6\3\0\1\6\11\11\1\6\3\11\1\6\26\11"+ + "\1\6\7\11\1\6\2\11\1\6\5\11\2\6\1\0"+ + "\1\11\10\0\1\6\3\0\1\6\3\0\2\6\1\11"+ + "\17\6\2\11\2\0\2\6\12\0\1\6\1\11\17\6"+ + "\3\0\1\6\10\11\2\6\2\11\2\6\26\11\1\6"+ + "\7\11\1\6\2\11\1\6\5\11\2\6\1\0\1\11"+ + "\7\0\2\6\2\0\2\6\3\0\10\6\2\0\4\6"+ + "\2\11\1\6\3\11\2\0\2\6\12\0\1\6\1\11"+ + "\20\6\1\0\1\11\1\6\6\11\3\6\3\11\1\6"+ + "\4\11\3\6\2\11\1\6\1\11\1\6\2\11\3\6"+ + "\2\11\3\6\3\11\3\6\14\11\4\6\5\0\3\6"+ + "\3\0\1\6\4\0\2\6\1\11\6\6\1\0\16\6"+ + "\12\0\11\6\1\11\7\6\3\0\1\6\10\11\1\6"+ + "\3\11\1\6\27\11\1\6\12\11\1\6\5\11\3\6"+ + "\1\11\7\0\1\6\3\0\1\6\4\0\7\6\2\0"+ + "\1\6\2\11\6\6\2\11\2\0\2\6\12\0\22\6"+ + "\2\0\1\6\10\11\1\6\3\11\1\6\27\11\1\6"+ + "\12\11\1\6\5\11\2\6\1\0\1\11\7\0\1\6"+ + "\3\0\1\6\4\0\7\6\2\0\7\6\1\11\1\6"+ + "\2\11\2\0\2\6\12\0\1\6\2\11\17\6\2\0"+ + "\1\6\10\11\1\6\3\11\1\6\51\11\2\6\1\11"+ + "\7\0\1\6\3\0\1\6\4\0\1\11\10\6\1\0"+ + "\10\6\2\11\2\0\2\6\12\0\12\6\6\11\2\6"+ + "\2\0\1\6\22\11\3\6\30\11\1\6\11\11\1\6"+ + "\1\11\2\6\7\11\3\6\1\0\4\6\6\0\1\6"+ + "\1\0\1\6\10\0\22\6\2\0\15\6\60\11\1\0"+ + "\2\11\7\0\4\6\10\11\10\0\1\6\12\0\47\6"+ + "\2\11\1\6\1\11\2\6\2\11\1\6\1\11\2\6"+ + "\1\11\6\6\4\11\1\6\7\11\1\6\3\11\1\6"+ + "\1\11\1\6\1\11\2\6\2\11\1\6\4\11\1\0"+ + "\2\11\6\0\1\6\2\0\1\11\2\6\5\11\1\6"+ + "\1\11\1\6\6\0\2\6\12\0\2\6\4\11\40\6"+ + "\1\11\27\6\2\0\6\6\12\0\13\6\1\0\1\6"+ + "\1\0\1\6\1\0\4\6\2\0\10\11\1\6\44\11"+ + "\4\6\24\0\1\6\2\0\5\11\13\0\1\6\44\0"+ + "\11\6\1\0\71\6\53\11\24\0\1\11\12\0\6\6"+ + "\6\11\4\0\4\11\3\0\1\11\3\0\2\11\7\0"+ + "\3\11\4\0\15\11\14\0\1\11\17\0\2\6\46\11"+ + "\1\6\1\11\5\6\1\11\2\6\53\11\1\6\115\11"+ + "\1\6\4\11\2\6\7\11\1\6\1\11\1\6\4\11"+ + "\2\6\51\11\1\6\4\11\2\6\41\11\1\6\4\11"+ + "\2\6\7\11\1\6\1\11\1\6\4\11\2\6\17\11"+ + "\1\6\71\11\1\6\4\11\2\6\103\11\2\6\3\0"+ + "\40\6\20\11\20\6\125\11\14\6\u016c\11\2\6\21\11"+ + "\1\6\32\11\5\6\113\11\3\6\3\11\17\6\15\11"+ + "\1\6\4\11\3\0\13\6\22\11\3\0\13\6\22\11"+ + "\2\0\14\6\15\11\1\6\3\11\1\6\2\0\14\6"+ + "\64\11\40\0\3\6\1\11\3\6\2\11\1\0\2\6"+ + "\12\0\41\6\3\0\2\6\12\0\6\6\130\11\10\6"+ + "\51\11\1\0\1\11\5\6\106\11\12\6\35\11\3\6"+ + "\14\0\4\6\14\0\12\6\12\0\36\11\2\6\5\11"+ + "\13\6\54\11\4\6\21\0\7\11\2\0\6\6\12\0"+ + "\46\6\27\11\5\0\4\6\65\11\12\0\1\6\35\0"+ + "\2\6\13\0\6\6\12\0\15\6\1\11\130\6\5\0"+ + "\57\11\21\0\7\11\4\6\12\0\21\6\11\0\14\6"+ + "\3\0\36\11\15\0\2\11\12\0\54\11\16\0\14\6"+ + "\44\11\24\0\10\6\12\0\3\6\3\11\12\0\44\11"+ + "\122\6\3\0\1\6\25\0\4\11\1\0\4\11\3\0"+ + "\2\11\11\6\300\11\47\0\25\6\4\0\26\11\2\6"+ + "\6\11\2\6\46\11\2\6\6\11\2\6\10\11\1\6"+ + "\1\11\1\6\1\11\1\6\1\11\1\6\37\11\2\6"+ + "\65\11\1\6\7\11\1\6\1\11\3\6\3\11\1\6"+ + "\7\11\3\6\4\11\2\6\6\11\4\6\15\11\5\6"+ + "\3\11\1\6\7\11\16\6\5\0\30\6\2\3\5\0"+ + "\20\6\2\11\23\6\1\11\13\6\5\0\5\6\6\0"+ + "\1\6\1\11\15\6\1\11\20\6\15\11\3\6\33\11"+ + "\25\6\15\0\4\6\1\0\3\6\14\0\21\6\1\11"+ + "\4\6\1\11\2\6\12\11\1\6\1\11\3\6\5\11"+ + "\6\6\1\11\1\6\1\11\1\6\1\11\1\6\4\11"+ + "\1\6\13\11\2\6\4\11\5\6\5\11\4\6\1\11"+ + "\21\6\51\11\u0177\6\57\11\1\6\57\11\1\6\205\11"+ + "\6\6\4\11\3\0\2\11\14\6\46\11\1\6\1\11"+ + "\5\6\1\11\2\6\70\11\7\6\1\11\17\6\1\0"+ + "\27\11\11\6\7\11\1\6\7\11\1\6\7\11\1\6"+ + "\7\11\1\6\7\11\1\6\7\11\1\6\7\11\1\6"+ + "\7\11\1\6\40\0\57\6\1\11\325\6\3\11\31\6"+ + "\11\11\6\0\1\6\5\11\2\6\5\11\4\6\126\11"+ + "\2\6\2\0\2\6\3\11\1\6\132\11\1\6\4\11"+ + "\5\6\51\11\3\6\136\11\21\6\33\11\65\6\306\11"+ + "\112\6\315\11\63\6\215\11\103\6\56\11\2\6\15\11"+ + "\3\6\20\11\12\0\2\11\24\6\57\11\1\0\4\6"+ + "\12\0\1\6\31\11\7\6\1\0\120\11\2\0\45\6"+ + "\11\11\2\6\147\11\2\6\4\11\1\6\4\11\14\6"+ + "\13\11\115\6\12\11\1\0\3\11\1\0\4\11\1\0"+ + "\27\11\5\0\20\6\1\11\7\6\64\11\14\6\2\0"+ + "\62\11\21\0\13\6\12\0\6\6\22\0\6\11\3\6"+ + "\1\11\4\6\12\0\34\11\10\0\2\6\27\11\15\0"+ + "\14\6\35\11\3\6\4\0\57\11\16\0\16\6\1\11"+ + "\12\0\46\6\51\11\16\0\11\6\3\11\1\0\10\11"+ + "\2\0\2\6\12\0\6\6\27\11\3\6\1\11\1\0"+ + "\4\6\60\11\1\0\1\11\3\0\2\11\2\0\5\11"+ + "\2\0\1\11\1\0\1\11\30\6\3\11\2\6\13\11"+ + "\5\0\2\6\3\11\2\0\12\6\6\11\2\6\6\11"+ + "\2\6\6\11\11\6\7\11\1\6\7\11\221\6\43\11"+ + "\10\0\1\6\2\0\2\6\12\0\6\6\244\11\14\6"+ + "\27\11\4\6\61\11\4\6\u0100\3\156\11\2\6\152\11"+ + "\46\6\7\11\14\6\5\11\5\6\1\11\1\0\12\11"+ + "\1\6\15\11\1\6\5\11\1\6\1\11\1\6\2\11"+ + "\1\6\2\11\1\6\154\11\41\6\153\11\22\6\100\11"+ + "\2\6\66\11\50\6\15\11\3\6\20\0\20\6\7\0"+ + "\14\6\2\11\30\6\3\11\31\6\1\11\6\6\5\11"+ + "\1\6\207\11\2\6\1\0\4\6\1\11\13\6\12\0"+ + "\7\6\32\11\4\6\1\11\1\6\32\11\13\6\131\11"+ + "\3\6\6\11\2\6\6\11\2\6\6\11\2\6\3\11"+ + "\3\6\2\11\3\6\2\11\22\6\3\0\4\6\14\11"+ + "\1\6\32\11\1\6\23\11\1\6\2\11\1\6\17\11"+ + "\2\6\16\11\42\6\173\11\105\6\65\11\210\6\1\0"+ + "\202\6\35\11\3\6\61\11\57\6\37\11\21\6\33\11"+ + "\65\6\36\11\2\6\44\11\4\6\10\11\1\6\5\11"+ + "\52\6\236\11\2\6\12\0\126\6\6\11\2\6\1\11"+ + "\1\6\54\11\1\6\2\11\3\6\1\11\2\6\27\11"+ + "\252\6\26\11\12\6\32\11\106\6\70\11\6\6\2\11"+ + "\100\6\1\11\3\0\1\6\2\0\5\6\4\0\4\11"+ + "\1\6\3\11\1\6\33\11\4\6\3\0\4\6\1\0"+ + "\40\6\35\11\203\6\66\11\12\6\26\11\12\6\23\11"+ + "\215\6\111\11\267\6\3\0\65\11\17\0\37\6\12\0"+ + "\20\6\3\0\55\11\13\0\2\6\1\0\22\6\31\11"+ + "\7\6\12\0\6\6\3\0\44\11\16\0\1\6\12\0"+ + "\100\6\3\0\60\11\16\0\4\11\13\6\12\0\246\6"+ + "\53\11\15\0\10\6\12\0\66\6\157\11\221\6\143\11"+ + "\235\6\57\11\321\6\71\11\307\6\105\11\13\6\1\11"+ + "\56\0\20\6\4\0\15\11\140\6\2\11\u0163\6\5\0"+ + "\3\6\26\0\2\6\7\0\36\6\4\0\224\6\3\0"+ + "\273\6\125\11\1\6\107\11\1\6\2\11\2\6\1\11"+ + "\2\6\2\11\2\6\4\11\1\6\14\11\1\6\1\11"+ + "\1\6\7\11\1\6\101\11\1\6\4\11\2\6\10\11"+ + "\1\6\7\11\1\6\34\11\1\6\4\11\1\6\5\11"+ + "\1\6\1\11\3\6\7\11\1\6\u0154\11\2\6\31\11"+ + "\1\6\31\11\1\6\37\11\1\6\31\11\1\6\37\11"+ + "\1\6\31\11\1\6\37\11\1\6\31\11\1\6\37\11"+ + "\1\6\31\11\1\6\10\11\2\6\62\0\4\11\1\6"+ + "\33\11\1\6\2\11\1\6\1\11\2\6\1\11\1\6"+ + "\12\11\1\6\4\11\1\6\1\11\1\6\1\11\6\6"+ + "\1\11\4\6\1\11\1\6\1\11\1\6\1\11\1\6"+ + "\3\11\1\6\2\11\1\6\1\11\2\6\1\11\1\6"+ + "\1\11\1\6\1\11\1\6\1\11\1\6\1\11\1\6"+ + "\2\11\1\6\1\11\2\6\4\11\1\6\7\11\1\6"+ + "\4\11\1\6\4\11\1\6\1\11\1\6\12\11\1\6"+ + "\21\11\5\6\3\11\1\6\5\11\1\6\21\11\104\6"+ + "\327\11\51\6\65\11\13\6\336\11\343\6\1\0\36\6"+ + "\140\0\200\6\360\0\20\6"; private static int [] zzUnpackcmap_blocks() { - int [] result = new int[27648]; + int [] result = new int[21504]; int offset = 0; offset = zzUnpackcmap_blocks(ZZ_CMAP_BLOCKS_PACKED_0, offset, result); return result; @@ -330,25 +289,25 @@ private static int zzUnpackcmap_blocks(String packed, int offset, int [] result) "\1\26\1\27\1\30\17\3\1\31\1\32\1\33\1\34"+ "\1\35\1\36\1\0\1\37\1\40\1\41\2\0\1\42"+ "\1\43\1\44\1\45\1\46\1\47\1\0\1\50\1\0"+ - "\1\51\1\50\1\16\1\0\1\50\1\0\1\16\2\0"+ - "\1\16\1\0\1\52\1\0\1\53\1\54\1\55\1\0"+ - "\1\56\12\3\1\57\7\3\1\60\23\3\1\61\1\62"+ - "\1\0\1\63\2\0\1\64\3\0\1\16\3\0\1\16"+ - "\1\65\1\66\1\0\22\3\1\67\2\3\1\70\2\3"+ - "\1\71\20\3\1\72\3\3\2\0\1\50\1\0\1\1"+ - "\5\0\1\73\4\3\1\74\1\75\1\3\1\76\5\3"+ - "\1\77\1\100\7\3\1\101\1\3\1\102\13\3\1\103"+ - "\2\3\1\104\1\105\2\3\3\0\3\3\1\106\1\107"+ - "\1\110\1\111\4\3\1\111\1\112\12\3\1\113\2\3"+ - "\1\114\2\3\1\115\2\3\1\116\1\0\1\3\1\117"+ - "\3\3\1\120\3\3\1\121\2\3\1\122\3\3\1\123"+ - "\1\124\1\125\1\3\1\126\1\3\1\127\3\3\1\130"+ - "\1\3\1\131\1\132\1\133\3\3\1\134\1\135\5\3"+ - "\1\136\1\137\4\3\1\140\2\3\1\141\2\3\1\142"+ - "\1\143\1\3\1\144\1\145\1\146\2\3\1\147"; + "\1\51\1\52\1\50\1\16\1\0\1\50\1\0\1\16"+ + "\2\0\1\16\1\0\1\53\1\0\1\54\1\55\1\56"+ + "\1\0\1\57\12\3\1\60\7\3\1\61\23\3\1\62"+ + "\1\63\1\0\1\64\2\0\1\65\3\0\1\16\3\0"+ + "\1\16\1\66\1\67\1\0\22\3\1\70\2\3\1\71"+ + "\2\3\1\72\20\3\1\73\3\3\2\0\1\50\1\0"+ + "\1\1\5\0\1\74\4\3\1\75\1\76\1\3\1\77"+ + "\5\3\1\100\1\101\7\3\1\102\1\3\1\103\13\3"+ + "\1\104\2\3\1\105\1\106\2\3\3\0\3\3\1\107"+ + "\1\110\1\111\1\112\4\3\1\112\1\113\12\3\1\114"+ + "\2\3\1\115\2\3\1\116\2\3\1\117\1\0\1\3"+ + "\1\120\3\3\1\121\3\3\1\122\2\3\1\123\3\3"+ + "\1\124\1\125\1\126\1\3\1\127\1\3\1\130\3\3"+ + "\1\131\1\3\1\132\1\133\1\134\3\3\1\135\1\136"+ + "\5\3\1\137\1\140\4\3\1\141\2\3\1\142\2\3"+ + "\1\143\1\144\1\3\1\145\1\146\1\147\2\3\1\150"; private static int [] zzUnpackAction() { - int [] result = new int[337]; + int [] result = new int[338]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -373,52 +332,52 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\107\0\216\0\325\0\u011c\0\u0163\0\u01aa\0\u01f1"+ - "\0\u0238\0\107\0\107\0\u027f\0\u02c6\0\107\0\u030d\0\u0354"+ - "\0\u039b\0\u03e2\0\u0429\0\u0470\0\107\0\u04b7\0\u04fe\0\u0545"+ - "\0\107\0\107\0\107\0\107\0\u058c\0\u05d3\0\u061a\0\u0661"+ - "\0\u06a8\0\u06ef\0\u0736\0\u077d\0\u07c4\0\u080b\0\u0852\0\u0899"+ - "\0\u08e0\0\u0927\0\u096e\0\u09b5\0\107\0\u09fc\0\107\0\107"+ - "\0\107\0\107\0\u0a43\0\107\0\107\0\107\0\u0a8a\0\u0ad1"+ - "\0\107\0\107\0\107\0\107\0\107\0\107\0\u0b18\0\u0b5f"+ - "\0\u0ba6\0\107\0\u0bed\0\u0c34\0\u0c7b\0\107\0\u0cc2\0\107"+ - "\0\u0d09\0\u0d50\0\u0d97\0\u0dde\0\107\0\u0e25\0\107\0\107"+ - "\0\107\0\u0e6c\0\107\0\u0eb3\0\u0efa\0\u0f41\0\u0f88\0\u0fcf"+ - "\0\u1016\0\u105d\0\u10a4\0\u10eb\0\u1132\0\u1179\0\u11c0\0\u1207"+ - "\0\u124e\0\u1295\0\u12dc\0\u1323\0\u136a\0\u0163\0\u13b1\0\u13f8"+ - "\0\u143f\0\u1486\0\u14cd\0\u1514\0\u155b\0\u15a2\0\u15e9\0\u1630"+ - "\0\u1677\0\u16be\0\u1705\0\u174c\0\u1793\0\u17da\0\u1821\0\u1868"+ - "\0\u18af\0\107\0\107\0\u18f6\0\107\0\u193d\0\u1984\0\107"+ - "\0\u19cb\0\u1a12\0\u1a59\0\u1aa0\0\u1ae7\0\u1b2e\0\u1b75\0\u1bbc"+ - "\0\107\0\107\0\u1c03\0\u1c4a\0\u1c91\0\u1cd8\0\u1d1f\0\u1d66"+ - "\0\u1dad\0\u1df4\0\u1e3b\0\u1e82\0\u1ec9\0\u1f10\0\u1f57\0\u1f9e"+ - "\0\u1fe5\0\u202c\0\u2073\0\u20ba\0\u2101\0\u0163\0\u2148\0\u218f"+ - "\0\u21d6\0\u221d\0\u2264\0\u0163\0\u22ab\0\u22f2\0\u2339\0\u2380"+ - "\0\u23c7\0\u240e\0\u2455\0\u249c\0\u24e3\0\u252a\0\u2571\0\u25b8"+ - "\0\u25ff\0\u2646\0\u268d\0\u26d4\0\u0163\0\u271b\0\u2762\0\u27a9"+ - "\0\u27f0\0\u2837\0\u287e\0\u28c5\0\u1a12\0\u290c\0\u2953\0\u299a"+ - "\0\u29e1\0\u2a28\0\107\0\u2a6f\0\u2ab6\0\u2afd\0\u2b44\0\u0163"+ - "\0\u0163\0\u2b8b\0\u0163\0\u2bd2\0\u2c19\0\u2c60\0\u2ca7\0\u2cee"+ - "\0\u0163\0\u0163\0\u2d35\0\u2d7c\0\u2dc3\0\u2e0a\0\u2e51\0\u2e98"+ - "\0\u2edf\0\u0163\0\u2f26\0\u0163\0\u2f6d\0\u2fb4\0\u2ffb\0\u3042"+ - "\0\u3089\0\u30d0\0\u3117\0\u315e\0\u31a5\0\u31ec\0\u3233\0\u0163"+ - "\0\u327a\0\u32c1\0\u0163\0\u0163\0\u3308\0\u334f\0\u3396\0\u33dd"+ - "\0\u3424\0\u346b\0\u34b2\0\u34f9\0\u0163\0\u0163\0\u0163\0\u0163"+ - "\0\u3540\0\u3587\0\u35ce\0\u3615\0\u365c\0\u0163\0\u36a3\0\u36ea"+ - "\0\u3731\0\u3778\0\u37bf\0\u3806\0\u384d\0\u3894\0\u38db\0\u3922"+ - "\0\u0163\0\u3969\0\u39b0\0\u0163\0\u39f7\0\u3a3e\0\u3a85\0\u3acc"+ - "\0\u3b13\0\u0163\0\u3b5a\0\u3ba1\0\u0163\0\u3be8\0\u3c2f\0\u3c76"+ - "\0\u0163\0\u3cbd\0\u3d04\0\u3d4b\0\u0163\0\u3d92\0\u3dd9\0\u0163"+ - "\0\u3e20\0\u3e67\0\u3eae\0\u0163\0\u0163\0\u0163\0\u3ef5\0\u0163"+ - "\0\u3f3c\0\u0163\0\u3f83\0\u3fca\0\u4011\0\u0163\0\u4058\0\u0163"+ - "\0\u0163\0\u0163\0\u409f\0\u40e6\0\u412d\0\u0163\0\u0163\0\u4174"+ - "\0\u41bb\0\u4202\0\u4249\0\u4290\0\u0163\0\u0163\0\u42d7\0\u431e"+ - "\0\u4365\0\u43ac\0\u0163\0\u43f3\0\u443a\0\u0163\0\u4481\0\u44c8"+ - "\0\u0163\0\u0163\0\u450f\0\u0163\0\u0163\0\u0163\0\u4556\0\u459d"+ - "\0\u0163"; + "\0\0\0\112\0\224\0\336\0\u0128\0\u0172\0\u01bc\0\u0206"+ + "\0\u0250\0\112\0\112\0\u029a\0\u02e4\0\112\0\u032e\0\u0378"+ + "\0\u03c2\0\u040c\0\u0456\0\u04a0\0\112\0\u04ea\0\u0534\0\u057e"+ + "\0\112\0\112\0\112\0\112\0\u05c8\0\u0612\0\u065c\0\u06a6"+ + "\0\u06f0\0\u073a\0\u0784\0\u07ce\0\u0818\0\u0862\0\u08ac\0\u08f6"+ + "\0\u0940\0\u098a\0\u09d4\0\u0a1e\0\112\0\u0a68\0\112\0\112"+ + "\0\112\0\112\0\u0ab2\0\112\0\112\0\112\0\u0afc\0\u0b46"+ + "\0\112\0\112\0\112\0\112\0\112\0\112\0\u0b90\0\u0bda"+ + "\0\u0c24\0\u0c6e\0\112\0\u0cb8\0\u0d02\0\u0d4c\0\112\0\u0d96"+ + "\0\112\0\u0de0\0\u0e2a\0\u0e74\0\u0ebe\0\112\0\u0f08\0\112"+ + "\0\112\0\112\0\u0f52\0\112\0\u0f9c\0\u0fe6\0\u1030\0\u107a"+ + "\0\u10c4\0\u110e\0\u1158\0\u11a2\0\u11ec\0\u1236\0\u1280\0\u12ca"+ + "\0\u1314\0\u135e\0\u13a8\0\u13f2\0\u143c\0\u1486\0\u0172\0\u14d0"+ + "\0\u151a\0\u1564\0\u15ae\0\u15f8\0\u1642\0\u168c\0\u16d6\0\u1720"+ + "\0\u176a\0\u17b4\0\u17fe\0\u1848\0\u1892\0\u18dc\0\u1926\0\u1970"+ + "\0\u19ba\0\u1a04\0\112\0\112\0\u1a4e\0\112\0\u1a98\0\u1ae2"+ + "\0\112\0\u1b2c\0\u1b76\0\u1bc0\0\u1c0a\0\u1c54\0\u1c9e\0\u1ce8"+ + "\0\u1d32\0\112\0\112\0\u1d7c\0\u1dc6\0\u1e10\0\u1e5a\0\u1ea4"+ + "\0\u1eee\0\u1f38\0\u1f82\0\u1fcc\0\u2016\0\u2060\0\u20aa\0\u20f4"+ + "\0\u213e\0\u2188\0\u21d2\0\u221c\0\u2266\0\u22b0\0\u0172\0\u22fa"+ + "\0\u2344\0\u238e\0\u23d8\0\u2422\0\u0172\0\u246c\0\u24b6\0\u2500"+ + "\0\u254a\0\u2594\0\u25de\0\u2628\0\u2672\0\u26bc\0\u2706\0\u2750"+ + "\0\u279a\0\u27e4\0\u282e\0\u2878\0\u28c2\0\u0172\0\u290c\0\u2956"+ + "\0\u29a0\0\u29ea\0\u2a34\0\u2a7e\0\u2ac8\0\u1b76\0\u2b12\0\u2b5c"+ + "\0\u2ba6\0\u2bf0\0\u2c3a\0\112\0\u2c84\0\u2cce\0\u2d18\0\u2d62"+ + "\0\u0172\0\u0172\0\u2dac\0\u0172\0\u2df6\0\u2e40\0\u2e8a\0\u2ed4"+ + "\0\u2f1e\0\u0172\0\u0172\0\u2f68\0\u2fb2\0\u2ffc\0\u3046\0\u3090"+ + "\0\u30da\0\u3124\0\u0172\0\u316e\0\u0172\0\u31b8\0\u3202\0\u324c"+ + "\0\u3296\0\u32e0\0\u332a\0\u3374\0\u33be\0\u3408\0\u3452\0\u349c"+ + "\0\u0172\0\u34e6\0\u3530\0\u0172\0\u0172\0\u357a\0\u35c4\0\u360e"+ + "\0\u3658\0\u36a2\0\u36ec\0\u3736\0\u3780\0\u0172\0\u0172\0\u0172"+ + "\0\u0172\0\u37ca\0\u3814\0\u385e\0\u38a8\0\u38f2\0\u0172\0\u393c"+ + "\0\u3986\0\u39d0\0\u3a1a\0\u3a64\0\u3aae\0\u3af8\0\u3b42\0\u3b8c"+ + "\0\u3bd6\0\u0172\0\u3c20\0\u3c6a\0\u0172\0\u3cb4\0\u3cfe\0\u3d48"+ + "\0\u3d92\0\u3ddc\0\u0172\0\u3e26\0\u3e70\0\u0172\0\u3eba\0\u3f04"+ + "\0\u3f4e\0\u0172\0\u3f98\0\u3fe2\0\u402c\0\u0172\0\u4076\0\u40c0"+ + "\0\u0172\0\u410a\0\u4154\0\u419e\0\u0172\0\u0172\0\u0172\0\u41e8"+ + "\0\u0172\0\u4232\0\u0172\0\u427c\0\u42c6\0\u4310\0\u0172\0\u435a"+ + "\0\u0172\0\u0172\0\u0172\0\u43a4\0\u43ee\0\u4438\0\u0172\0\u0172"+ + "\0\u4482\0\u44cc\0\u4516\0\u4560\0\u45aa\0\u0172\0\u0172\0\u45f4"+ + "\0\u463e\0\u4688\0\u46d2\0\u0172\0\u471c\0\u4766\0\u0172\0\u47b0"+ + "\0\u47fa\0\u0172\0\u0172\0\u4844\0\u0172\0\u0172\0\u0172\0\u488e"+ + "\0\u48d8\0\u0172"; private static int [] zzUnpackRowMap() { - int [] result = new int[337]; + int [] result = new int[338]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -441,355 +400,357 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) { private static final int [] ZZ_TRANS = zzUnpackTrans(); private static final String ZZ_TRANS_PACKED_0 = - "\1\0\2\2\1\0\1\3\1\4\1\5\1\6\1\7"+ - "\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17"+ - "\1\20\1\21\1\22\4\23\1\24\1\25\1\26\1\27"+ - "\1\30\1\31\1\32\7\6\1\33\1\0\1\34\1\35"+ - "\1\6\1\36\1\37\1\40\1\41\1\42\1\43\2\6"+ - "\1\44\1\6\1\45\1\6\1\46\1\6\1\47\1\50"+ - "\1\51\1\52\1\6\1\53\1\54\3\6\1\55\1\56"+ - "\1\57\1\60\111\0\1\2\137\0\1\61\53\0\2\5"+ - "\1\0\1\5\1\0\1\5\1\62\40\5\1\63\37\5"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\31\6\37\0\1\64\64\0\1\65\21\0\1\66\53\0"+ - "\2\67\1\0\1\67\1\0\5\67\1\0\34\67\1\70"+ - "\37\67\33\0\1\71\71\0\1\72\14\0\1\73\73\0"+ - "\1\74\12\0\1\75\1\76\73\0\1\77\1\0\5\100"+ - "\74\0\1\101\15\0\1\102\74\0\1\103\1\0\4\104"+ - "\11\0\1\105\1\106\1\107\1\110\1\0\1\111\4\0"+ - "\1\112\1\0\1\105\1\0\1\106\1\107\1\106\4\0"+ - "\1\110\12\0\1\111\27\0\1\103\1\0\5\113\11\0"+ - "\1\106\1\107\1\110\6\0\1\114\3\0\1\106\1\107"+ - "\1\106\4\0\1\110\51\0\1\115\110\0\1\116\1\117"+ - "\106\0\1\120\106\0\1\121\1\122\105\0\1\123\53\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\2\6\1\124\16\6\1\125\7\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\16\6\1\126"+ - "\1\6\1\127\6\6\1\130\1\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\1\6\1\131"+ - "\6\6\1\132\2\6\1\133\2\6\1\134\12\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\5\6\1\135\10\6\1\136\12\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\13\6\1\137"+ - "\1\6\1\140\10\6\1\141\2\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\1\6\1\142"+ - "\7\6\1\143\1\6\1\144\2\6\1\145\12\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\6\6\1\146\5\6\1\147\1\150\13\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\16\6"+ - "\1\151\12\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\1\6\1\152\3\6\1\153\15\6"+ - "\1\154\5\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\1\6\1\155\16\6\1\156\2\6"+ - "\1\157\5\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\5\6\1\160\23\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\10\6"+ - "\1\161\11\6\1\162\1\163\1\6\1\164\1\6\1\165"+ - "\1\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\10\6\1\166\7\6\1\167\10\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\16\6\1\170\12\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\10\6\1\171\20\6\37\0"+ - "\1\172\50\0\1\173\10\0\1\5\3\0\1\5\10\0"+ + "\1\0\2\2\1\0\1\2\1\3\1\0\1\4\1\5"+ + "\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15"+ + "\1\16\1\17\1\20\1\21\1\22\4\23\1\24\1\25"+ + "\1\26\1\27\1\30\1\31\1\32\7\6\1\33\1\0"+ + "\1\34\1\35\1\6\1\36\1\37\1\40\1\41\1\42"+ + "\1\43\2\6\1\44\1\6\1\45\1\6\1\46\1\6"+ + "\1\47\1\50\1\51\1\52\1\6\1\53\1\54\3\6"+ + "\1\55\1\56\1\57\1\60\115\0\1\2\144\0\1\61"+ + "\54\0\2\5\1\0\2\5\1\0\2\5\1\62\40\5"+ + "\1\63\40\5\1\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\31\6\4\0\1\6\35\0\1\64\67\0"+ + "\1\65\21\0\1\66\54\0\2\67\1\0\2\67\1\0"+ + "\6\67\1\0\34\67\1\70\40\67\35\0\1\71\74\0"+ + "\1\72\14\0\1\73\76\0\1\74\12\0\1\75\1\76"+ + "\76\0\1\77\1\0\5\100\77\0\1\101\4\0\1\102"+ + "\10\0\1\103\77\0\1\104\1\0\4\105\11\0\1\106"+ + "\1\107\1\110\1\111\1\0\1\112\4\0\1\113\1\0"+ + "\1\106\1\0\1\107\1\110\1\107\4\0\1\111\12\0"+ + "\1\112\32\0\1\104\1\0\5\114\11\0\1\107\1\110"+ + "\1\111\6\0\1\115\3\0\1\107\1\110\1\107\4\0"+ + "\1\111\54\0\1\116\113\0\1\117\1\120\111\0\1\121"+ + "\111\0\1\122\1\123\110\0\1\124\54\0\1\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\2\6\1\125"+ + "\16\6\1\126\7\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\16\6\1\127\1\6\1\130"+ + "\6\6\1\131\1\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\1\6\1\132\6\6\1\133"+ + "\2\6\1\134\2\6\1\135\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\136"+ + "\10\6\1\137\12\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\13\6\1\140\1\6\1\141"+ + "\10\6\1\142\2\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\1\6\1\143\7\6\1\144"+ + "\1\6\1\145\2\6\1\146\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\6\6\1\147"+ + "\5\6\1\150\1\151\13\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\16\6\1\152\12\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\1\6\1\153\3\6\1\154\15\6\1\155\5\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\1\6\1\156\16\6\1\157\2\6\1\160\5\6"+ + "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+ + "\4\0\5\6\1\161\23\6\4\0\2\6\10\0\1\6"+ + "\13\0\5\6\7\0\7\6\4\0\10\6\1\162\11\6"+ + "\1\163\1\164\1\6\1\165\1\6\1\166\1\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\10\6\1\167\7\6\1\170\10\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\16\6\1\171"+ + "\12\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\10\6\1\172\20\6\4\0\1\6\35\0"+ + "\1\173\50\0\1\174\13\0\1\5\3\0\1\5\10\0"+ "\4\5\20\0\1\5\4\0\1\5\3\0\1\5\6\0"+ - "\1\5\2\0\1\5\1\0\1\5\1\174\23\0\1\175"+ - "\102\0\1\67\3\0\1\67\10\0\3\176\1\177\20\0"+ + "\1\5\2\0\1\5\1\0\1\5\1\175\26\0\1\176"+ + "\105\0\1\67\3\0\1\67\10\0\3\177\1\200\20\0"+ "\1\67\4\0\1\67\3\0\1\67\6\0\1\67\2\0"+ - "\1\67\1\0\1\67\33\0\1\200\126\0\1\106\1\201"+ - "\13\0\1\106\1\201\1\106\26\0\15\202\1\203\71\202"+ - "\23\0\5\100\11\0\1\106\1\201\13\0\1\106\1\201"+ - "\1\106\51\0\4\104\14\0\1\110\6\0\1\112\12\0"+ - "\1\110\44\0\2\204\100\0\1\205\1\0\1\205\2\0"+ - "\5\206\100\0\1\207\1\0\5\210\7\0\4\210\10\0"+ - "\6\210\51\0\4\104\23\0\1\112\57\0\5\113\13\0"+ - "\1\110\6\0\1\114\12\0\1\110\44\0\5\113\22\0"+ - "\1\114\67\0\1\211\106\0\1\212\1\213\52\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+ - "\1\214\7\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\21\6\1\215\7\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\16\6"+ - "\1\216\12\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\5\6\1\217\23\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ - "\1\220\6\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\21\6\1\221\1\222\6\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\1\6\1\223\27\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\1\6\1\224\27\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\15\6\1\225\13\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\6\6\1\226\22\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\23\6\1\227\5\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\21\6\1\230\7\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\23\6\1\231\5\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\22\6\1\232\6\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\13\6\1\233\15\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\15\6\1\234\13\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\16\6\1\235\12\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\20\6\1\236\10\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\17\6\1\237\11\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\21\6\1\240\1\241\6\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\15\6\1\242\13\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\22\6\1\243\6\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\25\6\1\244\3\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\13\6\1\245\15\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\3\6\1\246\25\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\11\6\1\247\4\6"+ - "\1\250\12\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\2\6\1\251\26\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ - "\1\252\6\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\16\6\1\253\12\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ - "\1\254\16\6\1\255\10\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\17\6\1\256\11\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\11\6\1\257\17\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\15\6\1\260\13\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\11\6\1\261\6\6\1\262\10\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ - "\1\263\21\6\1\264\3\6\1\265\1\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\11\6"+ - "\1\266\1\6\1\267\15\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\11\6\1\270\17\6"+ - "\27\0\5\271\7\0\4\271\10\0\6\271\14\0\1\174"+ - "\23\0\1\175\10\0\4\177\72\0\1\175\10\0\4\67"+ - "\76\0\1\272\1\0\1\272\2\0\5\273\57\0\15\202"+ - "\1\274\106\202\1\274\4\202\1\275\64\202\23\0\2\204"+ - "\16\0\1\110\6\0\1\276\12\0\1\110\44\0\5\206"+ - "\102\0\5\206\11\0\1\106\10\0\1\277\3\0\1\106"+ - "\1\0\1\106\51\0\5\300\7\0\4\300\10\0\6\300"+ - "\47\0\1\301\1\0\5\210\7\0\4\210\1\110\1\201"+ - "\5\0\1\302\6\210\4\0\1\110\3\0\1\201\50\0"+ - "\1\303\53\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\22\6\1\304\6\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\305"+ - "\23\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\13\6\1\306\15\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\1\6\1\307"+ - "\27\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\5\6\1\310\23\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\311"+ - "\23\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\3\6\1\312\25\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\20\6\1\313"+ - "\10\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\21\6\1\314\7\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\315"+ - "\1\316\6\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\1\6\1\317\27\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\2\6"+ - "\1\320\26\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\5\6\1\321\23\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\14\6"+ - "\1\322\14\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\5\6\1\323\23\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+ - "\1\264\7\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\1\6\1\324\27\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ - "\1\325\27\6\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\13\6\1\326\2\6\1\327\12\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\22\6\1\330\6\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\5\6\1\331\23\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\7\6\1\332\21\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\11\6\1\333\17\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\13\6\1\334\15\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\12\6\1\335\16\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\24\6\1\336\4\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\22\6\1\337\6\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\13\6\1\340\15\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\23\6\1\341\5\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\20\6\1\342\10\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\22\6\1\343\6\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\11\6\1\344\17\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\5\6\1\345\23\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\22\6\1\346\6\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\3\6\1\347\25\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\21\6\1\350\7\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\16\6\1\351\12\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\15\6\1\352\13\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\5\6\1\353\23\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\4\6\1\354\24\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\1\6\1\355\27\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\13\6\1\356\15\6\27\0\5\357\7\0\4\357"+ - "\10\0\6\357\51\0\5\273\102\0\5\273\11\0\1\106"+ - "\10\0\1\360\3\0\1\106\1\0\1\106\26\0\15\202"+ - "\1\274\4\202\1\2\64\202\23\0\2\204\25\0\1\276"+ - "\57\0\5\206\22\0\1\277\57\0\5\300\7\0\4\300"+ - "\1\0\1\201\5\0\1\361\6\300\10\0\1\201\40\0"+ - "\5\300\7\0\4\300\1\0\1\201\6\0\6\300\10\0"+ - "\1\201\40\0\5\210\7\0\4\210\7\0\1\302\6\210"+ - "\26\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\20\6\1\362\10\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\20\6\1\363\10\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\5\6\1\364\23\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\12\6\1\365\16\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\10\6\1\366\20\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\21\6\1\367\7\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\22\6\1\370\6\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\11\6\1\371\17\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\23\6\1\372\5\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\13\6\1\373\15\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\15\6\1\374\13\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\13\6\1\375\15\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\22\6\1\376\6\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\5\6\1\377\23\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\20\6\1\u0100\10\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\1\6\1\u0101\27\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\20\6\1\u0102\10\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\24\6\1\u0103\4\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\1\6\1\u0104\27\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\1\6\1\u0105\27\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\5\6\1\u0106\23\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\11\6\1\u0107\17\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\20\6\1\u0108\10\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\22\6\1\u0109\6\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\11\6\1\u010a\17\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\3\6\1\u010b\25\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\20\6\1\u010c\10\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\3\6\1\u010d\25\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\10\6\1\u010e\20\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\25\6\1\u010f\3\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\21\6\1\u0110\7\6\4\0\1\6\6\0\1\6"+ - "\13\0\5\6\7\0\7\6\4\0\22\6\1\u0111\6\6"+ - "\4\0\1\6\6\0\1\6\13\0\5\6\7\0\7\6"+ - "\4\0\5\6\1\u0112\23\6\27\0\5\u0113\7\0\4\u0113"+ - "\10\0\6\u0113\51\0\5\273\22\0\1\360\57\0\5\300"+ - "\7\0\4\300\7\0\1\361\6\300\26\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\1\6\1\u0114"+ - "\27\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\22\6\1\u0115\6\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\1\6\1\u0116"+ - "\27\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\15\6\1\u0117\13\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\13\6\1\u0118"+ - "\15\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\5\6\1\u0119\23\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\4\6\1\u011a"+ - "\24\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\13\6\1\u011b\15\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\14\6\1\u011c"+ - "\14\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\22\6\1\u011d\6\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\15\6\1\u011e"+ - "\13\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\6\6\1\u011f\22\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u0120"+ - "\23\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\7\6\1\u0121\21\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u0122"+ - "\6\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\3\6\1\u0123\25\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\3\6\1\u0124"+ - "\25\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\15\6\1\u0125\13\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\3\6\1\u0126"+ - "\25\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\22\6\1\u0127\6\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\10\6\1\u0128"+ - "\20\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\20\6\1\u0129\10\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\u012a"+ - "\7\6\4\0\1\6\6\0\1\6\13\0\5\6\7\0"+ - "\7\6\4\0\11\6\1\u012b\17\6\4\0\1\6\6\0"+ - "\1\6\13\0\5\6\7\0\7\6\4\0\11\6\1\u012c"+ - "\17\6\27\0\5\5\7\0\4\5\10\0\6\5\26\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\3\6\1\u012d\25\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\15\6\1\u012e\13\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\23\6\1\u012f\5\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\22\6\1\u0130\6\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\21\6\1\u0131\7\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\27\6\1\u0132\1\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\5\6\1\u0133\23\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\3\6\1\u0134\25\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\1\6\1\u0135\27\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\5\6\1\u0136\23\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\5\6\1\u0137\23\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\22\6\1\u0138\6\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\6\6\1\u0139\22\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\16\6\1\u013a\12\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\5\6\1\u013b\23\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\13\6\1\u013c\15\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\22\6\1\u013d\6\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\5\6\1\u013e\23\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\15\6\1\u013f\13\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\5\6\1\u0140\23\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\3\6\1\u0141\25\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\5\6\1\u0142\23\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\17\6\1\u0143\11\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\15\6\1\u0144\13\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\15\6\1\u0145\13\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\5\6\1\u0146\23\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\22\6\1\u0147\6\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\16\6\1\u0148\12\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\5\6\1\u0149\23\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\4\6\1\u014a\24\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\11\6\1\u014b\17\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\22\6\1\u014c\6\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\21\6\1\u014d\7\6\4\0\1\6\6\0\1\6\13\0"+ - "\5\6\7\0\7\6\4\0\6\6\1\u014e\22\6\4\0"+ - "\1\6\6\0\1\6\13\0\5\6\7\0\7\6\4\0"+ - "\30\6\1\u014f\4\0\1\6\6\0\1\6\13\0\5\6"+ - "\7\0\7\6\4\0\5\6\1\u0150\23\6\4\0\1\6"+ - "\6\0\1\6\13\0\5\6\7\0\7\6\4\0\4\6"+ - "\1\u0151\24\6\4\0"; + "\1\67\1\0\1\67\36\0\1\201\131\0\1\107\1\202"+ + "\13\0\1\107\1\202\1\107\27\0\17\203\1\204\72\203"+ + "\2\102\4\0\103\102\26\0\5\100\11\0\1\107\1\202"+ + "\13\0\1\107\1\202\1\107\54\0\4\105\14\0\1\111"+ + "\6\0\1\113\12\0\1\111\47\0\2\205\103\0\1\206"+ + "\1\0\1\206\2\0\5\207\103\0\1\210\1\0\5\211"+ + "\7\0\4\211\10\0\6\211\54\0\4\105\23\0\1\113"+ + "\62\0\5\114\13\0\1\111\6\0\1\115\12\0\1\111"+ + "\47\0\5\114\22\0\1\115\72\0\1\212\111\0\1\213"+ + "\1\214\53\0\1\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\21\6\1\215\7\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\216"+ + "\7\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\16\6\1\217\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\220"+ + "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\22\6\1\221\6\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\222"+ + "\1\223\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\1\6\1\224\27\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ + "\1\225\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\15\6\1\226\13\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\6\6"+ + "\1\227\22\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\23\6\1\230\5\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+ + "\1\231\7\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\23\6\1\232\5\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ + "\1\233\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\13\6\1\234\15\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\15\6"+ + "\1\235\13\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\16\6\1\236\12\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\20\6"+ + "\1\237\10\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\17\6\1\240\11\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+ + "\1\241\1\242\6\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\15\6\1\243\13\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\22\6\1\244\6\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\25\6\1\245\3\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\13\6\1\246\15\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\3\6\1\247\25\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\11\6\1\250\4\6\1\251\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\2\6\1\252"+ + "\26\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\22\6\1\253\6\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\16\6\1\254"+ + "\12\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\1\6\1\255\16\6\1\256\10\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\17\6\1\257\11\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\11\6\1\260\17\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\15\6\1\261\13\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\11\6\1\262\6\6\1\263"+ + "\10\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\1\6\1\264\21\6\1\265\3\6\1\266"+ + "\1\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\11\6\1\267\1\6\1\270\15\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\11\6\1\271\17\6\4\0\1\6\25\0\5\272\7\0"+ + "\4\272\10\0\6\272\14\0\1\175\26\0\1\176\10\0"+ + "\4\200\75\0\1\176\10\0\4\67\101\0\1\273\1\0"+ + "\1\273\2\0\5\274\60\0\17\203\1\275\111\203\1\275"+ + "\4\203\1\276\65\203\25\0\2\205\16\0\1\111\6\0"+ + "\1\277\12\0\1\111\47\0\5\207\105\0\5\207\11\0"+ + "\1\107\10\0\1\300\3\0\1\107\1\0\1\107\54\0"+ + "\5\301\7\0\4\301\10\0\6\301\52\0\1\302\1\0"+ + "\5\211\7\0\4\211\1\111\1\202\5\0\1\303\6\211"+ + "\4\0\1\111\3\0\1\202\53\0\1\304\54\0\1\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ + "\1\305\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\306\23\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+ + "\1\307\15\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\1\6\1\310\27\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\311\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\312\23\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\3\6"+ + "\1\313\25\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\20\6\1\314\10\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+ + "\1\315\7\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\21\6\1\316\1\317\6\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\1\6\1\320\27\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\2\6\1\321\26\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\5\6\1\322\23\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\14\6\1\323\14\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\5\6\1\324\23\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\21\6\1\265\7\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\1\6\1\325\27\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\1\6\1\326\27\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\13\6\1\327\2\6\1\330\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\331"+ + "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\5\6\1\332\23\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\7\6\1\333"+ + "\21\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\11\6\1\334\17\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\13\6\1\335"+ + "\15\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\12\6\1\336\16\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\24\6\1\337"+ + "\4\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\22\6\1\340\6\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\13\6\1\341"+ + "\15\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\23\6\1\342\5\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\20\6\1\343"+ + "\10\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\22\6\1\344\6\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\11\6\1\345"+ + "\17\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\5\6\1\346\23\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\347"+ + "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\3\6\1\350\25\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\351"+ + "\7\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\16\6\1\352\12\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\15\6\1\353"+ + "\13\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\5\6\1\354\23\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\4\6\1\355"+ + "\24\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\1\6\1\356\27\6\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\13\6\1\357"+ + "\15\6\4\0\1\6\25\0\5\360\7\0\4\360\10\0"+ + "\6\360\54\0\5\274\105\0\5\274\11\0\1\107\10\0"+ + "\1\361\3\0\1\107\1\0\1\107\27\0\17\203\1\275"+ + "\4\203\1\2\65\203\25\0\2\205\25\0\1\277\62\0"+ + "\5\207\22\0\1\300\62\0\5\301\7\0\4\301\1\0"+ + "\1\202\5\0\1\362\6\301\10\0\1\202\43\0\5\301"+ + "\7\0\4\301\1\0\1\202\6\0\6\301\10\0\1\202"+ + "\43\0\5\211\7\0\4\211\7\0\1\303\6\211\27\0"+ + "\1\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\20\6\1\363\10\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\20\6\1\364\10\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\5\6\1\365\23\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\12\6\1\366\16\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\10\6\1\367\20\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\21\6\1\370\7\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\22\6\1\371\6\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\11\6\1\372\17\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\23\6\1\373\5\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\13\6\1\374\15\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\15\6\1\375\13\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\13\6\1\376\15\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\22\6\1\377\6\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\5\6\1\u0100\23\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\20\6\1\u0101\10\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\1\6\1\u0102\27\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\20\6\1\u0103\10\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\24\6\1\u0104\4\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\1\6\1\u0105\27\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\1\6\1\u0106\27\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\5\6\1\u0107\23\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\11\6\1\u0108\17\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\20\6\1\u0109\10\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\22\6\1\u010a\6\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\11\6\1\u010b\17\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\3\6\1\u010c\25\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\20\6\1\u010d\10\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\3\6\1\u010e\25\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\10\6\1\u010f\20\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\25\6\1\u0110\3\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\21\6\1\u0111\7\6\4\0\2\6\10\0\1\6\13\0"+ + "\5\6\7\0\7\6\4\0\22\6\1\u0112\6\6\4\0"+ + "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+ + "\5\6\1\u0113\23\6\4\0\1\6\25\0\5\u0114\7\0"+ + "\4\u0114\10\0\6\u0114\54\0\5\274\22\0\1\361\62\0"+ + "\5\301\7\0\4\301\7\0\1\362\6\301\27\0\1\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ + "\1\u0115\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\22\6\1\u0116\6\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+ + "\1\u0117\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\15\6\1\u0118\13\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+ + "\1\u0119\15\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\u011a\23\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\4\6"+ + "\1\u011b\24\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\13\6\1\u011c\15\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\14\6"+ + "\1\u011d\14\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\22\6\1\u011e\6\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\15\6"+ + "\1\u011f\13\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\6\6\1\u0120\22\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\u0121\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\7\6\1\u0122\21\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ + "\1\u0123\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\3\6\1\u0124\25\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\3\6"+ + "\1\u0125\25\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\15\6\1\u0126\13\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\3\6"+ + "\1\u0127\25\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\22\6\1\u0128\6\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\10\6"+ + "\1\u0129\20\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\20\6\1\u012a\10\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+ + "\1\u012b\7\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\11\6\1\u012c\17\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\11\6"+ + "\1\u012d\17\6\4\0\1\6\25\0\5\5\7\0\4\5"+ + "\10\0\6\5\27\0\1\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\3\6\1\u012e\25\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\15\6"+ + "\1\u012f\13\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\23\6\1\u0130\5\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ + "\1\u0131\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\21\6\1\u0132\7\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\27\6"+ + "\1\u0133\1\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\u0134\23\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\3\6"+ + "\1\u0135\25\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\1\6\1\u0136\27\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\u0137\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\u0138\23\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ + "\1\u0139\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\6\6\1\u013a\22\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\16\6"+ + "\1\u013b\12\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\u013c\23\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+ + "\1\u013d\15\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\22\6\1\u013e\6\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\u013f\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\15\6\1\u0140\13\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\u0141\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\3\6\1\u0142\25\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\u0143\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\17\6\1\u0144\11\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\15\6"+ + "\1\u0145\13\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\15\6\1\u0146\13\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+ + "\1\u0147\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\22\6\1\u0148\6\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\16\6"+ + "\1\u0149\12\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\5\6\1\u014a\23\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\4\6"+ + "\1\u014b\24\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\11\6\1\u014c\17\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+ + "\1\u014d\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\21\6\1\u014e\7\6\4\0\2\6"+ + "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\6\6"+ + "\1\u014f\22\6\4\0\2\6\10\0\1\6\13\0\5\6"+ + "\7\0\7\6\4\0\30\6\1\u0150\4\0\2\6\10\0"+ + "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u0151"+ + "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+ + "\7\6\4\0\4\6\1\u0152\24\6\4\0\1\6"; private static int [] zzUnpackTrans() { - int [] result = new int[17892]; + int [] result = new int[18722]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -835,14 +796,14 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) { "\1\0\1\11\2\1\1\0\3\1\1\0\2\11\2\1"+ "\1\11\6\1\1\11\3\1\4\11\20\1\1\11\1\1"+ "\4\11\1\0\3\11\2\0\6\11\1\0\1\1\1\0"+ - "\1\11\2\1\1\0\1\11\1\0\1\11\2\0\1\1"+ - "\1\0\1\11\1\0\3\11\1\0\1\11\46\1\2\11"+ - "\1\0\1\11\2\0\1\11\3\0\1\1\3\0\1\1"+ - "\2\11\1\0\55\1\2\0\1\1\1\0\1\1\5\0"+ - "\1\11\53\1\3\0\41\1\1\0\76\1"; + "\1\1\1\11\2\1\1\0\1\11\1\0\1\11\2\0"+ + "\1\1\1\0\1\11\1\0\3\11\1\0\1\11\46\1"+ + "\2\11\1\0\1\11\2\0\1\11\3\0\1\1\3\0"+ + "\1\1\2\11\1\0\55\1\2\0\1\1\1\0\1\1"+ + "\5\0\1\11\53\1\3\0\41\1\1\0\76\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[337]; + int [] result = new int[338]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1263,517 +1224,522 @@ else if (zzAtEOF) { { } // fall through - case 104: break; + case 105: break; case 2: { return JavaToken.EXCLAMATIONMARK; } // fall through - case 105: break; + case 106: break; case 3: { return JavaToken.ID; } // fall through - case 106: break; + case 107: break; case 4: { return JavaToken.PERCENT; } // fall through - case 107: break; + case 108: break; case 5: { return JavaToken.ANDBIT; } // fall through - case 108: break; + case 109: break; case 6: { return JavaToken.PARENTHLEFT; } // fall through - case 109: break; + case 110: break; case 7: { return JavaToken.PARENTHRIGHT; } // fall through - case 110: break; + case 111: break; case 8: { return JavaToken.STAR; } // fall through - case 111: break; + case 112: break; case 9: { return JavaToken.PLUS; } // fall through - case 112: break; + case 113: break; case 10: { return JavaToken.COMMA; } // fall through - case 113: break; + case 114: break; case 11: { return JavaToken.MINUS; } // fall through - case 114: break; + case 115: break; case 12: { return JavaToken.DOT; } // fall through - case 115: break; + case 116: break; case 13: { return JavaToken.SLASH; } // fall through - case 116: break; + case 117: break; case 14: { return JavaToken.INTEGERLIT; } // fall through - case 117: break; + case 118: break; case 15: { return JavaToken.COLON; } // fall through - case 118: break; + case 119: break; case 16: { return JavaToken.SEMICOLON; } // fall through - case 119: break; + case 120: break; case 17: { return JavaToken.LT; } // fall through - case 120: break; + case 121: break; case 18: { return JavaToken.ASSIGN; } // fall through - case 121: break; + case 122: break; case 19: { return JavaToken.GT; } // fall through - case 122: break; + case 123: break; case 20: { return JavaToken.QUESTIONMARK; } // fall through - case 123: break; + case 124: break; case 21: { return JavaToken.AT; } // fall through - case 124: break; + case 125: break; case 22: { return JavaToken.BRACKETLEFT; } // fall through - case 125: break; + case 126: break; case 23: { return JavaToken.BRACKETRIGHT; } // fall through - case 126: break; + case 127: break; case 24: { return JavaToken.XORBIT; } // fall through - case 127: break; + case 128: break; case 25: { return JavaToken.CURLYLEFT; } // fall through - case 128: break; + case 129: break; case 26: { return JavaToken.ORBIT; } // fall through - case 129: break; + case 130: break; case 27: { return JavaToken.CURLYRIGHT; } // fall through - case 130: break; + case 131: break; case 28: { return JavaToken.TILDA; } // fall through - case 131: break; + case 132: break; case 29: { return JavaToken.NOTEQ; } // fall through - case 132: break; + case 133: break; case 30: { return JavaToken.STRINGLIT; } // fall through - case 133: break; + case 134: break; case 31: { return JavaToken.PERCENTASSIGN; } // fall through - case 134: break; + case 135: break; case 32: { return JavaToken.AND; } // fall through - case 135: break; + case 136: break; case 33: { return JavaToken.ANDASSIGN; } // fall through - case 136: break; + case 137: break; case 34: { return JavaToken.STARASSIGN; } // fall through - case 137: break; + case 138: break; case 35: { return JavaToken.PLUSPLUS; } // fall through - case 138: break; + case 139: break; case 36: { return JavaToken.PLUSASSIGN; } // fall through - case 139: break; + case 140: break; case 37: { return JavaToken.MINUSMINUS; } // fall through - case 140: break; + case 141: break; case 38: { return JavaToken.MINUSASSIGN; } // fall through - case 141: break; + case 142: break; case 39: { return JavaToken.ARROW; } // fall through - case 142: break; + case 143: break; case 40: { return JavaToken.FLOATINGLIT; } // fall through - case 143: break; + case 144: break; case 41: - { return JavaToken.SLASHASSIGN; + { /* DO NOTHING */ } // fall through - case 144: break; + case 145: break; case 42: - { return JavaToken.DOUBLECOLON; + { return JavaToken.SLASHASSIGN; } // fall through - case 145: break; + case 146: break; case 43: - { return JavaToken.LESSEQ; + { return JavaToken.DOUBLECOLON; } // fall through - case 146: break; + case 147: break; case 44: - { return JavaToken.EQ; + { return JavaToken.LESSEQ; } // fall through - case 147: break; + case 148: break; case 45: - { return JavaToken.GREATEQ; + { return JavaToken.EQ; } // fall through - case 148: break; + case 149: break; case 46: - { return JavaToken.XORASSIGN; + { return JavaToken.GREATEQ; } // fall through - case 149: break; + case 150: break; case 47: - { return JavaToken.DO; + { return JavaToken.XORASSIGN; } // fall through - case 150: break; + case 151: break; case 48: - { return JavaToken.IF; + { return JavaToken.DO; } // fall through - case 151: break; + case 152: break; case 49: - { return JavaToken.ORASSIGN; + { return JavaToken.IF; } // fall through - case 152: break; + case 153: break; case 50: - { return JavaToken.OR; + { return JavaToken.ORASSIGN; } // fall through - case 153: break; + case 154: break; case 51: - { return JavaToken.CHARLIT; + { return JavaToken.OR; } // fall through - case 154: break; + case 155: break; case 52: - { return JavaToken.ELLIPSIS; + { return JavaToken.CHARLIT; } // fall through - case 155: break; + case 156: break; case 53: - { return JavaToken.SHIFTLEFTASSIGN; + { return JavaToken.ELLIPSIS; } // fall through - case 156: break; + case 157: break; case 54: - { return JavaToken.SHIFTRIGHTASSIGN; + { return JavaToken.SHIFTLEFTASSIGN; } // fall through - case 157: break; + case 158: break; case 55: - { return JavaToken.FOR; + { return JavaToken.SHIFTRIGHTASSIGN; } // fall through - case 158: break; + case 159: break; case 56: - { return JavaToken.INT; + { return JavaToken.FOR; } // fall through - case 159: break; + case 160: break; case 57: - { return JavaToken.NEW; + { return JavaToken.INT; } // fall through - case 160: break; + case 161: break; case 58: - { return JavaToken.TRY; + { return JavaToken.NEW; } // fall through - case 161: break; + case 162: break; case 59: - { return JavaToken.USRIGHTSHIFTASSIGN; + { return JavaToken.TRY; } // fall through - case 162: break; + case 163: break; case 60: - { return JavaToken.BYTE; + { return JavaToken.USRIGHTSHIFTASSIGN; } // fall through - case 163: break; + case 164: break; case 61: - { return JavaToken.CASE; + { return JavaToken.BYTE; } // fall through - case 164: break; + case 165: break; case 62: - { return JavaToken.CHAR; + { return JavaToken.CASE; } // fall through - case 165: break; + case 166: break; case 63: - { return JavaToken.ELSE; + { return JavaToken.CHAR; } // fall through - case 166: break; + case 167: break; case 64: - { return JavaToken.ENUM; + { return JavaToken.ELSE; } // fall through - case 167: break; + case 168: break; case 65: - { return JavaToken.LONG; + { return JavaToken.ENUM; } // fall through - case 168: break; + case 169: break; case 66: - { return JavaToken.NULLLIT; + { return JavaToken.LONG; } // fall through - case 169: break; + case 170: break; case 67: - { return JavaToken.THIS; + { return JavaToken.NULLLIT; } // fall through - case 170: break; + case 171: break; case 68: - { return JavaToken.BOOLEANLIT; + { return JavaToken.THIS; } // fall through - case 171: break; + case 172: break; case 69: - { return JavaToken.VOID; + { return JavaToken.BOOLEANLIT; } // fall through - case 172: break; + case 173: break; case 70: - { return JavaToken.BREAK; + { return JavaToken.VOID; } // fall through - case 173: break; + case 174: break; case 71: - { return JavaToken.CATCH; + { return JavaToken.BREAK; } // fall through - case 174: break; + case 175: break; case 72: - { return JavaToken.CLASS; + { return JavaToken.CATCH; } // fall through - case 175: break; + case 176: break; case 73: - { return JavaToken.FINAL; + { return JavaToken.CLASS; } // fall through - case 176: break; + case 177: break; case 74: - { return JavaToken.FLOAT; + { return JavaToken.FINAL; } // fall through - case 177: break; + case 178: break; case 75: - { return JavaToken.SHORT; + { return JavaToken.FLOAT; } // fall through - case 178: break; + case 179: break; case 76: - { return JavaToken.SUPER; + { return JavaToken.SHORT; } // fall through - case 179: break; + case 180: break; case 77: - { return JavaToken.THROW; + { return JavaToken.SUPER; } // fall through - case 180: break; + case 181: break; case 78: - { return JavaToken.WHILE; + { return JavaToken.THROW; } // fall through - case 181: break; + case 182: break; case 79: - { return JavaToken.ASSERT; + { return JavaToken.WHILE; } // fall through - case 182: break; + case 183: break; case 80: - { return JavaToken.DOUBLE; + { return JavaToken.ASSERT; } // fall through - case 183: break; + case 184: break; case 81: - { return JavaToken.IMPORT; + { return JavaToken.DOUBLE; } // fall through - case 184: break; + case 185: break; case 82: - { return JavaToken.NATIVE; + { return JavaToken.IMPORT; } // fall through - case 185: break; + case 186: break; case 83: - { return JavaToken.PUBLIC; + { return JavaToken.NATIVE; } // fall through - case 186: break; + case 187: break; case 84: - { return JavaToken.RETURN; + { return JavaToken.PUBLIC; } // fall through - case 187: break; + case 188: break; case 85: - { return JavaToken.STATIC; + { return JavaToken.RETURN; } // fall through - case 188: break; + case 189: break; case 86: - { return JavaToken.SWITCH; + { return JavaToken.STATIC; } // fall through - case 189: break; + case 190: break; case 87: - { return JavaToken.THROWS; + { return JavaToken.SWITCH; } // fall through - case 190: break; + case 191: break; case 88: - { return JavaToken.BOOLEAN; + { return JavaToken.THROWS; } // fall through - case 191: break; + case 192: break; case 89: - { return JavaToken.DEFAULT; + { return JavaToken.BOOLEAN; } // fall through - case 192: break; + case 193: break; case 90: - { return JavaToken.EXTENDS; + { return JavaToken.DEFAULT; } // fall through - case 193: break; + case 194: break; case 91: - { return JavaToken.FINALLY; + { return JavaToken.EXTENDS; } // fall through - case 194: break; + case 195: break; case 92: - { return JavaToken.PACKAGE; + { return JavaToken.FINALLY; } // fall through - case 195: break; + case 196: break; case 93: - { return JavaToken.PRIVATE; + { return JavaToken.PACKAGE; } // fall through - case 196: break; + case 197: break; case 94: - { return JavaToken.ABSTRACT; + { return JavaToken.PRIVATE; } // fall through - case 197: break; + case 198: break; case 95: - { return JavaToken.CONTINUE; + { return JavaToken.ABSTRACT; } // fall through - case 198: break; + case 199: break; case 96: - { return JavaToken.STRICTFP; + { return JavaToken.CONTINUE; } // fall through - case 199: break; + case 200: break; case 97: - { return JavaToken.VOLATILE; + { return JavaToken.STRICTFP; } // fall through - case 200: break; + case 201: break; case 98: - { return JavaToken.INTERFACE; + { return JavaToken.VOLATILE; } // fall through - case 201: break; + case 202: break; case 99: - { return JavaToken.PROTECTED; + { return JavaToken.INTERFACE; } // fall through - case 202: break; + case 203: break; case 100: - { return JavaToken.TRANSIENT; + { return JavaToken.PROTECTED; } // fall through - case 203: break; + case 204: break; case 101: - { return JavaToken.IMPLEMENTS; + { return JavaToken.TRANSIENT; } // fall through - case 204: break; + case 205: break; case 102: - { return JavaToken.INSTANCEOF; + { return JavaToken.IMPLEMENTS; } // fall through - case 205: break; + case 206: break; case 103: + { return JavaToken.INSTANCEOF; + } + // fall through + case 207: break; + case 104: { return JavaToken.SYNCHRONIZED; } // fall through - case 206: break; + case 208: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/benchmarks/src/main/kotlin/org/Benchmarks.kt b/benchmarks/src/main/kotlin/org/Benchmarks.kt index 22ab8028d..e4827ea38 100644 --- a/benchmarks/src/main/kotlin/org/Benchmarks.kt +++ b/benchmarks/src/main/kotlin/org/Benchmarks.kt @@ -42,7 +42,7 @@ fun > getTokenStream(input: String, input while (true) { token = lexer.yylex() as JavaToken if (token == JavaToken.EOF) break - inputGraph.addEdge(vertexId, LinearInputLabel(Term(token)), ++vertexId) + inputGraph.addEdge(vertexId, LinearInputLabel(token), ++vertexId) } return inputGraph diff --git a/benchmarks/src/main/kotlin/org/Jmh.kt b/benchmarks/src/main/kotlin/org/Jmh.kt deleted file mode 100644 index 21e823a86..000000000 --- a/benchmarks/src/main/kotlin/org/Jmh.kt +++ /dev/null @@ -1,74 +0,0 @@ -package org//package jmh.kotlin -// -//import org.antlr.Java8Lexer -//import org.antlr.Java8Parser -//import org.antlr.v4.runtime.CharStreams -//import org.antlr.v4.runtime.CommonTokenStream -//import org.openjdk.jmh.annotations.* -//import org.openjdk.jmh.infra.Blackhole -//import org.openjdk.jmh.infra.Control -//import org.openjdk.jmh.results.format.ResultFormatType -//import org.openjdk.jmh.runner.Runner -//import org.openjdk.jmh.runner.options.OptionsBuilder -//import org.srcgll.Gll -//import org.srcgll.ReachabilityMode -//import org.srcgll.RecoveryMode -//import org.srcgll.lexer.JavaGrammar -//import org.srcgll.rsm.RsmState -//import java.io.File -//import java.util.concurrent.TimeUnit -// -////val pathToInput = "/home/hollowcoder/Programming/SRC/UCFS/src/jmh/resources/junit4SourcesProcessedErrorFree/" -// -//@State(Scope.Benchmark) -//open class JmhBenchmark { -// -// @State(Scope.Thread) -// open class AntlrState{ -// lateinit var file: File -// -// companion object { -// lateinit var sources: Iterator -// } -// -// @Setup(Level.Trial) -// fun prepare() { -// sources = File(pathToInput).walk().filter { it.isFile }.iterator() -// file = sources.next() -// } -// } -// -// @State(Scope.Thread) -// open class GllState{ -// lateinit var file: File -// -// lateinit var startStateJavaTokenized: RsmState -// -// companion object { -// lateinit var sources: Iterator -// } -// -// @Setup(Level.Trial) -// fun prepare() { -// startStateJavaTokenized = JavaGrammar().getRsm() -// sources = File(pathToInput).walk().filter { it.isFile }.iterator() -// file = sources.next() -// } -// } -// -// @Benchmark -// @OutputTimeUnit(TimeUnit.NANOSECONDS) -// fun measureAntlr(stateObject: AntlrState, blackhole: Blackhole) { -// val antlrParser = Java8Parser(CommonTokenStream(Java8Lexer(CharStreams.fromString(stateObject.file.readText())))) -// blackhole.consume(antlrParser.compilationUnit()) -// } -// -// @Benchmark -// @OutputTimeUnit(TimeUnit.NANOSECONDS) -// fun measureGll(stateObject: GllState, blackhole: Blackhole) { -// val inputGraph = getTokenStream(stateObject.file.readText()) -// val gll = Gll(stateObject.startStateJavaTokenized, inputGraph, recovery = RecoveryMode.ON, reachability = ReachabilityMode.REACHABILITY) -// -// blackhole.consume(gll.parse()) -// } -//} diff --git a/benchmarks/src/main/kotlin/org/Main.kt b/benchmarks/src/main/kotlin/org/Main.kt index de4272529..371506ceb 100644 --- a/benchmarks/src/main/kotlin/org/Main.kt +++ b/benchmarks/src/main/kotlin/org/Main.kt @@ -13,7 +13,25 @@ class Main { fun main(){ val startState = Java8().rsm val srcText: String = """ -package junit;""" +package junit.runner; + +/** + * This class defines the current version of JUnit + */ +public class Version { + private Version() { + // don't instantiate + } + + public static String id() { + return "4.12-SNAPSHOT"; + } + + public static void main(String[] args) { + System.out.println(id()); + } +} +""" val tokens = getTokenStream(srcText) val gll = Gll.gll( startState, @@ -24,5 +42,4 @@ package junit;""" val parseResult = gll.parse().first ?: throw Exception("File $srcText cant be parsed by online gll") writeSppfToDot(parseResult, "java7.dot") - //val efileContents = buildStringFromSppf(parseResult) } \ No newline at end of file diff --git a/benchmarks/src/main/kotlin/org/OnlineGllBench.kt b/benchmarks/src/main/kotlin/org/OnlineGllBench.kt index 1c98046ea..66ffa6d97 100644 --- a/benchmarks/src/main/kotlin/org/OnlineGllBench.kt +++ b/benchmarks/src/main/kotlin/org/OnlineGllBench.kt @@ -3,6 +3,8 @@ package org import kotlinx.benchmark.* import org.openjdk.jmh.annotations.Threads import org.ucfs.Java8 +import org.ucfs.input.LinearInput +import org.ucfs.input.LinearInputLabel import org.ucfs.parser.Gll import org.ucfs.sppf.buildStringFromSppf @@ -22,23 +24,23 @@ class OnlineGllBench { lateinit var fileContents: String val startState = Java8().rsm + lateinit var tokens: LinearInput @Setup fun prepare() { - val srcText: String = OnlineGllBench::class.java.classLoader + fileContents = OnlineGllBench::class.java.classLoader .getResource(fileName)?.readText() ?: throw Exception("File $fileName does not exists") + tokens = getTokenStream(fileContents) val gll = Gll.gll( startState, - getTokenStream(srcText) + tokens ) - val parseResult = gll.parse().first ?: throw Exception("File $fileName cant be parsed by online gll") - fileContents = buildStringFromSppf(parseResult) + gll.parse().first ?: throw Exception("File $fileName cant be parsed by online gll") } @Benchmark fun measureGll(blackhole: Blackhole) { - val inputGraph = getTokenStream(fileContents) - val gll = Gll.gll(startState, inputGraph) + val gll = Gll.gll(startState, getTokenStream(fileContents)) blackhole.consume(gll.parse()) } } diff --git a/benchmarks/src/main/java/org/ucfs/Java8.kt b/benchmarks/src/main/kotlin/org/ucfs/Java8.kt similarity index 100% rename from benchmarks/src/main/java/org/ucfs/Java8.kt rename to benchmarks/src/main/kotlin/org/ucfs/Java8.kt diff --git a/solver/src/main/kotlin/org/ucfs/descriptors/Descriptor.kt b/solver/src/main/kotlin/org/ucfs/descriptors/Descriptor.kt index 1ec7648a1..90bc3c8dd 100644 --- a/solver/src/main/kotlin/org/ucfs/descriptors/Descriptor.kt +++ b/solver/src/main/kotlin/org/ucfs/descriptors/Descriptor.kt @@ -46,6 +46,10 @@ open class Descriptor( return true } + + override fun toString(): String { + return "Descriptor(${rsmState.nonterminal}, inputPosition=$inputPosition)" + } } diff --git a/solver/src/main/kotlin/org/ucfs/input/IInputGraph.kt b/solver/src/main/kotlin/org/ucfs/input/IInputGraph.kt index 73f5fe9e1..688b5d1d9 100644 --- a/solver/src/main/kotlin/org/ucfs/input/IInputGraph.kt +++ b/solver/src/main/kotlin/org/ucfs/input/IInputGraph.kt @@ -13,6 +13,10 @@ import org.ucfs.sppf.node.SppfNode * @param LabelType - type of label on edges in input graph */ interface IInputGraph { + fun log(msg: String) { + // println(msg) + } + /** * Collection of all vertices in graph */ @@ -123,14 +127,18 @@ interface IInputGraph { val inputPosition = descriptor.inputPosition val terminalEdges = rsmState.terminalEdges val nonterminalEdges = rsmState.nonterminalEdges - + log("\n$descriptor") for (inputEdge in ctx.input.getEdges(inputPosition)) { if (inputEdge.label.terminal == null) { + log("Epsilon terminal") handleTerminalOrEpsilonEdge(descriptor, sppfNode, null, descriptor.rsmState, inputEdge.head, 0) continue } + log("Compare terminal: current ${inputEdge.label.terminal}$") for ((edgeTerminal, targetStates) in terminalEdges) { + log("edgeTerminal ${edgeTerminal}$") if (inputEdge.label.terminal == edgeTerminal) { + log("EQUALS!") for (target in targetStates) { handleTerminalOrEpsilonEdge(descriptor, sppfNode, edgeTerminal, target, inputEdge.head, 0) } diff --git a/solver/src/main/kotlin/org/ucfs/parser/IGll.kt b/solver/src/main/kotlin/org/ucfs/parser/IGll.kt index 1f4435a78..4f3a04843 100644 --- a/solver/src/main/kotlin/org/ucfs/parser/IGll.kt +++ b/solver/src/main/kotlin/org/ucfs/parser/IGll.kt @@ -100,7 +100,11 @@ interface IGll { inputPosition: VertexType, ): GssNode { val newNode = - getOrCreateGssNode(nonterminal, inputPosition, weight = gssNode.minWeightOfLeftPart + (sppfNode?.weight ?: 0)) + getOrCreateGssNode( + nonterminal, + inputPosition, + weight = gssNode.minWeightOfLeftPart + (sppfNode?.weight ?: 0) + ) if (newNode.addEdge(rsmState, sppfNode, gssNode)) { if (ctx.poppedGssNodes.containsKey(newNode)) {