001
002 //----------------------------------------------------
003 // The following code was generated by CUP v0.10k
004 // Tue Aug 05 08:42:41 GMT-08:00 2008
005 //----------------------------------------------------
006
007 package mondrian.olap;
008
009 import java_cup.runtime.*;
010 import java.util.*;
011 import mondrian.resource.MondrianResource;
012 import mondrian.mdx.*;
013
014 /** CUP v0.10k generated parser.
015 * @version Tue Aug 05 08:42:41 GMT-08:00 2008
016 */
017 public class Parser extends java_cup.runtime.lr_parser {
018
019 /** Default constructor. */
020 public Parser() {super();}
021
022 /** Constructor which sets the default scanner. */
023 public Parser(java_cup.runtime.Scanner s) {super(s);}
024
025 /** Production table. */
026 protected static final short _production_table[][] =
027 unpackFromStrings(new String[] {
028 "\000\176\000\002\002\004\000\002\037\003\000\002\041" +
029 "\003\000\002\040\003\000\002\040\003\000\002\036\003" +
030 "\000\002\036\003\000\002\035\003\000\002\035\003\000" +
031 "\002\026\003\000\002\026\005\000\002\025\003\000\002" +
032 "\025\005\000\002\027\003\000\002\017\003\000\002\017" +
033 "\005\000\002\017\005\000\002\016\003\000\002\016\005" +
034 "\000\002\015\003\000\002\015\004\000\002\014\003\000" +
035 "\002\014\005\000\002\014\005\000\002\014\005\000\002" +
036 "\014\005\000\002\014\005\000\002\014\006\000\002\014" +
037 "\005\000\002\014\006\000\002\013\003\000\002\013\005" +
038 "\000\002\013\005\000\002\013\005\000\002\012\003\000" +
039 "\002\012\005\000\002\012\005\000\002\010\003\000\002" +
040 "\010\004\000\002\010\004\000\002\021\003\000\002\021" +
041 "\003\000\002\021\003\000\002\021\005\000\002\021\005" +
042 "\000\002\021\005\000\002\021\010\000\002\021\006\000" +
043 "\002\021\010\000\002\021\005\000\002\021\005\000\002" +
044 "\021\003\000\002\021\003\000\002\004\007\000\002\020" +
045 "\002\000\002\020\003\000\002\071\002\000\002\071\004" +
046 "\000\002\073\006\000\002\005\002\000\002\005\004\000" +
047 "\002\034\003\000\002\034\003\000\002\034\003\000\002" +
048 "\034\003\000\002\034\003\000\002\034\003\000\002\006" +
049 "\005\000\002\006\003\000\002\007\003\000\002\007\002" +
050 "\000\002\064\002\000\002\064\003\000\002\063\003\000" +
051 "\002\063\005\000\002\024\003\000\002\024\004\000\002" +
052 "\023\011\000\002\072\002\000\002\072\004\000\002\055" +
053 "\002\000\002\055\003\000\002\054\003\000\002\054\005" +
054 "\000\002\022\002\000\002\022\004\000\002\057\002\000" +
055 "\002\057\003\000\002\065\003\000\002\065\004\000\002" +
056 "\044\003\000\002\044\003\000\002\042\007\000\002\042" +
057 "\007\000\002\060\002\000\002\060\004\000\002\066\003" +
058 "\000\002\066\005\000\002\031\003\000\002\045\005\000" +
059 "\002\043\006\000\002\043\006\000\002\032\003\000\002" +
060 "\003\007\000\002\003\007\000\002\053\002\000\002\053" +
061 "\004\000\002\062\002\000\002\062\003\000\002\033\003" +
062 "\000\002\074\003\000\002\074\006\000\002\061\005\000" +
063 "\002\050\002\000\002\050\003\000\002\067\003\000\002" +
064 "\067\005\000\002\051\003\000\002\030\003\000\002\011" +
065 "\003\000\002\056\005\000\002\046\002\000\002\046\003" +
066 "\000\002\070\003\000\002\070\005\000\002\047\003" });
067
068 /** Access to production table. */
069 public short[][] production_table() {return _production_table;}
070
071 /** Parse-action table. */
072 protected static final short[][] _action_table =
073 unpackFromStrings(new String[] {
074 "\000\303\000\010\031\uffb3\037\005\040\007\001\002\000" +
075 "\004\002\uffb6\001\002\000\006\022\257\032\256\001\002" +
076 "\000\004\002\252\001\002\000\036\007\050\010\031\012" +
077 "\040\024\025\025\053\030\033\052\027\054\026\056\046" +
078 "\060\022\064\037\065\030\066\043\070\034\001\002\000" +
079 "\004\031\011\001\002\000\042\007\uff98\010\uff98\012\uff98" +
080 "\016\uffb1\023\015\024\uff98\025\uff98\030\uff98\052\uff98\054" +
081 "\uff98\056\uff98\060\uff98\064\uff98\065\uff98\066\uff98\070\uff98" +
082 "\001\002\000\004\016\227\001\002\000\036\007\050\010" +
083 "\031\012\040\024\025\025\053\030\033\052\027\054\026" +
084 "\056\046\060\022\064\037\065\030\066\043\070\034\001" +
085 "\002\000\006\016\uffaf\044\020\001\002\000\004\014\017" +
086 "\001\002\000\004\016\uffb0\001\002\000\036\007\uff97\010" +
087 "\uff97\012\uff97\024\uff97\025\uff97\030\uff97\052\uff97\054\uff97" +
088 "\056\uff97\060\uff97\064\uff97\065\uff97\066\uff97\070\uff97\001" +
089 "\002\000\040\007\uff98\010\uff98\012\uff98\023\015\024\uff98" +
090 "\025\uff98\030\uff98\052\uff98\054\uff98\056\uff98\060\uff98\064" +
091 "\uff98\065\uff98\066\uff98\070\uff98\001\002\000\004\016\uffae" +
092 "\001\002\000\030\007\050\010\031\012\040\025\053\030" +
093 "\033\052\027\054\026\064\037\065\030\066\043\070\034" +
094 "\001\002\000\116\002\uffd7\004\uffd7\005\uffd7\011\uffd7\012" +
095 "\uffd7\013\uffd7\015\uffd7\017\uffd7\020\uffd7\021\uffd7\022\uffd7" +
096 "\024\uffd7\026\uffd7\027\uffd7\030\uffd7\031\uffd7\032\uffd7\033" +
097 "\uffd7\034\uffd7\036\uffd7\041\uffd7\042\ufff6\043\uffd7\044\uffd7" +
098 "\045\uffd7\046\uffd7\047\uffd7\050\uffd7\051\uffd7\053\uffd7\054" +
099 "\ufff6\055\uffd7\056\uffd7\057\uffd7\060\uffd7\061\uffd7\062\uffd7" +
100 "\063\uffd7\001\002\000\112\002\uffcd\004\uffcd\005\uffcd\011" +
101 "\uffcd\012\uffcd\013\uffcd\015\uffcd\017\uffcd\020\uffcd\021\uffcd" +
102 "\022\uffcd\024\uffcd\026\uffcd\027\uffcd\030\uffcd\031\uffcd\032" +
103 "\uffcd\033\uffcd\034\uffcd\036\uffcd\041\uffcd\043\uffcd\044\uffcd" +
104 "\045\uffcd\046\uffcd\047\uffcd\050\uffcd\051\uffcd\053\uffcd\055" +
105 "\uffcd\056\uffcd\057\uffcd\060\uffcd\061\uffcd\062\uffcd\063\uffcd" +
106 "\001\002\000\036\007\050\010\031\012\040\024\025\025" +
107 "\053\030\033\052\027\054\026\056\046\060\022\064\037" +
108 "\065\030\066\043\070\034\001\002\000\040\007\050\010" +
109 "\031\012\040\024\025\025\053\030\033\044\uffbb\052\027" +
110 "\054\026\056\046\060\022\064\037\065\030\066\043\070" +
111 "\034\001\002\000\042\007\050\010\031\012\040\024\025" +
112 "\025\053\030\033\044\uffbb\052\027\054\026\056\046\060" +
113 "\022\061\uffba\064\037\065\030\066\043\070\034\001\002" +
114 "\000\122\002\ufffe\004\ufffe\005\ufffe\011\ufffe\012\ufffe\013" +
115 "\ufffe\015\ufffe\016\ufffe\017\ufffe\020\ufffe\021\ufffe\022\ufffe" +
116 "\024\ufffe\026\ufffe\027\ufffe\030\ufffe\031\ufffe\032\ufffe\033" +
117 "\ufffe\034\ufffe\035\ufffe\036\ufffe\041\ufffe\042\ufffe\043\ufffe" +
118 "\044\ufffe\045\ufffe\046\ufffe\047\ufffe\050\ufffe\051\ufffe\053" +
119 "\ufffe\054\ufffe\055\ufffe\056\ufffe\057\ufffe\060\ufffe\061\ufffe" +
120 "\062\ufffe\063\ufffe\001\002\000\004\054\214\001\002\000" +
121 "\006\042\207\054\210\001\002\000\122\002\ufff9\004\ufff9" +
122 "\005\ufff9\011\ufff9\012\ufff9\013\ufff9\015\ufff9\016\ufff9\017" +
123 "\ufff9\020\ufff9\021\ufff9\022\ufff9\024\ufff9\026\ufff9\027\ufff9" +
124 "\030\ufff9\031\ufff9\032\ufff9\033\ufff9\034\ufff9\035\ufff9\036" +
125 "\ufff9\041\ufff9\042\ufff9\043\ufff9\044\ufff9\045\ufff9\046\ufff9" +
126 "\047\ufff9\050\ufff9\051\ufff9\053\ufff9\054\ufff9\055\ufff9\056" +
127 "\ufff9\057\ufff9\060\ufff9\061\ufff9\062\ufff9\063\ufff9\001\002" +
128 "\000\112\002\uffd9\004\uffd9\005\uffd9\011\uffd9\012\uffd9\013" +
129 "\uffd9\015\uffd9\017\uffd9\020\uffd9\021\uffd9\022\uffd9\024\uffd9" +
130 "\026\uffd9\027\uffd9\030\uffd9\031\uffd9\032\uffd9\033\uffd9\034" +
131 "\uffd9\036\uffd9\041\uffd9\043\uffd9\044\uffd9\045\uffd9\046\uffd9" +
132 "\047\uffd9\050\uffd9\051\uffd9\053\uffd9\055\uffd9\056\uffd9\057" +
133 "\uffd9\060\uffd9\061\uffd9\062\uffd9\063\uffd9\001\002\000\012" +
134 "\012\162\026\uff96\030\uff90\043\074\001\002\000\040\002" +
135 "\uffbd\005\uffbd\011\uffbd\012\uffbd\022\uffbd\026\uffbd\027\076" +
136 "\030\uffbd\031\uffbd\032\uffbd\036\077\043\uffbd\044\uffbd\061" +
137 "\uffbd\062\uffbd\001\002\000\112\002\uffd8\004\uffd8\005\uffd8" +
138 "\011\uffd8\012\uffd8\013\uffd8\015\uffd8\017\uffd8\020\uffd8\021" +
139 "\uffd8\022\uffd8\024\uffd8\026\uffd8\027\uffd8\030\uffd8\031\uffd8" +
140 "\032\uffd8\033\uffd8\034\uffd8\036\uffd8\041\uffd8\043\uffd8\044" +
141 "\uffd8\045\uffd8\046\uffd8\047\uffd8\050\uffd8\051\uffd8\053\uffd8" +
142 "\055\uffd8\056\uffd8\057\uffd8\060\uffd8\061\uffd8\062\uffd8\063" +
143 "\uffd8\001\002\000\122\002\ufffa\004\ufffa\005\ufffa\011\ufffa" +
144 "\012\ufffa\013\ufffa\015\ufffa\016\ufffa\017\ufffa\020\ufffa\021" +
145 "\ufffa\022\ufffa\024\ufffa\026\ufffa\027\ufffa\030\ufffa\031\ufffa" +
146 "\032\ufffa\033\ufffa\034\ufffa\035\ufffa\036\ufffa\041\ufffa\042" +
147 "\ufffa\043\ufffa\044\ufffa\045\ufffa\046\ufffa\047\ufffa\050\ufffa" +
148 "\051\ufffa\053\ufffa\054\ufffa\055\ufffa\056\ufffa\057\ufffa\060" +
149 "\ufffa\061\ufffa\062\ufffa\063\ufffa\001\002\000\110\002\uffdf" +
150 "\004\uffdf\005\uffdf\011\uffdf\012\uffdf\013\uffdf\015\uffdf\017" +
151 "\uffdf\020\uffdf\021\uffdf\022\uffdf\024\uffdf\026\uffdf\027\uffdf" +
152 "\030\uffdf\031\uffdf\032\uffdf\033\uffdf\034\uffdf\036\uffdf\041" +
153 "\uffdf\043\uffdf\044\uffdf\045\uffdf\047\uffdf\050\uffdf\051\uffdf" +
154 "\053\uffdf\055\uffdf\056\uffdf\057\uffdf\060\uffdf\061\uffdf\062" +
155 "\uffdf\063\uffdf\001\002\000\110\002\uffe3\004\uffe3\005\uffe3" +
156 "\011\uffe3\012\uffe3\013\uffe3\015\uffe3\017\uffe3\020\uffe3\021" +
157 "\uffe3\022\uffe3\024\uffe3\026\uffe3\027\uffe3\030\uffe3\031\uffe3" +
158 "\032\uffe3\033\uffe3\034\uffe3\036\uffe3\041\111\043\uffe3\044" +
159 "\uffe3\045\uffe3\047\uffe3\050\uffe3\051\uffe3\053\uffe3\055\uffe3" +
160 "\056\uffe3\057\uffe3\060\uffe3\061\uffe3\062\uffe3\063\112\001" +
161 "\002\000\122\002\000\004\000\005\000\011\000\012\000" +
162 "\013\000\015\000\016\000\017\000\020\000\021\000\022" +
163 "\000\024\000\026\000\027\000\030\000\031\000\032\000" +
164 "\033\000\034\000\035\000\036\000\041\000\042\000\043" +
165 "\000\044\000\045\000\046\000\047\000\050\000\051\000" +
166 "\053\000\054\000\055\000\056\000\057\000\060\000\061" +
167 "\000\062\000\063\000\001\002\000\052\002\ufff3\004\101" +
168 "\005\ufff3\011\ufff3\012\ufff3\013\ufff3\015\ufff3\022\ufff3\026" +
169 "\ufff3\027\ufff3\030\ufff3\031\ufff3\032\ufff3\033\ufff3\034\ufff3" +
170 "\036\ufff3\043\ufff3\044\ufff3\061\ufff3\062\ufff3\001\002\000" +
171 "\052\002\ufff0\004\ufff0\005\ufff0\011\ufff0\012\ufff0\013\ufff0" +
172 "\015\ufff0\022\ufff0\026\ufff0\027\ufff0\030\ufff0\031\ufff0\032" +
173 "\ufff0\033\ufff0\034\ufff0\036\ufff0\043\ufff0\044\ufff0\061\ufff0" +
174 "\062\ufff0\001\002\000\030\007\050\010\031\012\040\025" +
175 "\053\030\033\052\027\054\026\064\037\065\030\066\043" +
176 "\070\034\001\002\000\076\002\uffee\004\uffee\005\uffee\011" +
177 "\uffee\012\uffee\013\uffee\015\uffee\017\133\020\145\021\142" +
178 "\022\uffee\024\141\026\uffee\027\uffee\030\uffee\031\uffee\032" +
179 "\uffee\033\uffee\034\uffee\036\uffee\043\uffee\044\uffee\047\136" +
180 "\050\135\051\140\053\137\055\144\057\143\061\uffee\062" +
181 "\uffee\001\002\000\044\007\050\010\031\012\040\013\uffcb" +
182 "\015\uffcb\024\025\025\053\030\033\034\uffcb\052\027\054" +
183 "\026\056\046\060\022\064\037\065\030\066\043\070\034" +
184 "\001\002\000\104\002\uffec\004\uffec\005\uffec\011\uffec\012" +
185 "\uffec\013\uffec\015\uffec\017\uffec\020\uffec\021\uffec\022\uffec" +
186 "\024\uffec\026\uffec\027\uffec\030\uffec\031\uffec\032\uffec\033" +
187 "\uffec\034\uffec\036\uffec\043\uffec\044\uffec\045\106\047\uffec" +
188 "\050\uffec\051\uffec\053\uffec\055\uffec\056\107\057\uffec\060" +
189 "\105\061\uffec\062\uffec\001\002\000\112\002\uffdc\004\uffdc" +
190 "\005\uffdc\011\uffdc\012\uffdc\013\uffdc\015\uffdc\017\uffdc\020" +
191 "\uffdc\021\uffdc\022\uffdc\024\uffdc\026\uffdc\027\uffdc\030\uffdc" +
192 "\031\uffdc\032\uffdc\033\uffdc\034\uffdc\036\uffdc\041\uffdc\043" +
193 "\uffdc\044\uffdc\045\uffdc\046\057\047\uffdc\050\uffdc\051\uffdc" +
194 "\053\uffdc\055\uffdc\056\uffdc\057\uffdc\060\uffdc\061\uffdc\062" +
195 "\uffdc\063\uffdc\001\002\000\112\002\uffce\004\uffce\005\uffce" +
196 "\011\uffce\012\uffce\013\uffce\015\uffce\017\uffce\020\uffce\021" +
197 "\uffce\022\uffce\024\uffce\026\uffce\027\uffce\030\uffce\031\uffce" +
198 "\032\uffce\033\uffce\034\uffce\036\uffce\041\uffce\043\uffce\044" +
199 "\uffce\045\uffce\046\uffce\047\uffce\050\uffce\051\uffce\053\uffce" +
200 "\055\uffce\056\uffce\057\uffce\060\uffce\061\uffce\062\uffce\063" +
201 "\uffce\001\002\000\122\002\ufffd\004\ufffd\005\ufffd\011\ufffd" +
202 "\012\ufffd\013\ufffd\015\ufffd\016\ufffd\017\ufffd\020\ufffd\021" +
203 "\ufffd\022\ufffd\024\ufffd\026\ufffd\027\ufffd\030\ufffd\031\ufffd" +
204 "\032\ufffd\033\ufffd\034\ufffd\035\ufffd\036\ufffd\041\ufffd\042" +
205 "\ufffd\043\ufffd\044\ufffd\045\ufffd\046\ufffd\047\ufffd\050\ufffd" +
206 "\051\ufffd\053\ufffd\054\ufffd\055\ufffd\056\ufffd\057\ufffd\060" +
207 "\ufffd\061\ufffd\062\ufffd\063\ufffd\001\002\000\122\002\ufffc" +
208 "\004\ufffc\005\ufffc\011\ufffc\012\ufffc\013\ufffc\015\ufffc\016" +
209 "\ufffc\017\ufffc\020\ufffc\021\ufffc\022\ufffc\024\ufffc\026\ufffc" +
210 "\027\ufffc\030\ufffc\031\ufffc\032\ufffc\033\ufffc\034\ufffc\035" +
211 "\ufffc\036\ufffc\041\ufffc\042\ufffc\043\ufffc\044\ufffc\045\ufffc" +
212 "\046\ufffc\047\ufffc\050\ufffc\051\ufffc\053\ufffc\054\ufffc\055" +
213 "\ufffc\056\ufffc\057\ufffc\060\ufffc\061\ufffc\062\ufffc\063\ufffc" +
214 "\001\002\000\122\002\ufffb\004\ufffb\005\ufffb\011\ufffb\012" +
215 "\ufffb\013\ufffb\015\ufffb\016\ufffb\017\ufffb\020\ufffb\021\ufffb" +
216 "\022\ufffb\024\ufffb\026\ufffb\027\ufffb\030\ufffb\031\ufffb\032" +
217 "\ufffb\033\ufffb\034\ufffb\035\ufffb\036\ufffb\041\ufffb\042\ufffb" +
218 "\043\ufffb\044\ufffb\045\ufffb\046\ufffb\047\ufffb\050\ufffb\051" +
219 "\ufffb\053\ufffb\054\ufffb\055\ufffb\056\ufffb\057\ufffb\060\ufffb" +
220 "\061\ufffb\062\ufffb\063\ufffb\001\002\000\014\012\040\030" +
221 "\033\065\030\066\043\067\064\001\002\000\112\002\uffd4" +
222 "\004\uffd4\005\uffd4\011\uffd4\012\uffd4\013\uffd4\015\uffd4\017" +
223 "\uffd4\020\uffd4\021\uffd4\022\uffd4\024\uffd4\026\uffd4\027\uffd4" +
224 "\030\uffd4\031\uffd4\032\uffd4\033\uffd4\034\uffd4\036\uffd4\041" +
225 "\uffd4\043\uffd4\044\uffd4\045\uffd4\046\uffd4\047\uffd4\050\uffd4" +
226 "\051\uffd4\053\uffd4\055\uffd4\056\uffd4\057\uffd4\060\uffd4\061" +
227 "\uffd4\062\uffd4\063\uffd4\001\002\000\004\054\065\001\002" +
228 "\000\114\002\uffd6\004\uffd6\005\uffd6\011\uffd6\012\uffd6\013" +
229 "\uffd6\015\uffd6\017\uffd6\020\uffd6\021\uffd6\022\uffd6\024\uffd6" +
230 "\026\uffd6\027\uffd6\030\uffd6\031\uffd6\032\uffd6\033\uffd6\034" +
231 "\uffd6\036\uffd6\041\uffd6\043\uffd6\044\uffd6\045\uffd6\046\uffd6" +
232 "\047\uffd6\050\uffd6\051\uffd6\053\uffd6\054\ufffc\055\uffd6\056" +
233 "\uffd6\057\uffd6\060\uffd6\061\uffd6\062\uffd6\063\uffd6\001\002" +
234 "\000\114\002\uffd5\004\uffd5\005\uffd5\011\uffd5\012\uffd5\013" +
235 "\uffd5\015\uffd5\017\uffd5\020\uffd5\021\uffd5\022\uffd5\024\uffd5" +
236 "\026\uffd5\027\uffd5\030\uffd5\031\uffd5\032\uffd5\033\uffd5\034" +
237 "\uffd5\036\uffd5\041\uffd5\043\uffd5\044\uffd5\045\uffd5\046\uffd5" +
238 "\047\uffd5\050\uffd5\051\uffd5\053\uffd5\054\ufffb\055\uffd5\056" +
239 "\uffd5\057\uffd5\060\uffd5\061\uffd5\062\uffd5\063\uffd5\001\002" +
240 "\000\112\002\uffff\004\uffff\005\uffff\011\uffff\012\uffff\013" +
241 "\uffff\015\uffff\017\uffff\020\uffff\021\uffff\022\uffff\024\uffff" +
242 "\026\uffff\027\uffff\030\uffff\031\uffff\032\uffff\033\uffff\034" +
243 "\uffff\036\uffff\041\uffff\043\uffff\044\uffff\045\uffff\046\uffff" +
244 "\047\uffff\050\uffff\051\uffff\053\uffff\055\uffff\056\uffff\057" +
245 "\uffff\060\uffff\061\uffff\062\uffff\063\uffff\001\002\000\042" +
246 "\007\050\010\031\012\040\024\025\025\053\030\033\044" +
247 "\uffbb\052\027\054\026\056\046\060\022\062\uffba\064\037" +
248 "\065\030\066\043\070\034\001\002\000\004\062\104\001" +
249 "\002\000\006\061\uffb9\062\uffb9\001\002\000\012\043\074" +
250 "\044\uffbc\061\uffb8\062\uffb8\001\002\000\004\044\072\001" +
251 "\002\000\040\007\050\010\031\012\040\024\025\025\053" +
252 "\030\033\044\uffbb\052\027\054\026\056\046\060\022\064" +
253 "\037\065\030\066\043\070\034\001\002\000\006\061\uffb7" +
254 "\062\uffb7\001\002\000\036\007\050\010\031\012\040\024" +
255 "\025\025\053\030\033\052\027\054\026\056\046\060\022" +
256 "\064\037\065\030\066\043\070\034\001\002\000\040\002" +
257 "\uffbe\005\uffbe\011\uffbe\012\uffbe\022\uffbe\026\uffbe\027\076" +
258 "\030\uffbe\031\uffbe\032\uffbe\036\077\043\uffbe\044\uffbe\061" +
259 "\uffbe\062\uffbe\001\002\000\036\007\050\010\031\012\040" +
260 "\024\025\025\053\030\033\052\027\054\026\056\046\060" +
261 "\022\064\037\065\030\066\043\070\034\001\002\000\036" +
262 "\007\050\010\031\012\040\024\025\025\053\030\033\052" +
263 "\027\054\026\056\046\060\022\064\037\065\030\066\043" +
264 "\070\034\001\002\000\052\002\ufff1\004\101\005\ufff1\011" +
265 "\ufff1\012\ufff1\013\ufff1\015\ufff1\022\ufff1\026\ufff1\027\ufff1" +
266 "\030\ufff1\031\ufff1\032\ufff1\033\ufff1\034\ufff1\036\ufff1\043" +
267 "\ufff1\044\ufff1\061\ufff1\062\ufff1\001\002\000\036\007\050" +
268 "\010\031\012\040\024\025\025\053\030\033\052\027\054" +
269 "\026\056\046\060\022\064\037\065\030\066\043\070\034" +
270 "\001\002\000\052\002\uffef\004\uffef\005\uffef\011\uffef\012" +
271 "\uffef\013\uffef\015\uffef\022\uffef\026\uffef\027\uffef\030\uffef" +
272 "\031\uffef\032\uffef\033\uffef\034\uffef\036\uffef\043\uffef\044" +
273 "\uffef\061\uffef\062\uffef\001\002\000\052\002\ufff2\004\101" +
274 "\005\ufff2\011\ufff2\012\ufff2\013\ufff2\015\ufff2\022\ufff2\026" +
275 "\ufff2\027\ufff2\030\ufff2\031\ufff2\032\ufff2\033\ufff2\034\ufff2" +
276 "\036\ufff2\043\ufff2\044\ufff2\061\ufff2\062\ufff2\001\002\000" +
277 "\112\002\uffd3\004\uffd3\005\uffd3\011\uffd3\012\uffd3\013\uffd3" +
278 "\015\uffd3\017\uffd3\020\uffd3\021\uffd3\022\uffd3\024\uffd3\026" +
279 "\uffd3\027\uffd3\030\uffd3\031\uffd3\032\uffd3\033\uffd3\034\uffd3" +
280 "\036\uffd3\041\uffd3\043\uffd3\044\uffd3\045\uffd3\046\uffd3\047" +
281 "\uffd3\050\uffd3\051\uffd3\053\uffd3\055\uffd3\056\uffd3\057\uffd3" +
282 "\060\uffd3\061\uffd3\062\uffd3\063\uffd3\001\002\000\034\007" +
283 "\050\010\031\012\040\025\053\030\033\052\027\054\026" +
284 "\056\046\060\022\064\037\065\030\066\043\070\034\001" +
285 "\002\000\034\007\050\010\031\012\040\025\053\030\033" +
286 "\052\027\054\026\056\046\060\022\064\037\065\030\066" +
287 "\043\070\034\001\002\000\034\007\050\010\031\012\040" +
288 "\025\053\030\033\052\027\054\026\056\046\060\022\064" +
289 "\037\065\030\066\043\070\034\001\002\000\110\002\uffe1" +
290 "\004\uffe1\005\uffe1\011\uffe1\012\uffe1\013\uffe1\015\uffe1\017" +
291 "\uffe1\020\uffe1\021\uffe1\022\uffe1\024\uffe1\026\uffe1\027\uffe1" +
292 "\030\uffe1\031\uffe1\032\uffe1\033\uffe1\034\uffe1\036\uffe1\041" +
293 "\111\043\uffe1\044\uffe1\045\uffe1\047\uffe1\050\uffe1\051\uffe1" +
294 "\053\uffe1\055\uffe1\056\uffe1\057\uffe1\060\uffe1\061\uffe1\062" +
295 "\uffe1\063\112\001\002\000\034\007\050\010\031\012\040" +
296 "\025\053\030\033\052\027\054\026\056\046\060\022\064" +
297 "\037\065\030\066\043\070\034\001\002\000\034\007\050" +
298 "\010\031\012\040\025\053\030\033\052\027\054\026\056" +
299 "\046\060\022\064\037\065\030\066\043\070\034\001\002" +
300 "\000\110\002\uffdd\004\uffdd\005\uffdd\011\uffdd\012\uffdd\013" +
301 "\uffdd\015\uffdd\017\uffdd\020\uffdd\021\uffdd\022\uffdd\024\uffdd" +
302 "\026\uffdd\027\uffdd\030\uffdd\031\uffdd\032\uffdd\033\uffdd\034" +
303 "\uffdd\036\uffdd\041\uffdd\043\uffdd\044\uffdd\045\uffdd\047\uffdd" +
304 "\050\uffdd\051\uffdd\053\uffdd\055\uffdd\056\uffdd\057\uffdd\060" +
305 "\uffdd\061\uffdd\062\uffdd\063\uffdd\001\002\000\110\002\uffde" +
306 "\004\uffde\005\uffde\011\uffde\012\uffde\013\uffde\015\uffde\017" +
307 "\uffde\020\uffde\021\uffde\022\uffde\024\uffde\026\uffde\027\uffde" +
308 "\030\uffde\031\uffde\032\uffde\033\uffde\034\uffde\036\uffde\041" +
309 "\uffde\043\uffde\044\uffde\045\uffde\047\uffde\050\uffde\051\uffde" +
310 "\053\uffde\055\uffde\056\uffde\057\uffde\060\uffde\061\uffde\062" +
311 "\uffde\063\uffde\001\002\000\110\002\uffe0\004\uffe0\005\uffe0" +
312 "\011\uffe0\012\uffe0\013\uffe0\015\uffe0\017\uffe0\020\uffe0\021" +
313 "\uffe0\022\uffe0\024\uffe0\026\uffe0\027\uffe0\030\uffe0\031\uffe0" +
314 "\032\uffe0\033\uffe0\034\uffe0\036\uffe0\041\111\043\uffe0\044" +
315 "\uffe0\045\uffe0\047\uffe0\050\uffe0\051\uffe0\053\uffe0\055\uffe0" +
316 "\056\uffe0\057\uffe0\060\uffe0\061\uffe0\062\uffe0\063\112\001" +
317 "\002\000\110\002\uffe2\004\uffe2\005\uffe2\011\uffe2\012\uffe2" +
318 "\013\uffe2\015\uffe2\017\uffe2\020\uffe2\021\uffe2\022\uffe2\024" +
319 "\uffe2\026\uffe2\027\uffe2\030\uffe2\031\uffe2\032\uffe2\033\uffe2" +
320 "\034\uffe2\036\uffe2\041\111\043\uffe2\044\uffe2\045\uffe2\047" +
321 "\uffe2\050\uffe2\051\uffe2\053\uffe2\055\uffe2\056\uffe2\057\uffe2" +
322 "\060\uffe2\061\uffe2\062\uffe2\063\112\001\002\000\014\013" +
323 "\uffca\015\uffca\027\076\034\uffca\036\077\001\002\000\010" +
324 "\013\uffc9\015\uffc9\034\uffc9\001\002\000\010\013\123\015" +
325 "\uffc6\034\124\001\002\000\004\015\132\001\002\000\036" +
326 "\007\050\010\031\012\040\024\025\025\053\030\033\052" +
327 "\027\054\026\056\046\060\022\064\037\065\030\066\043" +
328 "\070\034\001\002\000\036\007\050\010\031\012\040\024" +
329 "\025\025\053\030\033\052\027\054\026\056\046\060\022" +
330 "\064\037\065\030\066\043\070\034\001\002\000\010\013" +
331 "\uffc8\015\uffc8\034\uffc8\001\002\000\010\027\076\033\127" +
332 "\036\077\001\002\000\036\007\050\010\031\012\040\024" +
333 "\025\025\053\030\033\052\027\054\026\056\046\060\022" +
334 "\064\037\065\030\066\043\070\034\001\002\000\014\013" +
335 "\uffc7\015\uffc7\027\076\034\uffc7\036\077\001\002\000\010" +
336 "\015\uffc5\027\076\036\077\001\002\000\112\002\uffcc\004" +
337 "\uffcc\005\uffcc\011\uffcc\012\uffcc\013\uffcc\015\uffcc\017\uffcc" +
338 "\020\uffcc\021\uffcc\022\uffcc\024\uffcc\026\uffcc\027\uffcc\030" +
339 "\uffcc\031\uffcc\032\uffcc\033\uffcc\034\uffcc\036\uffcc\041\uffcc" +
340 "\043\uffcc\044\uffcc\045\uffcc\046\uffcc\047\uffcc\050\uffcc\051" +
341 "\uffcc\053\uffcc\055\uffcc\056\uffcc\057\uffcc\060\uffcc\061\uffcc" +
342 "\062\uffcc\063\uffcc\001\002\000\034\007\050\010\031\012" +
343 "\040\025\053\030\033\052\027\054\026\056\046\060\022" +
344 "\064\037\065\030\066\043\070\034\001\002\000\034\007" +
345 "\050\010\031\012\040\025\053\030\033\052\027\054\026" +
346 "\056\046\060\022\064\037\065\030\066\043\070\034\001" +
347 "\002\000\034\007\uffbf\010\uffbf\012\uffbf\025\uffbf\030\uffbf" +
348 "\052\uffbf\054\uffbf\056\uffbf\060\uffbf\064\uffbf\065\uffbf\066" +
349 "\uffbf\070\uffbf\001\002\000\034\007\uffc4\010\uffc4\012\uffc4" +
350 "\025\uffc4\030\uffc4\052\uffc4\054\uffc4\056\uffc4\060\uffc4\064" +
351 "\uffc4\065\uffc4\066\uffc4\070\uffc4\001\002\000\034\007\uffc0" +
352 "\010\uffc0\012\uffc0\025\uffc0\030\uffc0\052\uffc0\054\uffc0\056" +
353 "\uffc0\060\uffc0\064\uffc0\065\uffc0\066\uffc0\070\uffc0\001\002" +
354 "\000\034\007\uffc1\010\uffc1\012\uffc1\025\uffc1\030\uffc1\052" +
355 "\uffc1\054\uffc1\056\uffc1\060\uffc1\064\uffc1\065\uffc1\066\uffc1" +
356 "\070\uffc1\001\002\000\006\017\152\021\153\001\002\000" +
357 "\034\007\050\010\031\012\040\025\053\030\033\052\027" +
358 "\054\026\056\046\060\022\064\037\065\030\066\043\070" +
359 "\034\001\002\000\034\007\uffc3\010\uffc3\012\uffc3\025\uffc3" +
360 "\030\uffc3\052\uffc3\054\uffc3\056\uffc3\060\uffc3\064\uffc3\065" +
361 "\uffc3\066\uffc3\070\uffc3\001\002\000\034\007\uffc2\010\uffc2" +
362 "\012\uffc2\025\uffc2\030\uffc2\052\uffc2\054\uffc2\056\uffc2\060" +
363 "\uffc2\064\uffc2\065\uffc2\066\uffc2\070\uffc2\001\002\000\036" +
364 "\007\050\010\031\012\040\014\150\025\147\030\033\052" +
365 "\027\054\026\056\046\060\022\064\037\065\030\066\043" +
366 "\070\034\001\002\000\104\002\uffe9\004\uffe9\005\uffe9\011" +
367 "\uffe9\012\uffe9\013\uffe9\015\uffe9\017\uffe9\020\uffe9\021\uffe9" +
368 "\022\uffe9\024\uffe9\026\uffe9\027\uffe9\030\uffe9\031\uffe9\032" +
369 "\uffe9\033\uffe9\034\uffe9\036\uffe9\043\uffe9\044\uffe9\045\106" +
370 "\047\uffe9\050\uffe9\051\uffe9\053\uffe9\055\uffe9\056\107\057" +
371 "\uffe9\060\105\061\uffe9\062\uffe9\001\002\000\112\002\uffea" +
372 "\004\uffea\005\uffea\011\uffea\012\uffea\013\uffea\015\uffea\017" +
373 "\uffea\020\uffea\021\uffea\022\uffea\024\uffea\026\uffea\027\uffea" +
374 "\030\uffea\031\uffea\032\uffea\033\uffea\034\uffea\036\uffea\041" +
375 "\uffce\043\uffea\044\uffea\045\uffce\046\uffce\047\uffea\050\uffea" +
376 "\051\uffea\053\uffea\055\uffea\056\uffce\057\uffea\060\uffce\061" +
377 "\uffea\062\uffea\063\uffce\001\002\000\076\002\uffe8\004\uffe8" +
378 "\005\uffe8\011\uffe8\012\uffe8\013\uffe8\015\uffe8\017\uffe8\020" +
379 "\uffe8\021\uffe8\022\uffe8\024\uffe8\026\uffe8\027\uffe8\030\uffe8" +
380 "\031\uffe8\032\uffe8\033\uffe8\034\uffe8\036\uffe8\043\uffe8\044" +
381 "\uffe8\047\uffe8\050\uffe8\051\uffe8\053\uffe8\055\uffe8\057\uffe8" +
382 "\061\uffe8\062\uffe8\001\002\000\104\002\uffe7\004\uffe7\005" +
383 "\uffe7\011\uffe7\012\uffe7\013\uffe7\015\uffe7\017\uffe7\020\uffe7" +
384 "\021\uffe7\022\uffe7\024\uffe7\026\uffe7\027\uffe7\030\uffe7\031" +
385 "\uffe7\032\uffe7\033\uffe7\034\uffe7\036\uffe7\043\uffe7\044\uffe7" +
386 "\045\106\047\uffe7\050\uffe7\051\uffe7\053\uffe7\055\uffe7\056" +
387 "\107\057\uffe7\060\105\061\uffe7\062\uffe7\001\002\000\034" +
388 "\007\050\010\031\012\040\025\053\030\033\052\027\054" +
389 "\026\056\046\060\022\064\037\065\030\066\043\070\034" +
390 "\001\002\000\034\007\050\010\031\012\040\025\053\030" +
391 "\033\052\027\054\026\056\046\060\022\064\037\065\030" +
392 "\066\043\070\034\001\002\000\104\002\uffe6\004\uffe6\005" +
393 "\uffe6\011\uffe6\012\uffe6\013\uffe6\015\uffe6\017\uffe6\020\uffe6" +
394 "\021\uffe6\022\uffe6\024\uffe6\026\uffe6\027\uffe6\030\uffe6\031" +
395 "\uffe6\032\uffe6\033\uffe6\034\uffe6\036\uffe6\043\uffe6\044\uffe6" +
396 "\045\106\047\uffe6\050\uffe6\051\uffe6\053\uffe6\055\uffe6\056" +
397 "\107\057\uffe6\060\105\061\uffe6\062\uffe6\001\002\000\104" +
398 "\002\uffe4\004\uffe4\005\uffe4\011\uffe4\012\uffe4\013\uffe4\015" +
399 "\uffe4\017\uffe4\020\uffe4\021\uffe4\022\uffe4\024\uffe4\026\uffe4" +
400 "\027\uffe4\030\uffe4\031\uffe4\032\uffe4\033\uffe4\034\uffe4\036" +
401 "\uffe4\043\uffe4\044\uffe4\045\106\047\uffe4\050\uffe4\051\uffe4" +
402 "\053\uffe4\055\uffe4\056\107\057\uffe4\060\105\061\uffe4\062" +
403 "\uffe4\001\002\000\104\002\uffeb\004\uffeb\005\uffeb\011\uffeb" +
404 "\012\uffeb\013\uffeb\015\uffeb\017\uffeb\020\uffeb\021\uffeb\022" +
405 "\uffeb\024\uffeb\026\uffeb\027\uffeb\030\uffeb\031\uffeb\032\uffeb" +
406 "\033\uffeb\034\uffeb\036\uffeb\043\uffeb\044\uffeb\045\106\047" +
407 "\uffeb\050\uffeb\051\uffeb\053\uffeb\055\uffeb\056\107\057\uffeb" +
408 "\060\105\061\uffeb\062\uffeb\001\002\000\104\002\uffe5\004" +
409 "\uffe5\005\uffe5\011\uffe5\012\uffe5\013\uffe5\015\uffe5\017\uffe5" +
410 "\020\uffe5\021\uffe5\022\uffe5\024\uffe5\026\uffe5\027\uffe5\030" +
411 "\uffe5\031\uffe5\032\uffe5\033\uffe5\034\uffe5\036\uffe5\043\uffe5" +
412 "\044\uffe5\045\106\047\uffe5\050\uffe5\051\uffe5\053\uffe5\055" +
413 "\uffe5\056\107\057\uffe5\060\105\061\uffe5\062\uffe5\001\002" +
414 "\000\112\002\uffda\004\uffda\005\uffda\011\uffda\012\uffda\013" +
415 "\uffda\015\uffda\017\uffda\020\uffda\021\uffda\022\uffda\024\uffda" +
416 "\026\uffda\027\uffda\030\uffda\031\uffda\032\uffda\033\uffda\034" +
417 "\uffda\036\uffda\041\uffda\043\uffda\044\uffda\045\uffda\046\057" +
418 "\047\uffda\050\uffda\051\uffda\053\uffda\055\uffda\056\uffda\057" +
419 "\uffda\060\uffda\061\uffda\062\uffda\063\uffda\001\002\000\004" +
420 "\026\uff95\001\002\000\004\030\uff8f\001\002\000\004\026" +
421 "\176\001\002\000\004\030\165\001\002\000\012\012\040" +
422 "\030\033\065\030\066\043\001\002\000\004\026\uff91\001" +
423 "\002\000\022\002\ufff8\005\ufff8\011\ufff8\026\ufff8\030\ufff8" +
424 "\035\ufff8\044\ufff8\046\ufff8\001\002\000\006\026\uff8e\044" +
425 "\174\001\002\000\010\026\uff8c\044\uff8c\046\172\001\002" +
426 "\000\012\012\040\030\033\065\030\066\043\001\002\000" +
427 "\022\002\ufff7\005\ufff7\011\ufff7\026\ufff7\030\ufff7\035\ufff7" +
428 "\044\ufff7\046\ufff7\001\002\000\012\012\040\030\033\065" +
429 "\030\066\043\001\002\000\004\026\uff8d\001\002\000\016" +
430 "\006\177\012\040\030\033\064\200\065\030\066\043\001" +
431 "\002\000\004\054\204\001\002\000\006\016\uff93\044\uff93" +
432 "\001\002\000\006\016\uff9a\044\uff9a\001\002\000\006\016" +
433 "\uff99\044\uff99\001\002\000\006\016\uff94\044\uff94\001\002" +
434 "\000\004\064\205\001\002\000\004\062\206\001\002\000" +
435 "\006\016\uff92\044\uff92\001\002\000\012\012\040\030\033" +
436 "\065\030\066\043\001\002\000\042\007\050\010\031\012" +
437 "\040\024\025\025\053\030\033\044\uffbb\052\027\054\026" +
438 "\056\046\060\022\062\uffba\064\037\065\030\066\043\070" +
439 "\034\001\002\000\004\062\212\001\002\000\112\002\uffd2" +
440 "\004\uffd2\005\uffd2\011\uffd2\012\uffd2\013\uffd2\015\uffd2\017" +
441 "\uffd2\020\uffd2\021\uffd2\022\uffd2\024\uffd2\026\uffd2\027\uffd2" +
442 "\030\uffd2\031\uffd2\032\uffd2\033\uffd2\034\uffd2\036\uffd2\041" +
443 "\uffd2\043\uffd2\044\uffd2\045\uffd2\046\uffd2\047\uffd2\050\uffd2" +
444 "\051\uffd2\053\uffd2\055\uffd2\056\uffd2\057\uffd2\060\uffd2\061" +
445 "\uffd2\062\uffd2\063\uffd2\001\002\000\006\042\ufff5\054\ufff5" +
446 "\001\002\000\036\007\050\010\031\012\040\024\025\025" +
447 "\053\030\033\052\027\054\026\056\046\060\022\064\037" +
448 "\065\030\066\043\070\034\001\002\000\006\005\216\043" +
449 "\074\001\002\000\012\012\040\030\033\065\030\066\043" +
450 "\001\002\000\004\062\220\001\002\000\112\002\uffd1\004" +
451 "\uffd1\005\uffd1\011\uffd1\012\uffd1\013\uffd1\015\uffd1\017\uffd1" +
452 "\020\uffd1\021\uffd1\022\uffd1\024\uffd1\026\uffd1\027\uffd1\030" +
453 "\uffd1\031\uffd1\032\uffd1\033\uffd1\034\uffd1\036\uffd1\041\uffd1" +
454 "\043\uffd1\044\uffd1\045\uffd1\046\uffd1\047\uffd1\050\uffd1\051" +
455 "\uffd1\053\uffd1\055\uffd1\056\uffd1\057\uffd1\060\uffd1\061\uffd1" +
456 "\062\uffd1\063\uffd1\001\002\000\004\061\222\001\002\000" +
457 "\112\002\uffcf\004\uffcf\005\uffcf\011\uffcf\012\uffcf\013\uffcf" +
458 "\015\uffcf\017\uffcf\020\uffcf\021\uffcf\022\uffcf\024\uffcf\026" +
459 "\uffcf\027\uffcf\030\uffcf\031\uffcf\032\uffcf\033\uffcf\034\uffcf" +
460 "\036\uffcf\041\uffcf\043\uffcf\044\uffcf\045\uffcf\046\uffcf\047" +
461 "\uffcf\050\uffcf\051\uffcf\053\uffcf\055\uffcf\056\uffcf\057\uffcf" +
462 "\060\uffcf\061\uffcf\062\uffcf\063\uffcf\001\002\000\004\062" +
463 "\224\001\002\000\112\002\uffd0\004\uffd0\005\uffd0\011\uffd0" +
464 "\012\uffd0\013\uffd0\015\uffd0\017\uffd0\020\uffd0\021\uffd0\022" +
465 "\uffd0\024\uffd0\026\uffd0\027\uffd0\030\uffd0\031\uffd0\032\uffd0" +
466 "\033\uffd0\034\uffd0\036\uffd0\041\uffd0\043\uffd0\044\uffd0\045" +
467 "\uffd0\046\uffd0\047\uffd0\050\uffd0\051\uffd0\053\uffd0\055\uffd0" +
468 "\056\uffd0\057\uffd0\060\uffd0\061\uffd0\062\uffd0\063\uffd0\001" +
469 "\002\000\052\002\uffed\004\uffed\005\uffed\011\uffed\012\uffed" +
470 "\013\uffed\015\uffed\022\uffed\026\uffed\027\uffed\030\uffed\031" +
471 "\uffed\032\uffed\033\uffed\034\uffed\036\uffed\043\uffed\044\uffed" +
472 "\061\uffed\062\uffed\001\002\000\112\002\uffdb\004\uffdb\005" +
473 "\uffdb\011\uffdb\012\uffdb\013\uffdb\015\uffdb\017\uffdb\020\uffdb" +
474 "\021\uffdb\022\uffdb\024\uffdb\026\uffdb\027\uffdb\030\uffdb\031" +
475 "\uffdb\032\uffdb\033\uffdb\034\uffdb\036\uffdb\041\uffdb\043\uffdb" +
476 "\044\uffdb\045\uffdb\046\057\047\uffdb\050\uffdb\051\uffdb\053" +
477 "\uffdb\055\uffdb\056\uffdb\057\uffdb\060\uffdb\061\uffdb\062\uffdb" +
478 "\063\uffdb\001\002\000\012\012\040\030\033\065\030\066" +
479 "\043\001\002\000\012\002\uff8b\011\uff8b\030\uff8b\035\uff8b" +
480 "\001\002\000\014\002\ufff4\011\ufff4\030\ufff4\035\ufff4\046" +
481 "\172\001\002\000\012\002\uffad\011\uffad\030\uffad\035\233" +
482 "\001\002\000\036\007\050\010\031\012\040\024\025\025" +
483 "\053\030\033\052\027\054\026\056\046\060\022\064\037" +
484 "\065\030\066\043\070\034\001\002\000\010\002\uffab\011" +
485 "\237\030\uff88\001\002\000\004\002\uffaa\001\002\000\004" +
486 "\030\241\001\002\000\004\030\uff87\001\002\000\004\002" +
487 "\uffb4\001\002\000\012\012\040\030\033\065\030\066\043" +
488 "\001\002\000\006\002\uff86\044\245\001\002\000\004\002" +
489 "\uff89\001\002\000\010\002\uff84\044\uff84\046\172\001\002" +
490 "\000\012\012\040\030\033\065\030\066\043\001\002\000" +
491 "\004\002\uff85\001\002\000\010\002\uffac\011\uffac\030\uffac" +
492 "\001\002\000\012\002\uff8a\011\uff8a\030\uff8a\043\074\001" +
493 "\002\000\006\002\uffb5\043\074\001\002\000\004\002\001" +
494 "\001\002\000\004\031\uffb2\001\002\000\010\022\uffa7\031" +
495 "\uffa7\032\uffa7\001\002\000\010\022\257\031\uffa9\032\256" +
496 "\001\002\000\012\012\040\030\033\065\030\066\043\001" +
497 "\002\000\012\012\040\030\033\065\030\066\043\001\002" +
498 "\000\010\022\uffa6\031\uffa6\032\uffa6\001\002\000\004\005" +
499 "\263\001\002\000\006\005\uff9f\046\172\001\002\000\040" +
500 "\007\050\010\031\012\040\024\025\025\053\030\033\052" +
501 "\027\054\026\056\046\060\022\064\037\065\030\066\043" +
502 "\070\034\071\265\001\002\000\016\022\uffa3\027\076\031" +
503 "\uffa3\032\uffa3\036\077\044\266\001\002\000\012\022\uffa3" +
504 "\031\uffa3\032\uffa3\044\266\001\002\000\012\012\040\030" +
505 "\033\065\030\066\043\001\002\000\010\022\uffa5\031\uffa5" +
506 "\032\uffa5\001\002\000\010\022\uffa2\031\uffa2\032\uffa2\001" +
507 "\002\000\012\022\uffa1\031\uffa1\032\uffa1\044\275\001\002" +
508 "\000\004\047\273\001\002\000\036\007\050\010\031\012" +
509 "\040\024\025\025\053\030\033\052\027\054\026\056\046" +
510 "\060\022\064\037\065\030\066\043\070\034\001\002\000" +
511 "\016\022\uff9e\027\076\031\uff9e\032\uff9e\036\077\044\uff9e" +
512 "\001\002\000\012\012\040\030\033\065\030\066\043\001" +
513 "\002\000\010\022\uffa0\031\uffa0\032\uffa0\001\002\000\010" +
514 "\022\uffa4\031\uffa4\032\uffa4\001\002\000\004\005\302\001" +
515 "\002\000\006\005\uff9b\046\172\001\002\000\040\007\050" +
516 "\010\031\012\040\024\025\025\053\030\033\052\027\054" +
517 "\026\056\046\060\022\064\037\065\030\066\043\070\034" +
518 "\071\304\001\002\000\012\022\uff9c\031\uff9c\032\uff9c\043" +
519 "\074\001\002\000\010\022\uff9d\031\uff9d\032\uff9d\001\002" +
520 "\000\004\031\uffa8\001\002" });
521
522 /** Access to parse-action table. */
523 public short[][] action_table() {return _action_table;}
524
525 /** <code>reduce_goto</code> table. */
526 protected static final short[][] _reduce_table =
527 unpackFromStrings(new String[] {
528 "\000\303\000\010\023\003\024\005\072\007\001\001\000" +
529 "\002\001\001\000\012\042\253\043\257\044\254\065\252" +
530 "\001\001\000\002\001\001\000\040\004\023\006\250\010" +
531 "\040\012\041\013\050\014\046\015\044\016\043\017\035" +
532 "\021\051\025\031\035\053\036\022\037\055\040\054\001" +
533 "\001\000\002\001\001\000\012\003\013\053\012\054\015" +
534 "\055\011\001\001\000\002\001\001\000\040\004\023\006" +
535 "\034\010\040\012\041\013\050\014\046\015\044\016\043" +
536 "\017\035\021\051\025\031\035\053\036\022\037\055\040" +
537 "\054\001\001\000\002\001\001\000\002\001\001\000\002" +
538 "\001\001\000\002\001\001\000\010\003\013\053\012\054" +
539 "\020\001\001\000\002\001\001\000\020\004\023\021\225" +
540 "\025\031\035\053\036\022\037\055\040\054\001\001\000" +
541 "\002\001\001\000\002\001\001\000\032\004\023\010\040" +
542 "\012\041\013\050\014\046\015\224\021\051\025\031\035" +
543 "\053\036\022\037\055\040\054\001\001\000\044\004\023" +
544 "\006\067\007\070\010\040\012\041\013\050\014\046\015" +
545 "\044\016\043\017\035\021\051\025\031\035\053\036\022" +
546 "\037\055\040\054\063\222\001\001\000\046\004\023\006" +
547 "\067\007\070\010\040\012\041\013\050\014\046\015\044" +
548 "\016\043\017\035\021\051\025\031\035\053\036\022\037" +
549 "\055\040\054\063\066\064\220\001\001\000\002\001\001" +
550 "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
551 "\002\001\001\000\010\050\163\061\160\062\162\001\001" +
552 "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
553 "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
554 "\001\001\000\002\001\001\000\020\004\023\021\157\025" +
555 "\031\035\053\036\022\037\055\040\054\001\001\000\004" +
556 "\034\133\001\001\000\040\004\023\010\040\012\041\013" +
557 "\050\014\046\015\044\016\043\017\116\020\117\021\051" +
558 "\025\031\035\053\036\022\037\055\040\054\001\001\000" +
559 "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
560 "\001\001\000\002\001\001\000\002\001\001\000\014\035" +
561 "\053\036\060\037\062\040\061\041\057\001\001\000\002" +
562 "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
563 "\001\000\002\001\001\000\046\004\023\006\067\007\070" +
564 "\010\040\012\041\013\050\014\046\015\044\016\043\017" +
565 "\035\021\051\025\031\035\053\036\022\037\055\040\054" +
566 "\063\066\064\065\001\001\000\002\001\001\000\002\001" +
567 "\001\000\002\001\001\000\002\001\001\000\044\004\023" +
568 "\006\067\007\070\010\040\012\041\013\050\014\046\015" +
569 "\044\016\043\017\035\021\051\025\031\035\053\036\022" +
570 "\037\055\040\054\063\072\001\001\000\002\001\001\000" +
571 "\036\004\023\010\040\012\041\013\050\014\046\015\044" +
572 "\016\043\017\074\021\051\025\031\035\053\036\022\037" +
573 "\055\040\054\001\001\000\002\001\001\000\034\004\023" +
574 "\010\040\012\041\013\050\014\046\015\044\016\102\021" +
575 "\051\025\031\035\053\036\022\037\055\040\054\001\001" +
576 "\000\034\004\023\010\040\012\041\013\050\014\046\015" +
577 "\044\016\077\021\051\025\031\035\053\036\022\037\055" +
578 "\040\054\001\001\000\002\001\001\000\032\004\023\010" +
579 "\040\012\041\013\050\014\046\015\101\021\051\025\031" +
580 "\035\053\036\022\037\055\040\054\001\001\000\002\001" +
581 "\001\000\002\001\001\000\002\001\001\000\024\004\023" +
582 "\010\040\012\115\021\051\025\031\035\053\036\022\037" +
583 "\055\040\054\001\001\000\024\004\023\010\040\012\114" +
584 "\021\051\025\031\035\053\036\022\037\055\040\054\001" +
585 "\001\000\024\004\023\010\040\012\107\021\051\025\031" +
586 "\035\053\036\022\037\055\040\054\001\001\000\002\001" +
587 "\001\000\022\004\023\010\113\021\051\025\031\035\053" +
588 "\036\022\037\055\040\054\001\001\000\022\004\023\010" +
589 "\112\021\051\025\031\035\053\036\022\037\055\040\054" +
590 "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
591 "\001\000\002\001\001\000\002\001\001\000\004\071\120" +
592 "\001\001\000\006\005\121\073\124\001\001\000\002\001" +
593 "\001\000\036\004\023\010\040\012\041\013\050\014\046" +
594 "\015\044\016\043\017\130\021\051\025\031\035\053\036" +
595 "\022\037\055\040\054\001\001\000\036\004\023\010\040" +
596 "\012\041\013\050\014\046\015\044\016\043\017\125\021" +
597 "\051\025\031\035\053\036\022\037\055\040\054\001\001" +
598 "\000\002\001\001\000\002\001\001\000\036\004\023\010" +
599 "\040\012\041\013\050\014\046\015\044\016\043\017\127" +
600 "\021\051\025\031\035\053\036\022\037\055\040\054\001" +
601 "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
602 "\000\026\004\023\010\040\012\041\013\156\021\051\025" +
603 "\031\035\053\036\022\037\055\040\054\001\001\000\026" +
604 "\004\023\010\040\012\041\013\155\021\051\025\031\035" +
605 "\053\036\022\037\055\040\054\001\001\000\002\001\001" +
606 "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
607 "\002\001\001\000\026\004\023\010\040\012\041\013\150" +
608 "\021\051\025\031\035\053\036\022\037\055\040\054\001" +
609 "\001\000\002\001\001\000\002\001\001\000\026\004\023" +
610 "\010\040\012\041\013\145\021\051\025\031\035\053\036" +
611 "\022\037\055\040\054\001\001\000\002\001\001\000\002" +
612 "\001\001\000\002\001\001\000\002\001\001\000\026\004" +
613 "\023\010\040\012\041\013\154\021\051\025\031\035\053" +
614 "\036\022\037\055\040\054\001\001\000\026\004\023\010" +
615 "\040\012\041\013\153\021\051\025\031\035\053\036\022" +
616 "\037\055\040\054\001\001\000\002\001\001\000\002\001" +
617 "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
618 "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
619 "\002\001\001\000\020\026\170\035\053\036\166\037\055" +
620 "\040\054\051\167\067\165\001\001\000\002\001\001\000" +
621 "\002\001\001\000\002\001\001\000\002\001\001\000\012" +
622 "\035\053\036\172\037\055\040\054\001\001\000\002\001" +
623 "\001\000\020\026\170\035\053\036\166\037\055\040\054" +
624 "\051\167\067\174\001\001\000\002\001\001\000\016\033" +
625 "\200\035\053\036\202\037\055\040\054\074\201\001\001" +
626 "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
627 "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
628 "\001\001\000\002\001\001\000\012\035\053\036\212\037" +
629 "\055\040\054\001\001\000\046\004\023\006\067\007\070" +
630 "\010\040\012\041\013\050\014\046\015\044\016\043\017" +
631 "\035\021\051\025\031\035\053\036\022\037\055\040\054" +
632 "\063\066\064\210\001\001\000\002\001\001\000\002\001" +
633 "\001\000\002\001\001\000\040\004\023\006\214\010\040" +
634 "\012\041\013\050\014\046\015\044\016\043\017\035\021" +
635 "\051\025\031\035\053\036\022\037\055\040\054\001\001" +
636 "\000\002\001\001\000\012\035\053\036\216\037\055\040" +
637 "\054\001\001\000\002\001\001\000\002\001\001\000\002" +
638 "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
639 "\001\000\002\001\001\000\002\001\001\000\020\026\230" +
640 "\027\227\030\231\035\053\036\166\037\055\040\054\001" +
641 "\001\000\002\001\001\000\002\001\001\000\004\022\233" +
642 "\001\001\000\042\004\023\006\247\010\040\011\246\012" +
643 "\041\013\050\014\046\015\044\016\043\017\035\021\051" +
644 "\025\031\035\053\036\022\037\055\040\054\001\001\000" +
645 "\010\046\235\056\234\057\237\001\001\000\002\001\001" +
646 "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
647 "\020\026\243\035\053\036\166\037\055\040\054\047\241" +
648 "\070\242\001\001\000\002\001\001\000\002\001\001\000" +
649 "\002\001\001\000\020\026\243\035\053\036\166\037\055" +
650 "\040\054\047\241\070\245\001\001\000\002\001\001\000" +
651 "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
652 "\001\001\000\002\001\001\000\002\001\001\000\012\042" +
653 "\253\043\257\044\254\065\304\001\001\000\016\026\300" +
654 "\032\277\035\053\036\166\037\055\040\054\001\001\000" +
655 "\016\026\261\031\260\035\053\036\166\037\055\040\054" +
656 "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
657 "\001\000\036\004\023\010\040\012\041\013\050\014\046" +
658 "\015\044\016\043\017\263\021\051\025\031\035\053\036" +
659 "\022\037\055\040\054\001\001\000\004\060\276\001\001" +
660 "\000\004\060\266\001\001\000\016\035\053\036\271\037" +
661 "\055\040\054\045\270\066\267\001\001\000\002\001\001" +
662 "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
663 "\036\004\023\010\040\012\041\013\050\014\046\015\044" +
664 "\016\043\017\273\021\051\025\031\035\053\036\022\037" +
665 "\055\040\054\001\001\000\002\001\001\000\016\035\053" +
666 "\036\271\037\055\040\054\045\270\066\275\001\001\000" +
667 "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
668 "\001\001\000\040\004\023\006\302\010\040\012\041\013" +
669 "\050\014\046\015\044\016\043\017\035\021\051\025\031" +
670 "\035\053\036\022\037\055\040\054\001\001\000\002\001" +
671 "\001\000\002\001\001\000\002\001\001" });
672
673 /** Access to <code>reduce_goto</code> table. */
674 public short[][] reduce_table() {return _reduce_table;}
675
676 /** Instance of action encapsulation class. */
677 protected CUP$Parser$actions action_obj;
678
679 /** Action encapsulation object initializer. */
680 protected void init_actions()
681 {
682 action_obj = new CUP$Parser$actions(this);
683 }
684
685 /** Invoke a user supplied parse action. */
686 public java_cup.runtime.Symbol do_action(
687 int act_num,
688 java_cup.runtime.lr_parser parser,
689 java.util.Stack stack,
690 int top)
691 throws java.lang.Exception
692 {
693 /* call code in generated class */
694 return action_obj.CUP$Parser$do_action(act_num, parser, stack, top);
695 }
696
697 /** Indicates start state. */
698 public int start_state() {return 0;}
699 /** Indicates start production. */
700 public int start_production() {return 0;}
701
702 /** <code>EOF</code> Symbol index. */
703 public int EOF_sym() {return 0;}
704
705 /** <code>error</code> Symbol index. */
706 public int error_sym() {return 1;}
707
708
709 /** User initialization code. */
710 public void user_init() throws java.lang.Exception
711 {
712
713 scanner.init();
714
715 }
716
717 /** Scan to get the next Symbol. */
718 public java_cup.runtime.Symbol scan()
719 throws java.lang.Exception
720 {
721
722 return scanner.next_token();
723
724 }
725
726
727 // Generated from $Id: //open/mondrian-release/3.0/src/main/mondrian/olap/Parser.cup#4 $
728 private Scanner scanner;
729 private String queryString;
730 private Connection mdxConnection;
731 private FunTable funTable;
732 private boolean load;
733 private boolean strictValidation;
734
735 /**
736 * Recursively parses an expression.
737 */
738 Exp recursivelyParseExp(String s)
739 {
740 return new Parser().parseExpression(
741 mdxConnection, s, false, funTable);
742 }
743
744 /**
745 * Parses a string to create a {@link Query}.
746 * Called only by {@link ConnectionBase#parseQuery}.
747 */
748 Query parseInternal(
749 Connection mdxConnection,
750 String queryString,
751 boolean debug,
752 FunTable funTable,
753 boolean load,
754 boolean strictValidation)
755 {
756 Symbol parse_tree = null;
757 this.scanner = new StringScanner(queryString, debug);
758 this.mdxConnection = mdxConnection;
759 this.queryString = queryString;
760 this.funTable = funTable;
761 this.load = load;
762 this.strictValidation = strictValidation;
763 try {
764 if (debug) {
765 parse_tree = debug_parse();
766 } else {
767 parse_tree = parse();
768 }
769 return (Query) parse_tree.value;
770 } catch (Exception e) {
771 // "Error while parsing MDX statement '%1'"
772 throw MondrianResource.instance().WhileParsingMdx.ex(queryString, e);
773 } finally {
774 this.scanner = null;
775 this.mdxConnection = null;
776 this.queryString = null;
777 this.funTable = null;
778 }
779 }
780
781 /**
782 * Parses a string to create an {@link Exp}.
783 * Called only by {@link ConnectionBase#parseExpression}.
784 */
785 Exp parseExpression(
786 Connection mdxConnection,
787 String queryString,
788 boolean debug,
789 FunTable funTable)
790 {
791 Symbol parse_tree = null;
792 this.scanner = new PrefixScanner(
793 debug,
794 new StringScanner(queryString, debug),
795 new int[] {ParserSym._VALUE_EXPRESSION});
796 this.mdxConnection = mdxConnection;
797 this.queryString = queryString;
798 this.funTable = funTable;
799 try {
800 if (debug) {
801 parse_tree = debug_parse();
802 } else {
803 parse_tree = parse();
804 }
805 return (Exp) parse_tree.value;
806 } catch (Exception e) {
807 // "Syntax error while parsing MDX expression '%1'"
808 throw MondrianResource.instance().WhileParsingMdxExpression.ex(queryString, e);
809 } finally {
810 this.scanner = null;
811 this.mdxConnection = null;
812 this.queryString = null;
813 this.funTable = null;
814 }
815 }
816
817 /**
818 * Scanner which returns a list of pre-programmed tokens, then switches
819 * to a parent scanner.
820 */
821 private static class PrefixScanner extends Scanner {
822 private final Scanner parent;
823 private final int tokens[];
824 private int i;
825
826 PrefixScanner(boolean debug, Scanner parent, int[] tokens) {
827 super(debug);
828 this.parent = parent;
829 this.tokens = tokens;
830 }
831
832 public void init() throws java.io.IOException {
833 i = 0;
834 parent.init();
835 }
836
837 public Symbol next_token() throws java.io.IOException {
838 if (i < tokens.length) {
839 return new Symbol(tokens[i++], 0, 0, null);
840 }
841 return parent.next_token();
842 }
843
844 void getLocation(Symbol symbol, int[] loc) {
845 parent.getLocation(symbol, loc);
846 }
847 }
848
849 /**
850 * Creates a {@link Query} object.
851 * Override this function to make your kind of query.
852 */
853 protected Query makeQuery(
854 Formula[] formulae, QueryAxis[] axes,
855 String cube, Exp slicer, QueryPart[] cellProps)
856 {
857 final QueryAxis slicerAxis =
858 slicer == null ?
859 null :
860 new QueryAxis(
861 false, slicer, AxisOrdinal.SLICER,
862 QueryAxis.SubtotalVisibility.Undefined, new Id[0]);
863 return new Query(
864 mdxConnection, formulae, axes, cube, slicerAxis, cellProps, load, strictValidation);
865 }
866
867 // Override lr_parser methods for NLS. With this error handling scheme,
868 // all errors are fatal.
869 public void report_fatal_error(
870 String message,
871 Object info)
872 throws java.lang.Exception
873 {
874 done_parsing();
875 try {
876 report_error(message, info);
877 } catch (Throwable e) {
878 // "MDX parser cannot recover from previous error(s)"
879 throw MondrianResource.instance().MdxFatalError.ex(e);
880 }
881 }
882
883 // override lr_parser method
884 public void report_error(String message, Object info)
885 {
886 // "Error: %1"
887 throw MondrianResource.instance().MdxError.ex(message);
888 }
889
890 // override lr_parser method
891 public void syntax_error(Symbol cur_token)
892 {
893 String s = cur_token.value.toString();
894 if (cur_token.left != -1) {
895 int loc[] = new int[2];
896 scanner.getLocation(cur_token, loc);
897 // "Syntax error at line %2, column %3, token '%1'"
898 throw MondrianResource.instance().MdxSyntaxErrorAt.ex(
899 s, Integer.toString(loc[0] + 1), Integer.toString(loc[1] + 1));
900 } else {
901 // "Syntax error at token '%1'"
902 throw MondrianResource.instance().MdxSyntaxError.ex(s);
903 }
904 }
905
906 public void unrecovered_syntax_error(Symbol cur_token)
907 throws java.lang.Exception
908 {
909 // "Couldn't repair and continue parse"
910 String sFatalSyntaxError = MondrianResource.instance().MdxFatalSyntaxError.str();
911 report_fatal_error(sFatalSyntaxError, cur_token);
912 }
913
914 /**
915 * Returns whether the given identifier can possibly the name of an operator
916 * with property syntax.
917 *
918 * <p>For example, <code>isFunCall("ORDINAL")</code>
919 * returns true because there is a "<Level>.Ordinal" property.</p>
920 */
921 protected boolean isFunCall(String s) {
922 return funTable.isProperty(s);
923 }
924
925 static Id[] toIdArray(List idList) {
926 if (idList == null || idList.size() == 0) {
927 return EmptyIdArray;
928 } else {
929 return (Id []) idList.toArray(new Id[idList.size()]);
930 }
931 }
932
933 static Exp[] toExpArray(List expList) {
934 if (expList == null || expList.size() == 0) {
935 return EmptyExpArray;
936 } else {
937 return (Exp []) expList.toArray(new Exp[expList.size()]);
938 }
939 }
940
941 static Formula[] toFormulaArray(List formulaList) {
942 if (formulaList == null || formulaList.size() == 0) {
943 return EmptyFormulaArray;
944 } else {
945 return (Formula []) formulaList.toArray(new Formula[formulaList.size()]);
946 }
947 }
948
949 static MemberProperty[] toMemberPropertyArray(List mpList) {
950 if (mpList == null || mpList.size() == 0) {
951 return EmptyMemberPropertyArray;
952 } else {
953 return (MemberProperty []) mpList.toArray(new MemberProperty[mpList.size()]);
954 }
955 }
956
957 static QueryPart[] toQueryPartArray(List qpList) {
958 if (qpList == null || qpList.size() == 0) {
959 return EmptyQueryPartArray;
960 } else {
961 return (QueryPart []) qpList.toArray(new QueryPart[qpList.size()]);
962 }
963 }
964
965 static QueryAxis[] toQueryAxisArray(List qpList) {
966 if (qpList == null || qpList.size() == 0) {
967 return EmptyQueryAxisArray;
968 } else {
969 return (QueryAxis []) qpList.toArray(new QueryAxis[qpList.size()]);
970 }
971 }
972
973 private static final MemberProperty[] EmptyMemberPropertyArray = new MemberProperty[0];
974 private static final Exp[] EmptyExpArray = new Exp[0];
975 private static final Formula[] EmptyFormulaArray = new Formula[0];
976 private static final Id[] EmptyIdArray = new Id[0];
977 private static final QueryPart[] EmptyQueryPartArray = new QueryPart[0];
978 private static final QueryAxis[] EmptyQueryAxisArray = new QueryAxis[0];
979
980 }
981
982 /** Cup generated class to encapsulate user supplied action code.*/
983 class CUP$Parser$actions {
984 private final Parser parser;
985
986 /** Constructor */
987 CUP$Parser$actions(Parser parser) {
988 this.parser = parser;
989 }
990
991 /** Method with the actual generated action code. */
992 public final java_cup.runtime.Symbol CUP$Parser$do_action(
993 int CUP$Parser$act_num,
994 java_cup.runtime.lr_parser CUP$Parser$parser,
995 java.util.Stack CUP$Parser$stack,
996 int CUP$Parser$top)
997 throws java.lang.Exception
998 {
999 /* Symbol object for return from actions */
1000 java_cup.runtime.Symbol CUP$Parser$result;
1001
1002 /* select the action based on the action number */
1003 switch (CUP$Parser$act_num)
1004 {
1005 /*. . . . . . . . . . . . . . . . . . . .*/
1006 case 125: // cell_property ::= compound_id
1007 {
1008 Object RESULT = null;
1009
1010 // Default action for single-symbol production
1011 RESULT = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1012 CUP$Parser$result = new java_cup.runtime.Symbol(37/*cell_property*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1013 }
1014 return CUP$Parser$result;
1015
1016 /*. . . . . . . . . . . . . . . . . . . .*/
1017 case 124: // cell_property_list ::= cell_property COMMA cell_property_list
1018 {
1019 List RESULT = null;
1020 int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1021 int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1022 Object p = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1023 int p1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1024 int p1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1025 List p1 = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1026
1027 p1.add(0, new CellProperty(p));
1028 RESULT = p1;
1029
1030 CUP$Parser$result = new java_cup.runtime.Symbol(54/*cell_property_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1031 }
1032 return CUP$Parser$result;
1033
1034 /*. . . . . . . . . . . . . . . . . . . .*/
1035 case 123: // cell_property_list ::= cell_property
1036 {
1037 List RESULT = null;
1038 int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1039 int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1040 Object p = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1041
1042 RESULT = new LinkedList();
1043 RESULT.add(new CellProperty(p));
1044
1045 CUP$Parser$result = new java_cup.runtime.Symbol(54/*cell_property_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1046 }
1047 return CUP$Parser$result;
1048
1049 /*. . . . . . . . . . . . . . . . . . . .*/
1050 case 122: // cell_opt ::= CELL
1051 {
1052 Object RESULT = null;
1053
1054 // Default action for single-symbol production
1055 RESULT = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1056 CUP$Parser$result = new java_cup.runtime.Symbol(36/*cell_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1057 }
1058 return CUP$Parser$result;
1059
1060 /*. . . . . . . . . . . . . . . . . . . .*/
1061 case 121: // cell_opt ::=
1062 {
1063 Object RESULT = null;
1064
1065 CUP$Parser$result = new java_cup.runtime.Symbol(36/*cell_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1066 }
1067 return CUP$Parser$result;
1068
1069 /*. . . . . . . . . . . . . . . . . . . .*/
1070 case 120: // cell_props ::= cell_opt PROPERTIES cell_property_list
1071 {
1072 List RESULT = null;
1073 int p1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1074 int p1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1075 List p1 = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1076 RESULT = p1;
1077 CUP$Parser$result = new java_cup.runtime.Symbol(44/*cell_props*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1078 }
1079 return CUP$Parser$result;
1080
1081 /*. . . . . . . . . . . . . . . . . . . .*/
1082 case 119: // slicer_specification ::= expression
1083 {
1084 Exp RESULT = null;
1085
1086 // Default action for single-symbol production
1087 RESULT = (Exp)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1088 CUP$Parser$result = new java_cup.runtime.Symbol(7/*slicer_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1089 }
1090 return CUP$Parser$result;
1091
1092 /*. . . . . . . . . . . . . . . . . . . .*/
1093 case 118: // cube_specification ::= cube_name
1094 {
1095 Id RESULT = null;
1096
1097 // Default action for single-symbol production
1098 RESULT = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1099 CUP$Parser$result = new java_cup.runtime.Symbol(22/*cube_specification*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1100 }
1101 return CUP$Parser$result;
1102
1103 /*. . . . . . . . . . . . . . . . . . . .*/
1104 case 117: // property ::= compound_id
1105 {
1106 Object RESULT = null;
1107
1108 // Default action for single-symbol production
1109 RESULT = (Id)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1110 CUP$Parser$result = new java_cup.runtime.Symbol(39/*property*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1111 }
1112 return CUP$Parser$result;
1113
1114 /*. . . . . . . . . . . . . . . . . . . .*/
1115 case 116: // property_list ::= property COMMA property_list
1116 {
1117 List RESULT = null;
1118 int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
1119 int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
1120 Object p = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
1121 int plleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1122 int plright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1123 List pl = (List)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1124
1125 pl.add(0, p);
1126 RESULT = pl;
1127
1128 CUP$Parser$result = new java_cup.runtime.Symbol(53/*property_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1129 }
1130 return CUP$Parser$result;
1131
1132 /*. . . . . . . . . . . . . . . . . . . .*/
1133 case 115: // property_list ::= property
1134 {
1135 List RESULT = null;
1136 int pleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1137 int pright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right;
1138 Object p = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-0)).value;
1139
1140 RESULT = new LinkedList();
1141 RESULT.add(p);
1142
1143 CUP$Parser$result = new java_cup.runtime.Symbol(53/*property_list*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1144 }
1145 return CUP$Parser$result;
1146
1147 /*. . . . . . . . . . . . . . . . . . . .*/
1148 case 114: // dimension_opt ::= DIMENSION
1149 {
1150 Object RESULT = null;
1151
1152 // Default action for single-symbol production
1153 RESULT = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top)).value;
1154 CUP$Parser$result = new java_cup.runtime.Symbol(38/*dimension_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1155 }
1156 return CUP$Parser$result;
1157
1158 /*. . . . . . . . . . . . . . . . . . . .*/
1159 case 113: // dimension_opt ::=
1160 {
1161 Object RESULT = null;
1162
1163 CUP$Parser$result = new java_cup.runtime.Symbol(38/*dimension_opt*/, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).right, RESULT);
1164 }
1165 return CUP$Parser$result;
1166
1167 /*. . . . . . . . . . . . . . . . . . . .*/
1168 case 112: // dim_props ::= dimension_opt PROPERTIES property_list
1169 {
1170 List RESULT = null;
1171 int plleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-0)).left;
1172 int plright = ((jav