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 "&lt;Level&gt;.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