calabash-android 0.4.0.pre6 → 0.4.0.pre7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/calabash-android +7 -0
 - data/bin/calabash-android-build.rb +1 -1
 - data/bin/calabash-android-console.rb +1 -1
 - data/bin/calabash-android-run.rb +1 -1
 - data/calabash-android.gemspec +1 -0
 - data/irbrc +2 -0
 - data/lib/calabash-android/helpers.rb +4 -2
 - data/lib/calabash-android/lib/TestServer.apk +0 -0
 - data/lib/calabash-android/operations.rb +31 -22
 - data/lib/calabash-android/version.rb +1 -1
 - data/test-server/instrumentation-backend/.classpath +0 -1
 - data/test-server/instrumentation-backend/antlr/UIQuery.g +11 -2
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +4 -3
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/FranklyResult.java +95 -0
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +7 -1
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/HttpServer.java +15 -23
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +13 -10
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +136 -36
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +38 -18
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +38 -16
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +94 -66
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteAsyncJavascript.java +55 -33
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java +54 -31
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java +44 -0
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +52 -27
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +39 -32
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +56 -41
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +50 -25
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +19 -22
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/CompletedFuture.java +40 -0
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java +201 -0
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Operation.java +7 -0
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/PropertyOperation.java +56 -0
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java +144 -72
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens +15 -12
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQueryResultVoid.java +22 -0
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java +38 -11
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java +226 -109
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java +237 -84
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/PartialFutureList.java +100 -0
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryAST.java +1 -1
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTClassName.java +26 -22
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java +170 -102
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java +54 -155
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java +97 -2
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java +32 -0
 - metadata +27 -5
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +0 -24
 - data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +0 -44
 - data/test-server/instrumentation-backend/tests/sh/calaba/instrumentationbackend/query/tests/UIQueryTest.java +0 -134
 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            // $ANTLR 3.4 antlr/UIQuery.g  
     | 
| 
      
 1 
     | 
    
         
            +
            // $ANTLR 3.4 antlr/UIQuery.g 2013-01-07 13:26:07
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
                package sh.calaba.instrumentationbackend.query.antlr;
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
         @@ -14,22 +14,25 @@ import org.antlr.runtime.tree.*; 
     | 
|
| 
       14 
14 
     | 
    
         
             
            @SuppressWarnings({"all", "warnings", "unchecked"})
         
     | 
| 
       15 
15 
     | 
    
         
             
            public class UIQueryParser extends Parser {
         
     | 
| 
       16 
16 
     | 
    
         
             
                public static final String[] tokenNames = new String[] {
         
     | 
| 
       17 
     | 
    
         
            -
                    "<invalid>", "<EOR>", "<DOWN>", "<UP>", "BOOL", "ESC_SEQ", "FILTER_COLON", "HEX_DIGIT", "INT", "NAME", "NIL", "OCTAL_ESC", "QUALIFIED_NAME", "STRING", "UNICODE_ESC", "WHITE"
         
     | 
| 
      
 17 
     | 
    
         
            +
                    "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ALL", "BOOL", "ESC_SEQ", "FILTER_COLON", "HEX_DIGIT", "INT", "NAME", "NIL", "OCTAL_ESC", "QUALIFIED_NAME", "STRING", "UNICODE_ESC", "VISIBLE", "WHITE", "WILDCARD"
         
     | 
| 
       18 
18 
     | 
    
         
             
                };
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                public static final int EOF=-1;
         
     | 
| 
       21 
     | 
    
         
            -
                public static final int  
     | 
| 
       22 
     | 
    
         
            -
                public static final int  
     | 
| 
       23 
     | 
    
         
            -
                public static final int  
     | 
| 
       24 
     | 
    
         
            -
                public static final int  
     | 
| 
       25 
     | 
    
         
            -
                public static final int  
     | 
| 
       26 
     | 
    
         
            -
                public static final int  
     | 
| 
       27 
     | 
    
         
            -
                public static final int  
     | 
| 
       28 
     | 
    
         
            -
                public static final int  
     | 
| 
       29 
     | 
    
         
            -
                public static final int  
     | 
| 
       30 
     | 
    
         
            -
                public static final int  
     | 
| 
       31 
     | 
    
         
            -
                public static final int  
     | 
| 
       32 
     | 
    
         
            -
                public static final int  
     | 
| 
      
 21 
     | 
    
         
            +
                public static final int ALL=4;
         
     | 
| 
      
 22 
     | 
    
         
            +
                public static final int BOOL=5;
         
     | 
| 
      
 23 
     | 
    
         
            +
                public static final int ESC_SEQ=6;
         
     | 
| 
      
 24 
     | 
    
         
            +
                public static final int FILTER_COLON=7;
         
     | 
| 
      
 25 
     | 
    
         
            +
                public static final int HEX_DIGIT=8;
         
     | 
| 
      
 26 
     | 
    
         
            +
                public static final int INT=9;
         
     | 
| 
      
 27 
     | 
    
         
            +
                public static final int NAME=10;
         
     | 
| 
      
 28 
     | 
    
         
            +
                public static final int NIL=11;
         
     | 
| 
      
 29 
     | 
    
         
            +
                public static final int OCTAL_ESC=12;
         
     | 
| 
      
 30 
     | 
    
         
            +
                public static final int QUALIFIED_NAME=13;
         
     | 
| 
      
 31 
     | 
    
         
            +
                public static final int STRING=14;
         
     | 
| 
      
 32 
     | 
    
         
            +
                public static final int UNICODE_ESC=15;
         
     | 
| 
      
 33 
     | 
    
         
            +
                public static final int VISIBLE=16;
         
     | 
| 
      
 34 
     | 
    
         
            +
                public static final int WHITE=17;
         
     | 
| 
      
 35 
     | 
    
         
            +
                public static final int WILDCARD=18;
         
     | 
| 
       33 
36 
     | 
    
         | 
| 
       34 
37 
     | 
    
         
             
                // delegates
         
     | 
| 
       35 
38 
     | 
    
         
             
                public Parser[] getDelegates() {
         
     | 
| 
         @@ -177,7 +180,7 @@ public TreeAdaptor getTreeAdaptor() { 
     | 
|
| 
       177 
180 
     | 
    
         | 
| 
       178 
181 
     | 
    
         | 
| 
       179 
182 
     | 
    
         
             
                // $ANTLR start "expr"
         
     | 
| 
       180 
     | 
    
         
            -
                // antlr/UIQuery.g:38:1: expr : ( className | filter ) ;
         
     | 
| 
      
 183 
     | 
    
         
            +
                // antlr/UIQuery.g:38:1: expr : ( className | filter | visibility ) ;
         
     | 
| 
       181 
184 
     | 
    
         
             
                public final UIQueryParser.expr_return expr() throws RecognitionException {
         
     | 
| 
       182 
185 
     | 
    
         
             
                    UIQueryParser.expr_return retval = new UIQueryParser.expr_return();
         
     | 
| 
       183 
186 
     | 
    
         
             
                    retval.start = input.LT(1);
         
     | 
| 
         @@ -189,46 +192,59 @@ public TreeAdaptor getTreeAdaptor() { 
     | 
|
| 
       189 
192 
     | 
    
         | 
| 
       190 
193 
     | 
    
         
             
                    UIQueryParser.filter_return filter5 =null;
         
     | 
| 
       191 
194 
     | 
    
         | 
| 
      
 195 
     | 
    
         
            +
                    UIQueryParser.visibility_return visibility6 =null;
         
     | 
| 
      
 196 
     | 
    
         
            +
             
     | 
| 
       192 
197 
     | 
    
         | 
| 
       193 
198 
     | 
    
         | 
| 
       194 
199 
     | 
    
         
             
                    try {
         
     | 
| 
       195 
     | 
    
         
            -
                        // antlr/UIQuery.g:38:6: ( ( className | filter ) )
         
     | 
| 
       196 
     | 
    
         
            -
                        // antlr/UIQuery.g:38:8: ( className | filter )
         
     | 
| 
      
 200 
     | 
    
         
            +
                        // antlr/UIQuery.g:38:6: ( ( className | filter | visibility ) )
         
     | 
| 
      
 201 
     | 
    
         
            +
                        // antlr/UIQuery.g:38:8: ( className | filter | visibility )
         
     | 
| 
       197 
202 
     | 
    
         
             
                        {
         
     | 
| 
       198 
203 
     | 
    
         
             
                        root_0 = (CommonTree)adaptor.nil();
         
     | 
| 
       199 
204 
     | 
    
         | 
| 
       200 
205 
     | 
    
         | 
| 
       201 
     | 
    
         
            -
                        // antlr/UIQuery.g:38:8: ( className | filter )
         
     | 
| 
       202 
     | 
    
         
            -
                        int alt2= 
     | 
| 
       203 
     | 
    
         
            -
                         
     | 
| 
       204 
     | 
    
         
            -
             
     | 
| 
       205 
     | 
    
         
            -
                         
     | 
| 
       206 
     | 
    
         
            -
                             
     | 
| 
      
 206 
     | 
    
         
            +
                        // antlr/UIQuery.g:38:8: ( className | filter | visibility )
         
     | 
| 
      
 207 
     | 
    
         
            +
                        int alt2=3;
         
     | 
| 
      
 208 
     | 
    
         
            +
                        switch ( input.LA(1) ) {
         
     | 
| 
      
 209 
     | 
    
         
            +
                        case QUALIFIED_NAME:
         
     | 
| 
      
 210 
     | 
    
         
            +
                        case WILDCARD:
         
     | 
| 
      
 211 
     | 
    
         
            +
                            {
         
     | 
| 
      
 212 
     | 
    
         
            +
                            alt2=1;
         
     | 
| 
      
 213 
     | 
    
         
            +
                            }
         
     | 
| 
      
 214 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 215 
     | 
    
         
            +
                        case NAME:
         
     | 
| 
      
 216 
     | 
    
         
            +
                            {
         
     | 
| 
      
 217 
     | 
    
         
            +
                            int LA2_2 = input.LA(2);
         
     | 
| 
       207 
218 
     | 
    
         | 
| 
       208 
     | 
    
         
            -
                            if ( ( 
     | 
| 
      
 219 
     | 
    
         
            +
                            if ( (LA2_2==FILTER_COLON) ) {
         
     | 
| 
       209 
220 
     | 
    
         
             
                                alt2=2;
         
     | 
| 
       210 
221 
     | 
    
         
             
                            }
         
     | 
| 
       211 
     | 
    
         
            -
                            else if ( ( 
     | 
| 
      
 222 
     | 
    
         
            +
                            else if ( (LA2_2==EOF||LA2_2==WHITE) ) {
         
     | 
| 
       212 
223 
     | 
    
         
             
                                alt2=1;
         
     | 
| 
       213 
224 
     | 
    
         
             
                            }
         
     | 
| 
       214 
225 
     | 
    
         
             
                            else {
         
     | 
| 
       215 
226 
     | 
    
         
             
                                NoViableAltException nvae =
         
     | 
| 
       216 
     | 
    
         
            -
                                    new NoViableAltException("", 2,  
     | 
| 
      
 227 
     | 
    
         
            +
                                    new NoViableAltException("", 2, 2, input);
         
     | 
| 
       217 
228 
     | 
    
         | 
| 
       218 
229 
     | 
    
         
             
                                throw nvae;
         
     | 
| 
       219 
230 
     | 
    
         | 
| 
       220 
231 
     | 
    
         
             
                            }
         
     | 
| 
       221 
     | 
    
         
            -
             
     | 
| 
       222 
     | 
    
         
            -
             
     | 
| 
       223 
     | 
    
         
            -
             
     | 
| 
       224 
     | 
    
         
            -
                         
     | 
| 
       225 
     | 
    
         
            -
             
     | 
| 
      
 232 
     | 
    
         
            +
                            }
         
     | 
| 
      
 233 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 234 
     | 
    
         
            +
                        case ALL:
         
     | 
| 
      
 235 
     | 
    
         
            +
                        case VISIBLE:
         
     | 
| 
      
 236 
     | 
    
         
            +
                            {
         
     | 
| 
      
 237 
     | 
    
         
            +
                            alt2=3;
         
     | 
| 
      
 238 
     | 
    
         
            +
                            }
         
     | 
| 
      
 239 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 240 
     | 
    
         
            +
                        default:
         
     | 
| 
       226 
241 
     | 
    
         
             
                            NoViableAltException nvae =
         
     | 
| 
       227 
242 
     | 
    
         
             
                                new NoViableAltException("", 2, 0, input);
         
     | 
| 
       228 
243 
     | 
    
         | 
| 
       229 
244 
     | 
    
         
             
                            throw nvae;
         
     | 
| 
       230 
245 
     | 
    
         | 
| 
       231 
246 
     | 
    
         
             
                        }
         
     | 
| 
      
 247 
     | 
    
         
            +
             
     | 
| 
       232 
248 
     | 
    
         
             
                        switch (alt2) {
         
     | 
| 
       233 
249 
     | 
    
         
             
                            case 1 :
         
     | 
| 
       234 
250 
     | 
    
         
             
                                // antlr/UIQuery.g:38:9: className
         
     | 
| 
         @@ -252,6 +268,18 @@ public TreeAdaptor getTreeAdaptor() { 
     | 
|
| 
       252 
268 
     | 
    
         | 
| 
       253 
269 
     | 
    
         
             
                                adaptor.addChild(root_0, filter5.getTree());
         
     | 
| 
       254 
270 
     | 
    
         | 
| 
      
 271 
     | 
    
         
            +
                                }
         
     | 
| 
      
 272 
     | 
    
         
            +
                                break;
         
     | 
| 
      
 273 
     | 
    
         
            +
                            case 3 :
         
     | 
| 
      
 274 
     | 
    
         
            +
                                // antlr/UIQuery.g:38:30: visibility
         
     | 
| 
      
 275 
     | 
    
         
            +
                                {
         
     | 
| 
      
 276 
     | 
    
         
            +
                                pushFollow(FOLLOW_visibility_in_expr85);
         
     | 
| 
      
 277 
     | 
    
         
            +
                                visibility6=visibility();
         
     | 
| 
      
 278 
     | 
    
         
            +
             
     | 
| 
      
 279 
     | 
    
         
            +
                                state._fsp--;
         
     | 
| 
      
 280 
     | 
    
         
            +
             
     | 
| 
      
 281 
     | 
    
         
            +
                                adaptor.addChild(root_0, visibility6.getTree());
         
     | 
| 
      
 282 
     | 
    
         
            +
             
     | 
| 
       255 
283 
     | 
    
         
             
                                }
         
     | 
| 
       256 
284 
     | 
    
         
             
                                break;
         
     | 
| 
       257 
285 
     | 
    
         | 
| 
         @@ -289,7 +317,7 @@ public TreeAdaptor getTreeAdaptor() { 
     | 
|
| 
       289 
317 
     | 
    
         | 
| 
       290 
318 
     | 
    
         | 
| 
       291 
319 
     | 
    
         
             
                // $ANTLR start "className"
         
     | 
| 
       292 
     | 
    
         
            -
                // antlr/UIQuery.g:41:1: className : ( NAME ^| QUALIFIED_NAME ^) ;
         
     | 
| 
      
 320 
     | 
    
         
            +
                // antlr/UIQuery.g:41:1: className : ( WILDCARD ^| NAME ^| QUALIFIED_NAME ^) ;
         
     | 
| 
       293 
321 
     | 
    
         
             
                public final UIQueryParser.className_return className() throws RecognitionException {
         
     | 
| 
       294 
322 
     | 
    
         
             
                    UIQueryParser.className_return retval = new UIQueryParser.className_return();
         
     | 
| 
       295 
323 
     | 
    
         
             
                    retval.start = input.LT(1);
         
     | 
| 
         @@ -297,57 +325,80 @@ public TreeAdaptor getTreeAdaptor() { 
     | 
|
| 
       297 
325 
     | 
    
         | 
| 
       298 
326 
     | 
    
         
             
                    CommonTree root_0 = null;
         
     | 
| 
       299 
327 
     | 
    
         | 
| 
       300 
     | 
    
         
            -
                    Token  
     | 
| 
       301 
     | 
    
         
            -
                    Token  
     | 
| 
      
 328 
     | 
    
         
            +
                    Token WILDCARD7=null;
         
     | 
| 
      
 329 
     | 
    
         
            +
                    Token NAME8=null;
         
     | 
| 
      
 330 
     | 
    
         
            +
                    Token QUALIFIED_NAME9=null;
         
     | 
| 
       302 
331 
     | 
    
         | 
| 
       303 
     | 
    
         
            -
                    CommonTree  
     | 
| 
       304 
     | 
    
         
            -
                    CommonTree  
     | 
| 
      
 332 
     | 
    
         
            +
                    CommonTree WILDCARD7_tree=null;
         
     | 
| 
      
 333 
     | 
    
         
            +
                    CommonTree NAME8_tree=null;
         
     | 
| 
      
 334 
     | 
    
         
            +
                    CommonTree QUALIFIED_NAME9_tree=null;
         
     | 
| 
       305 
335 
     | 
    
         | 
| 
       306 
336 
     | 
    
         
             
                    try {
         
     | 
| 
       307 
     | 
    
         
            -
                        // antlr/UIQuery.g:41:13: ( ( NAME ^| QUALIFIED_NAME ^) )
         
     | 
| 
       308 
     | 
    
         
            -
                        // antlr/UIQuery.g:41:17: ( NAME ^| QUALIFIED_NAME ^)
         
     | 
| 
      
 337 
     | 
    
         
            +
                        // antlr/UIQuery.g:41:13: ( ( WILDCARD ^| NAME ^| QUALIFIED_NAME ^) )
         
     | 
| 
      
 338 
     | 
    
         
            +
                        // antlr/UIQuery.g:41:17: ( WILDCARD ^| NAME ^| QUALIFIED_NAME ^)
         
     | 
| 
       309 
339 
     | 
    
         
             
                        {
         
     | 
| 
       310 
340 
     | 
    
         
             
                        root_0 = (CommonTree)adaptor.nil();
         
     | 
| 
       311 
341 
     | 
    
         | 
| 
       312 
342 
     | 
    
         | 
| 
       313 
     | 
    
         
            -
                        // antlr/UIQuery.g:41:17: ( NAME ^| QUALIFIED_NAME ^)
         
     | 
| 
       314 
     | 
    
         
            -
                        int alt3= 
     | 
| 
       315 
     | 
    
         
            -
                         
     | 
| 
       316 
     | 
    
         
            -
             
     | 
| 
       317 
     | 
    
         
            -
             
     | 
| 
      
 343 
     | 
    
         
            +
                        // antlr/UIQuery.g:41:17: ( WILDCARD ^| NAME ^| QUALIFIED_NAME ^)
         
     | 
| 
      
 344 
     | 
    
         
            +
                        int alt3=3;
         
     | 
| 
      
 345 
     | 
    
         
            +
                        switch ( input.LA(1) ) {
         
     | 
| 
      
 346 
     | 
    
         
            +
                        case WILDCARD:
         
     | 
| 
      
 347 
     | 
    
         
            +
                            {
         
     | 
| 
       318 
348 
     | 
    
         
             
                            alt3=1;
         
     | 
| 
       319 
     | 
    
         
            -
             
     | 
| 
       320 
     | 
    
         
            -
             
     | 
| 
      
 349 
     | 
    
         
            +
                            }
         
     | 
| 
      
 350 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 351 
     | 
    
         
            +
                        case NAME:
         
     | 
| 
      
 352 
     | 
    
         
            +
                            {
         
     | 
| 
       321 
353 
     | 
    
         
             
                            alt3=2;
         
     | 
| 
       322 
     | 
    
         
            -
             
     | 
| 
       323 
     | 
    
         
            -
             
     | 
| 
      
 354 
     | 
    
         
            +
                            }
         
     | 
| 
      
 355 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 356 
     | 
    
         
            +
                        case QUALIFIED_NAME:
         
     | 
| 
      
 357 
     | 
    
         
            +
                            {
         
     | 
| 
      
 358 
     | 
    
         
            +
                            alt3=3;
         
     | 
| 
      
 359 
     | 
    
         
            +
                            }
         
     | 
| 
      
 360 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 361 
     | 
    
         
            +
                        default:
         
     | 
| 
       324 
362 
     | 
    
         
             
                            NoViableAltException nvae =
         
     | 
| 
       325 
363 
     | 
    
         
             
                                new NoViableAltException("", 3, 0, input);
         
     | 
| 
       326 
364 
     | 
    
         | 
| 
       327 
365 
     | 
    
         
             
                            throw nvae;
         
     | 
| 
       328 
366 
     | 
    
         | 
| 
       329 
367 
     | 
    
         
             
                        }
         
     | 
| 
      
 368 
     | 
    
         
            +
             
     | 
| 
       330 
369 
     | 
    
         
             
                        switch (alt3) {
         
     | 
| 
       331 
370 
     | 
    
         
             
                            case 1 :
         
     | 
| 
       332 
     | 
    
         
            -
                                // antlr/UIQuery.g:41:18:  
     | 
| 
      
 371 
     | 
    
         
            +
                                // antlr/UIQuery.g:41:18: WILDCARD ^
         
     | 
| 
       333 
372 
     | 
    
         
             
                                {
         
     | 
| 
       334 
     | 
    
         
            -
                                 
     | 
| 
       335 
     | 
    
         
            -
                                 
     | 
| 
       336 
     | 
    
         
            -
                                (CommonTree)adaptor.create( 
     | 
| 
      
 373 
     | 
    
         
            +
                                WILDCARD7=(Token)match(input,WILDCARD,FOLLOW_WILDCARD_in_className103); 
         
     | 
| 
      
 374 
     | 
    
         
            +
                                WILDCARD7_tree = 
         
     | 
| 
      
 375 
     | 
    
         
            +
                                (CommonTree)adaptor.create(WILDCARD7)
         
     | 
| 
       337 
376 
     | 
    
         
             
                                ;
         
     | 
| 
       338 
     | 
    
         
            -
                                root_0 = (CommonTree)adaptor.becomeRoot( 
     | 
| 
      
 377 
     | 
    
         
            +
                                root_0 = (CommonTree)adaptor.becomeRoot(WILDCARD7_tree, root_0);
         
     | 
| 
       339 
378 
     | 
    
         | 
| 
       340 
379 
     | 
    
         | 
| 
       341 
380 
     | 
    
         
             
                                }
         
     | 
| 
       342 
381 
     | 
    
         
             
                                break;
         
     | 
| 
       343 
382 
     | 
    
         
             
                            case 2 :
         
     | 
| 
       344 
     | 
    
         
            -
                                // antlr/UIQuery.g:41: 
     | 
| 
      
 383 
     | 
    
         
            +
                                // antlr/UIQuery.g:41:30: NAME ^
         
     | 
| 
       345 
384 
     | 
    
         
             
                                {
         
     | 
| 
       346 
     | 
    
         
            -
                                 
     | 
| 
       347 
     | 
    
         
            -
                                 
     | 
| 
       348 
     | 
    
         
            -
                                (CommonTree)adaptor.create( 
     | 
| 
      
 385 
     | 
    
         
            +
                                NAME8=(Token)match(input,NAME,FOLLOW_NAME_in_className108); 
         
     | 
| 
      
 386 
     | 
    
         
            +
                                NAME8_tree = 
         
     | 
| 
      
 387 
     | 
    
         
            +
                                (CommonTree)adaptor.create(NAME8)
         
     | 
| 
       349 
388 
     | 
    
         
             
                                ;
         
     | 
| 
       350 
     | 
    
         
            -
                                root_0 = (CommonTree)adaptor.becomeRoot( 
     | 
| 
      
 389 
     | 
    
         
            +
                                root_0 = (CommonTree)adaptor.becomeRoot(NAME8_tree, root_0);
         
     | 
| 
      
 390 
     | 
    
         
            +
             
     | 
| 
      
 391 
     | 
    
         
            +
             
     | 
| 
      
 392 
     | 
    
         
            +
                                }
         
     | 
| 
      
 393 
     | 
    
         
            +
                                break;
         
     | 
| 
      
 394 
     | 
    
         
            +
                            case 3 :
         
     | 
| 
      
 395 
     | 
    
         
            +
                                // antlr/UIQuery.g:41:38: QUALIFIED_NAME ^
         
     | 
| 
      
 396 
     | 
    
         
            +
                                {
         
     | 
| 
      
 397 
     | 
    
         
            +
                                QUALIFIED_NAME9=(Token)match(input,QUALIFIED_NAME,FOLLOW_QUALIFIED_NAME_in_className113); 
         
     | 
| 
      
 398 
     | 
    
         
            +
                                QUALIFIED_NAME9_tree = 
         
     | 
| 
      
 399 
     | 
    
         
            +
                                (CommonTree)adaptor.create(QUALIFIED_NAME9)
         
     | 
| 
      
 400 
     | 
    
         
            +
                                ;
         
     | 
| 
      
 401 
     | 
    
         
            +
                                root_0 = (CommonTree)adaptor.becomeRoot(QUALIFIED_NAME9_tree, root_0);
         
     | 
| 
       351 
402 
     | 
    
         | 
| 
       352 
403 
     | 
    
         | 
| 
       353 
404 
     | 
    
         
             
                                }
         
     | 
| 
         @@ -380,6 +431,104 @@ public TreeAdaptor getTreeAdaptor() { 
     | 
|
| 
       380 
431 
     | 
    
         
             
                // $ANTLR end "className"
         
     | 
| 
       381 
432 
     | 
    
         | 
| 
       382 
433 
     | 
    
         | 
| 
      
 434 
     | 
    
         
            +
                public static class visibility_return extends ParserRuleReturnScope {
         
     | 
| 
      
 435 
     | 
    
         
            +
                    CommonTree tree;
         
     | 
| 
      
 436 
     | 
    
         
            +
                    public Object getTree() { return tree; }
         
     | 
| 
      
 437 
     | 
    
         
            +
                };
         
     | 
| 
      
 438 
     | 
    
         
            +
             
     | 
| 
      
 439 
     | 
    
         
            +
             
     | 
| 
      
 440 
     | 
    
         
            +
                // $ANTLR start "visibility"
         
     | 
| 
      
 441 
     | 
    
         
            +
                // antlr/UIQuery.g:47:1: visibility : ( ALL ^| VISIBLE ^) ;
         
     | 
| 
      
 442 
     | 
    
         
            +
                public final UIQueryParser.visibility_return visibility() throws RecognitionException {
         
     | 
| 
      
 443 
     | 
    
         
            +
                    UIQueryParser.visibility_return retval = new UIQueryParser.visibility_return();
         
     | 
| 
      
 444 
     | 
    
         
            +
                    retval.start = input.LT(1);
         
     | 
| 
      
 445 
     | 
    
         
            +
             
     | 
| 
      
 446 
     | 
    
         
            +
             
     | 
| 
      
 447 
     | 
    
         
            +
                    CommonTree root_0 = null;
         
     | 
| 
      
 448 
     | 
    
         
            +
             
     | 
| 
      
 449 
     | 
    
         
            +
                    Token ALL10=null;
         
     | 
| 
      
 450 
     | 
    
         
            +
                    Token VISIBLE11=null;
         
     | 
| 
      
 451 
     | 
    
         
            +
             
     | 
| 
      
 452 
     | 
    
         
            +
                    CommonTree ALL10_tree=null;
         
     | 
| 
      
 453 
     | 
    
         
            +
                    CommonTree VISIBLE11_tree=null;
         
     | 
| 
      
 454 
     | 
    
         
            +
             
     | 
| 
      
 455 
     | 
    
         
            +
                    try {
         
     | 
| 
      
 456 
     | 
    
         
            +
                        // antlr/UIQuery.g:47:14: ( ( ALL ^| VISIBLE ^) )
         
     | 
| 
      
 457 
     | 
    
         
            +
                        // antlr/UIQuery.g:47:18: ( ALL ^| VISIBLE ^)
         
     | 
| 
      
 458 
     | 
    
         
            +
                        {
         
     | 
| 
      
 459 
     | 
    
         
            +
                        root_0 = (CommonTree)adaptor.nil();
         
     | 
| 
      
 460 
     | 
    
         
            +
             
     | 
| 
      
 461 
     | 
    
         
            +
             
     | 
| 
      
 462 
     | 
    
         
            +
                        // antlr/UIQuery.g:47:18: ( ALL ^| VISIBLE ^)
         
     | 
| 
      
 463 
     | 
    
         
            +
                        int alt4=2;
         
     | 
| 
      
 464 
     | 
    
         
            +
                        int LA4_0 = input.LA(1);
         
     | 
| 
      
 465 
     | 
    
         
            +
             
     | 
| 
      
 466 
     | 
    
         
            +
                        if ( (LA4_0==ALL) ) {
         
     | 
| 
      
 467 
     | 
    
         
            +
                            alt4=1;
         
     | 
| 
      
 468 
     | 
    
         
            +
                        }
         
     | 
| 
      
 469 
     | 
    
         
            +
                        else if ( (LA4_0==VISIBLE) ) {
         
     | 
| 
      
 470 
     | 
    
         
            +
                            alt4=2;
         
     | 
| 
      
 471 
     | 
    
         
            +
                        }
         
     | 
| 
      
 472 
     | 
    
         
            +
                        else {
         
     | 
| 
      
 473 
     | 
    
         
            +
                            NoViableAltException nvae =
         
     | 
| 
      
 474 
     | 
    
         
            +
                                new NoViableAltException("", 4, 0, input);
         
     | 
| 
      
 475 
     | 
    
         
            +
             
     | 
| 
      
 476 
     | 
    
         
            +
                            throw nvae;
         
     | 
| 
      
 477 
     | 
    
         
            +
             
     | 
| 
      
 478 
     | 
    
         
            +
                        }
         
     | 
| 
      
 479 
     | 
    
         
            +
                        switch (alt4) {
         
     | 
| 
      
 480 
     | 
    
         
            +
                            case 1 :
         
     | 
| 
      
 481 
     | 
    
         
            +
                                // antlr/UIQuery.g:47:19: ALL ^
         
     | 
| 
      
 482 
     | 
    
         
            +
                                {
         
     | 
| 
      
 483 
     | 
    
         
            +
                                ALL10=(Token)match(input,ALL,FOLLOW_ALL_in_visibility151); 
         
     | 
| 
      
 484 
     | 
    
         
            +
                                ALL10_tree = 
         
     | 
| 
      
 485 
     | 
    
         
            +
                                (CommonTree)adaptor.create(ALL10)
         
     | 
| 
      
 486 
     | 
    
         
            +
                                ;
         
     | 
| 
      
 487 
     | 
    
         
            +
                                root_0 = (CommonTree)adaptor.becomeRoot(ALL10_tree, root_0);
         
     | 
| 
      
 488 
     | 
    
         
            +
             
     | 
| 
      
 489 
     | 
    
         
            +
             
     | 
| 
      
 490 
     | 
    
         
            +
                                }
         
     | 
| 
      
 491 
     | 
    
         
            +
                                break;
         
     | 
| 
      
 492 
     | 
    
         
            +
                            case 2 :
         
     | 
| 
      
 493 
     | 
    
         
            +
                                // antlr/UIQuery.g:47:26: VISIBLE ^
         
     | 
| 
      
 494 
     | 
    
         
            +
                                {
         
     | 
| 
      
 495 
     | 
    
         
            +
                                VISIBLE11=(Token)match(input,VISIBLE,FOLLOW_VISIBLE_in_visibility156); 
         
     | 
| 
      
 496 
     | 
    
         
            +
                                VISIBLE11_tree = 
         
     | 
| 
      
 497 
     | 
    
         
            +
                                (CommonTree)adaptor.create(VISIBLE11)
         
     | 
| 
      
 498 
     | 
    
         
            +
                                ;
         
     | 
| 
      
 499 
     | 
    
         
            +
                                root_0 = (CommonTree)adaptor.becomeRoot(VISIBLE11_tree, root_0);
         
     | 
| 
      
 500 
     | 
    
         
            +
             
     | 
| 
      
 501 
     | 
    
         
            +
             
     | 
| 
      
 502 
     | 
    
         
            +
                                }
         
     | 
| 
      
 503 
     | 
    
         
            +
                                break;
         
     | 
| 
      
 504 
     | 
    
         
            +
             
     | 
| 
      
 505 
     | 
    
         
            +
                        }
         
     | 
| 
      
 506 
     | 
    
         
            +
             
     | 
| 
      
 507 
     | 
    
         
            +
             
     | 
| 
      
 508 
     | 
    
         
            +
                        }
         
     | 
| 
      
 509 
     | 
    
         
            +
             
     | 
| 
      
 510 
     | 
    
         
            +
                        retval.stop = input.LT(-1);
         
     | 
| 
      
 511 
     | 
    
         
            +
             
     | 
| 
      
 512 
     | 
    
         
            +
             
     | 
| 
      
 513 
     | 
    
         
            +
                        retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
         
     | 
| 
      
 514 
     | 
    
         
            +
                        adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
         
     | 
| 
      
 515 
     | 
    
         
            +
             
     | 
| 
      
 516 
     | 
    
         
            +
                    }
         
     | 
| 
      
 517 
     | 
    
         
            +
                    catch (RecognitionException re) {
         
     | 
| 
      
 518 
     | 
    
         
            +
                        reportError(re);
         
     | 
| 
      
 519 
     | 
    
         
            +
                        recover(input,re);
         
     | 
| 
      
 520 
     | 
    
         
            +
                	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
         
     | 
| 
      
 521 
     | 
    
         
            +
             
     | 
| 
      
 522 
     | 
    
         
            +
                    }
         
     | 
| 
      
 523 
     | 
    
         
            +
             
     | 
| 
      
 524 
     | 
    
         
            +
                    finally {
         
     | 
| 
      
 525 
     | 
    
         
            +
                    	// do for sure before leaving
         
     | 
| 
      
 526 
     | 
    
         
            +
                    }
         
     | 
| 
      
 527 
     | 
    
         
            +
                    return retval;
         
     | 
| 
      
 528 
     | 
    
         
            +
                }
         
     | 
| 
      
 529 
     | 
    
         
            +
                // $ANTLR end "visibility"
         
     | 
| 
      
 530 
     | 
    
         
            +
             
     | 
| 
      
 531 
     | 
    
         
            +
             
     | 
| 
       383 
532 
     | 
    
         
             
                public static class filter_return extends ParserRuleReturnScope {
         
     | 
| 
       384 
533 
     | 
    
         
             
                    CommonTree tree;
         
     | 
| 
       385 
534 
     | 
    
         
             
                    public Object getTree() { return tree; }
         
     | 
| 
         @@ -387,7 +536,7 @@ public TreeAdaptor getTreeAdaptor() { 
     | 
|
| 
       387 
536 
     | 
    
         | 
| 
       388 
537 
     | 
    
         | 
| 
       389 
538 
     | 
    
         
             
                // $ANTLR start "filter"
         
     | 
| 
       390 
     | 
    
         
            -
                // antlr/UIQuery.g: 
     | 
| 
      
 539 
     | 
    
         
            +
                // antlr/UIQuery.g:54:1: filter : NAME FILTER_COLON ^ ( INT | STRING | BOOL | NIL ) ;
         
     | 
| 
       391 
540 
     | 
    
         
             
                public final UIQueryParser.filter_return filter() throws RecognitionException {
         
     | 
| 
       392 
541 
     | 
    
         
             
                    UIQueryParser.filter_return retval = new UIQueryParser.filter_return();
         
     | 
| 
       393 
542 
     | 
    
         
             
                    retval.start = input.LT(1);
         
     | 
| 
         @@ -395,41 +544,41 @@ public TreeAdaptor getTreeAdaptor() { 
     | 
|
| 
       395 
544 
     | 
    
         | 
| 
       396 
545 
     | 
    
         
             
                    CommonTree root_0 = null;
         
     | 
| 
       397 
546 
     | 
    
         | 
| 
       398 
     | 
    
         
            -
                    Token  
     | 
| 
       399 
     | 
    
         
            -
                    Token  
     | 
| 
       400 
     | 
    
         
            -
                    Token  
     | 
| 
      
 547 
     | 
    
         
            +
                    Token NAME12=null;
         
     | 
| 
      
 548 
     | 
    
         
            +
                    Token FILTER_COLON13=null;
         
     | 
| 
      
 549 
     | 
    
         
            +
                    Token set14=null;
         
     | 
| 
       401 
550 
     | 
    
         | 
| 
       402 
     | 
    
         
            -
                    CommonTree  
     | 
| 
       403 
     | 
    
         
            -
                    CommonTree  
     | 
| 
       404 
     | 
    
         
            -
                    CommonTree  
     | 
| 
      
 551 
     | 
    
         
            +
                    CommonTree NAME12_tree=null;
         
     | 
| 
      
 552 
     | 
    
         
            +
                    CommonTree FILTER_COLON13_tree=null;
         
     | 
| 
      
 553 
     | 
    
         
            +
                    CommonTree set14_tree=null;
         
     | 
| 
       405 
554 
     | 
    
         | 
| 
       406 
555 
     | 
    
         
             
                    try {
         
     | 
| 
       407 
     | 
    
         
            -
                        // antlr/UIQuery.g: 
     | 
| 
       408 
     | 
    
         
            -
                        // antlr/UIQuery.g: 
     | 
| 
      
 556 
     | 
    
         
            +
                        // antlr/UIQuery.g:54:8: ( NAME FILTER_COLON ^ ( INT | STRING | BOOL | NIL ) )
         
     | 
| 
      
 557 
     | 
    
         
            +
                        // antlr/UIQuery.g:54:10: NAME FILTER_COLON ^ ( INT | STRING | BOOL | NIL )
         
     | 
| 
       409 
558 
     | 
    
         
             
                        {
         
     | 
| 
       410 
559 
     | 
    
         
             
                        root_0 = (CommonTree)adaptor.nil();
         
     | 
| 
       411 
560 
     | 
    
         | 
| 
       412 
561 
     | 
    
         | 
| 
       413 
     | 
    
         
            -
                         
     | 
| 
       414 
     | 
    
         
            -
                         
     | 
| 
       415 
     | 
    
         
            -
                        (CommonTree)adaptor.create( 
     | 
| 
      
 562 
     | 
    
         
            +
                        NAME12=(Token)match(input,NAME,FOLLOW_NAME_in_filter183); 
         
     | 
| 
      
 563 
     | 
    
         
            +
                        NAME12_tree = 
         
     | 
| 
      
 564 
     | 
    
         
            +
                        (CommonTree)adaptor.create(NAME12)
         
     | 
| 
       416 
565 
     | 
    
         
             
                        ;
         
     | 
| 
       417 
     | 
    
         
            -
                        adaptor.addChild(root_0,  
     | 
| 
      
 566 
     | 
    
         
            +
                        adaptor.addChild(root_0, NAME12_tree);
         
     | 
| 
       418 
567 
     | 
    
         | 
| 
       419 
568 
     | 
    
         | 
| 
       420 
     | 
    
         
            -
                         
     | 
| 
       421 
     | 
    
         
            -
                         
     | 
| 
       422 
     | 
    
         
            -
                        (CommonTree)adaptor.create( 
     | 
| 
      
 569 
     | 
    
         
            +
                        FILTER_COLON13=(Token)match(input,FILTER_COLON,FOLLOW_FILTER_COLON_in_filter185); 
         
     | 
| 
      
 570 
     | 
    
         
            +
                        FILTER_COLON13_tree = 
         
     | 
| 
      
 571 
     | 
    
         
            +
                        (CommonTree)adaptor.create(FILTER_COLON13)
         
     | 
| 
       423 
572 
     | 
    
         
             
                        ;
         
     | 
| 
       424 
     | 
    
         
            -
                        root_0 = (CommonTree)adaptor.becomeRoot( 
     | 
| 
      
 573 
     | 
    
         
            +
                        root_0 = (CommonTree)adaptor.becomeRoot(FILTER_COLON13_tree, root_0);
         
     | 
| 
       425 
574 
     | 
    
         | 
| 
       426 
575 
     | 
    
         | 
| 
       427 
     | 
    
         
            -
                         
     | 
| 
      
 576 
     | 
    
         
            +
                        set14=(Token)input.LT(1);
         
     | 
| 
       428 
577 
     | 
    
         | 
| 
       429 
578 
     | 
    
         
             
                        if ( input.LA(1)==BOOL||input.LA(1)==INT||input.LA(1)==NIL||input.LA(1)==STRING ) {
         
     | 
| 
       430 
579 
     | 
    
         
             
                            input.consume();
         
     | 
| 
       431 
580 
     | 
    
         
             
                            adaptor.addChild(root_0, 
         
     | 
| 
       432 
     | 
    
         
            -
                            (CommonTree)adaptor.create( 
     | 
| 
      
 581 
     | 
    
         
            +
                            (CommonTree)adaptor.create(set14)
         
     | 
| 
       433 
582 
     | 
    
         
             
                            );
         
     | 
| 
       434 
583 
     | 
    
         
             
                            state.errorRecovery=false;
         
     | 
| 
       435 
584 
     | 
    
         
             
                        }
         
     | 
| 
         @@ -467,15 +616,19 @@ public TreeAdaptor getTreeAdaptor() { 
     | 
|
| 
       467 
616 
     | 
    
         | 
| 
       468 
617 
     | 
    
         | 
| 
       469 
618 
     | 
    
         | 
| 
       470 
     | 
    
         
            -
                public static final BitSet FOLLOW_expr_in_query53 = new BitSet(new long[]{ 
     | 
| 
       471 
     | 
    
         
            -
                public static final BitSet FOLLOW_WHITE_in_query56 = new BitSet(new long[]{ 
     | 
| 
       472 
     | 
    
         
            -
                public static final BitSet FOLLOW_expr_in_query59 = new BitSet(new long[]{ 
     | 
| 
      
 619 
     | 
    
         
            +
                public static final BitSet FOLLOW_expr_in_query53 = new BitSet(new long[]{0x0000000000020002L});
         
     | 
| 
      
 620 
     | 
    
         
            +
                public static final BitSet FOLLOW_WHITE_in_query56 = new BitSet(new long[]{0x0000000000052410L});
         
     | 
| 
      
 621 
     | 
    
         
            +
                public static final BitSet FOLLOW_expr_in_query59 = new BitSet(new long[]{0x0000000000020002L});
         
     | 
| 
       473 
622 
     | 
    
         
             
                public static final BitSet FOLLOW_className_in_expr77 = new BitSet(new long[]{0x0000000000000002L});
         
     | 
| 
       474 
623 
     | 
    
         
             
                public static final BitSet FOLLOW_filter_in_expr81 = new BitSet(new long[]{0x0000000000000002L});
         
     | 
| 
       475 
     | 
    
         
            -
                public static final BitSet  
     | 
| 
       476 
     | 
    
         
            -
                public static final BitSet  
     | 
| 
       477 
     | 
    
         
            -
                public static final BitSet  
     | 
| 
       478 
     | 
    
         
            -
                public static final BitSet  
     | 
| 
       479 
     | 
    
         
            -
                public static final BitSet  
     | 
| 
      
 624 
     | 
    
         
            +
                public static final BitSet FOLLOW_visibility_in_expr85 = new BitSet(new long[]{0x0000000000000002L});
         
     | 
| 
      
 625 
     | 
    
         
            +
                public static final BitSet FOLLOW_WILDCARD_in_className103 = new BitSet(new long[]{0x0000000000000002L});
         
     | 
| 
      
 626 
     | 
    
         
            +
                public static final BitSet FOLLOW_NAME_in_className108 = new BitSet(new long[]{0x0000000000000002L});
         
     | 
| 
      
 627 
     | 
    
         
            +
                public static final BitSet FOLLOW_QUALIFIED_NAME_in_className113 = new BitSet(new long[]{0x0000000000000002L});
         
     | 
| 
      
 628 
     | 
    
         
            +
                public static final BitSet FOLLOW_ALL_in_visibility151 = new BitSet(new long[]{0x0000000000000002L});
         
     | 
| 
      
 629 
     | 
    
         
            +
                public static final BitSet FOLLOW_VISIBLE_in_visibility156 = new BitSet(new long[]{0x0000000000000002L});
         
     | 
| 
      
 630 
     | 
    
         
            +
                public static final BitSet FOLLOW_NAME_in_filter183 = new BitSet(new long[]{0x0000000000000080L});
         
     | 
| 
      
 631 
     | 
    
         
            +
                public static final BitSet FOLLOW_FILTER_COLON_in_filter185 = new BitSet(new long[]{0x0000000000004A20L});
         
     | 
| 
      
 632 
     | 
    
         
            +
                public static final BitSet FOLLOW_set_in_filter188 = new BitSet(new long[]{0x0000000000000002L});
         
     | 
| 
       480 
633 
     | 
    
         | 
| 
       481 
634 
     | 
    
         
             
            }
         
     |