// $ANTLR 3.4 /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g 2018-07-10 08:15:55

package org.irisa.genouest.logol.parser;
 

import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked"})
public class logolLexer extends Lexer {
    public static final int EOF=-1;
    public static final int T__17=17;
    public static final int T__18=18;
    public static final int T__19=19;
    public static final int T__20=20;
    public static final int T__21=21;
    public static final int T__22=22;
    public static final int T__23=23;
    public static final int T__24=24;
    public static final int T__25=25;
    public static final int T__26=26;
    public static final int T__27=27;
    public static final int T__28=28;
    public static final int T__29=29;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int T__50=50;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__59=59;
    public static final int ANY=4;
    public static final int COMPARATOR=5;
    public static final int ID=6;
    public static final int INT=7;
    public static final int LINE_COMMENT=8;
    public static final int LOWID=9;
    public static final int ModelName=10;
    public static final int NEWLINE=11;
    public static final int Sequence=12;
    public static final int SequenceDef=13;
    public static final int VARIABLE=14;
    public static final int VARID=15;
    public static final int WHITESPACE=16;

    // delegates
    // delegators
    public Lexer[] getDelegates() {
        return new Lexer[] {};
    }

    public logolLexer() {} 
    public logolLexer(CharStream input) {
        this(input, new RecognizerSharedState());
    }
    public logolLexer(CharStream input, RecognizerSharedState state) {
        super(input,state);
    }
    public String getGrammarFileName() { return "/opt/conda/conda-bld/logol_1531210364456/work/src/logol.g"; }

    // $ANTLR start "T__17"
    public final void mT__17() throws RecognitionException {
        try {
            int _type = T__17;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:11:7: ( '!' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:11:9: '!'
            {
            match('!'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__17"

    // $ANTLR start "T__18"
    public final void mT__18() throws RecognitionException {
        try {
            int _type = T__18;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:12:7: ( '!external' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:12:9: '!external'
            {
            match("!external"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__18"

    // $ANTLR start "T__19"
    public final void mT__19() throws RecognitionException {
        try {
            int _type = T__19;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:13:7: ( '\"' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:13:9: '\"'
            {
            match('\"'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__19"

    // $ANTLR start "T__20"
    public final void mT__20() throws RecognitionException {
        try {
            int _type = T__20;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:14:7: ( '#' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:14:9: '#'
            {
            match('#'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__20"

    // $ANTLR start "T__21"
    public final void mT__21() throws RecognitionException {
        try {
            int _type = T__21;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:15:7: ( '$$' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:15:9: '$$'
            {
            match("$$"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__21"

    // $ANTLR start "T__22"
    public final void mT__22() throws RecognitionException {
        try {
            int _type = T__22;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:16:7: ( '$' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:16:9: '$'
            {
            match('$'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__22"

    // $ANTLR start "T__23"
    public final void mT__23() throws RecognitionException {
        try {
            int _type = T__23;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:17:7: ( '%' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:17:9: '%'
            {
            match('%'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__23"

    // $ANTLR start "T__24"
    public final void mT__24() throws RecognitionException {
        try {
            int _type = T__24;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:18:7: ( '(' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:18:9: '('
            {
            match('('); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__24"

    // $ANTLR start "T__25"
    public final void mT__25() throws RecognitionException {
        try {
            int _type = T__25;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:19:7: ( ')' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:19:9: ')'
            {
            match(')'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__25"

    // $ANTLR start "T__26"
    public final void mT__26() throws RecognitionException {
        try {
            int _type = T__26;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:20:7: ( ')+' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:20:9: ')+'
            {
            match(")+"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__26"

    // $ANTLR start "T__27"
    public final void mT__27() throws RecognitionException {
        try {
            int _type = T__27;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:21:7: ( '*' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:21:9: '*'
            {
            match('*'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__27"

    // $ANTLR start "T__28"
    public final void mT__28() throws RecognitionException {
        try {
            int _type = T__28;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:22:7: ( '+' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:22:9: '+'
            {
            match('+'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__28"

    // $ANTLR start "T__29"
    public final void mT__29() throws RecognitionException {
        try {
            int _type = T__29;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:23:7: ( ',' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:23:9: ','
            {
            match(','); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__29"

    // $ANTLR start "T__30"
    public final void mT__30() throws RecognitionException {
        try {
            int _type = T__30;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:24:7: ( '-' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:24:9: '-'
            {
            match('-'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__30"

    // $ANTLR start "T__31"
    public final void mT__31() throws RecognitionException {
        try {
            int _type = T__31;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:25:7: ( '.' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:25:9: '.'
            {
            match('.'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__31"

    // $ANTLR start "T__32"
    public final void mT__32() throws RecognitionException {
        try {
            int _type = T__32;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:26:7: ( '.*' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:26:9: '.*'
            {
            match(".*"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__32"

    // $ANTLR start "T__33"
    public final void mT__33() throws RecognitionException {
        try {
            int _type = T__33;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:27:7: ( '.maxDistance' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:27:9: '.maxDistance'
            {
            match(".maxDistance"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__33"

    // $ANTLR start "T__34"
    public final void mT__34() throws RecognitionException {
        try {
            int _type = T__34;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:28:7: ( '.minDistance' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:28:9: '.minDistance'
            {
            match(".minDistance"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__34"

    // $ANTLR start "T__35"
    public final void mT__35() throws RecognitionException {
        try {
            int _type = T__35;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:29:7: ( '.nboccur' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:29:9: '.nboccur'
            {
            match(".nboccur"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__35"

    // $ANTLR start "T__36"
    public final void mT__36() throws RecognitionException {
        try {
            int _type = T__36;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:30:7: ( '/' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:30:9: '/'
            {
            match('/'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__36"

    // $ANTLR start "T__37"
    public final void mT__37() throws RecognitionException {
        try {
            int _type = T__37;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:31:7: ( ':' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:31:9: ':'
            {
            match(':'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__37"

    // $ANTLR start "T__38"
    public final void mT__38() throws RecognitionException {
        try {
            int _type = T__38;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:32:7: ( ';' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:32:9: ';'
            {
            match(';'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__38"

    // $ANTLR start "T__39"
    public final void mT__39() throws RecognitionException {
        try {
            int _type = T__39;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:33:7: ( '==*>' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:33:9: '==*>'
            {
            match("==*>"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__39"

    // $ANTLR start "T__40"
    public final void mT__40() throws RecognitionException {
        try {
            int _type = T__40;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:34:7: ( '==>' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:34:9: '==>'
            {
            match("==>"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__40"

    // $ANTLR start "T__41"
    public final void mT__41() throws RecognitionException {
        try {
            int _type = T__41;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:35:7: ( '?' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:35:9: '?'
            {
            match('?'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__41"

    // $ANTLR start "T__42"
    public final void mT__42() throws RecognitionException {
        try {
            int _type = T__42;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:36:7: ( '@' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:36:9: '@'
            {
            match('@'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__42"

    // $ANTLR start "T__43"
    public final void mT__43() throws RecognitionException {
        try {
            int _type = T__43;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:37:7: ( '@@' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:37:9: '@@'
            {
            match("@@"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__43"

    // $ANTLR start "T__44"
    public final void mT__44() throws RecognitionException {
        try {
            int _type = T__44;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:38:7: ( 'OPT' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:38:9: 'OPT'
            {
            match("OPT"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__44"

    // $ANTLR start "T__45"
    public final void mT__45() throws RecognitionException {
        try {
            int _type = T__45;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:39:7: ( '[' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:39:9: '['
            {
            match('['); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__45"

    // $ANTLR start "T__46"
    public final void mT__46() throws RecognitionException {
        try {
            int _type = T__46;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:40:7: ( ']' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:40:9: ']'
            {
            match(']'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__46"

    // $ANTLR start "T__47"
    public final void mT__47() throws RecognitionException {
        try {
            int _type = T__47;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:41:7: ( '_' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:41:9: '_'
            {
            match('_'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__47"

    // $ANTLR start "T__48"
    public final void mT__48() throws RecognitionException {
        try {
            int _type = T__48;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:42:7: ( '_,' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:42:9: '_,'
            {
            match("_,"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__48"

    // $ANTLR start "T__49"
    public final void mT__49() throws RecognitionException {
        try {
            int _type = T__49;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:43:7: ( '_;' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:43:9: '_;'
            {
            match("_;"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__49"

    // $ANTLR start "T__50"
    public final void mT__50() throws RecognitionException {
        try {
            int _type = T__50;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:44:7: ( 'controls:' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:44:9: 'controls:'
            {
            match("controls:"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__50"

    // $ANTLR start "T__51"
    public final void mT__51() throws RecognitionException {
        try {
            int _type = T__51;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:45:7: ( 'def:' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:45:9: 'def:'
            {
            match("def:"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__51"

    // $ANTLR start "T__52"
    public final void mT__52() throws RecognitionException {
        try {
            int _type = T__52;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:46:7: ( 'matrix' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:46:9: 'matrix'
            {
            match("matrix"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__52"

    // $ANTLR start "T__53"
    public final void mT__53() throws RecognitionException {
        try {
            int _type = T__53;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:47:7: ( 'morphism' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:47:9: 'morphism'
            {
            match("morphism"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__53"

    // $ANTLR start "T__54"
    public final void mT__54() throws RecognitionException {
        try {
            int _type = T__54;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:48:7: ( 'p$$' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:48:9: 'p$$'
            {
            match("p$$"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__54"

    // $ANTLR start "T__55"
    public final void mT__55() throws RecognitionException {
        try {
            int _type = T__55;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:49:7: ( 'p$' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:49:9: 'p$'
            {
            match("p$"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__55"

    // $ANTLR start "T__56"
    public final void mT__56() throws RecognitionException {
        try {
            int _type = T__56;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:50:7: ( 'repeat(' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:50:9: 'repeat('
            {
            match("repeat("); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__56"

    // $ANTLR start "T__57"
    public final void mT__57() throws RecognitionException {
        try {
            int _type = T__57;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:51:7: ( '{' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:51:9: '{'
            {
            match('{'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__57"

    // $ANTLR start "T__58"
    public final void mT__58() throws RecognitionException {
        try {
            int _type = T__58;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:52:7: ( '|' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:52:9: '|'
            {
            match('|'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__58"

    // $ANTLR start "T__59"
    public final void mT__59() throws RecognitionException {
        try {
            int _type = T__59;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:53:7: ( '}' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:53:9: '}'
            {
            match('}'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "T__59"

    // $ANTLR start "LINE_COMMENT"
    public final void mLINE_COMMENT() throws RecognitionException {
        try {
            int _type = LINE_COMMENT;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:74:3: ( '//' (~ ( '\\r' | '\\n' ) )* )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:74:6: '//' (~ ( '\\r' | '\\n' ) )*
            {
            match("//"); 



            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:74:11: (~ ( '\\r' | '\\n' ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( ((LA1_0 >= '\u0000' && LA1_0 <= '\t')||(LA1_0 >= '\u000B' && LA1_0 <= '\f')||(LA1_0 >= '\u000E' && LA1_0 <= '\uFFFF')) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
            	    {
            	    if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '\t')||(input.LA(1) >= '\u000B' && input.LA(1) <= '\f')||(input.LA(1) >= '\u000E' && input.LA(1) <= '\uFFFF') ) {
            	        input.consume();
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "LINE_COMMENT"

    // $ANTLR start "ModelName"
    public final void mModelName() throws RecognitionException {
        String name = null;


        try {
            int _type = ModelName;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            CommonToken INT1=null;

            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:132:2: ( 'mod' INT ( '%' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ '%' )? )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:132:4: 'mod' INT ( '%' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ '%' )?
            {
            match("mod"); 



            int INT1Start411 = getCharIndex();
            int INT1StartLine411 = getLine();
            int INT1StartCharPos411 = getCharPositionInLine();
            mINT(); 
            INT1 = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, INT1Start411, getCharIndex()-1);
            INT1.setLine(INT1StartLine411);
            INT1.setCharPositionInLine(INT1StartCharPos411);


            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:132:14: ( '%' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ '%' )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0=='%') ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:132:15: '%' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ '%'
                    {
                    match('%'); 

                    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:132:18: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+
                    int cnt2=0;
                    loop2:
                    do {
                        int alt2=2;
                        int LA2_0 = input.LA(1);

                        if ( ((LA2_0 >= '0' && LA2_0 <= '9')||(LA2_0 >= 'A' && LA2_0 <= 'Z')||(LA2_0 >= 'a' && LA2_0 <= 'z')) ) {
                            alt2=1;
                        }


                        switch (alt2) {
                    	case 1 :
                    	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
                    	    {
                    	    if ( (input.LA(1) >= '0' && input.LA(1) <= '9')||(input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
                    	        input.consume();
                    	    }
                    	    else {
                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
                    	        recover(mse);
                    	        throw mse;
                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt2 >= 1 ) break loop2;
                                EarlyExitException eee =
                                    new EarlyExitException(2, input);
                                throw eee;
                        }
                        cnt2++;
                    } while (true);


                    match('%'); 

                    }
                    break;

            }


             name ="mod"+(INT1!=null?INT1.getText():null); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "ModelName"

    // $ANTLR start "Sequence"
    public final void mSequence() throws RecognitionException {
        try {
            int _type = Sequence;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:275:9: ( 'SEQ' INT )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:275:12: 'SEQ' INT
            {
            match("SEQ"); 



            mINT(); 


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "Sequence"

    // $ANTLR start "SequenceDef"
    public final void mSequenceDef() throws RecognitionException {
        try {
            int _type = SequenceDef;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:278:2: ( 'SEQ' INT ',' ANY '.fsa' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:278:4: 'SEQ' INT ',' ANY '.fsa'
            {
            match("SEQ"); 



            mINT(); 


            match(','); 

            mANY(); 


            match(".fsa"); 



            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "SequenceDef"

    // $ANTLR start "VARIABLE"
    public final void mVARIABLE() throws RecognitionException {
        try {
            int _type = VARIABLE;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:470:9: ( ( 'A' .. 'Z' )+ ( '0' .. '9' )+ ( '%' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ '%' )? )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:470:11: ( 'A' .. 'Z' )+ ( '0' .. '9' )+ ( '%' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ '%' )?
            {
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:470:11: ( 'A' .. 'Z' )+
            int cnt4=0;
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( ((LA4_0 >= 'A' && LA4_0 <= 'Z')) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
            	    {
            	    if ( (input.LA(1) >= 'A' && input.LA(1) <= 'Z') ) {
            	        input.consume();
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt4 >= 1 ) break loop4;
                        EarlyExitException eee =
                            new EarlyExitException(4, input);
                        throw eee;
                }
                cnt4++;
            } while (true);


            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:470:22: ( '0' .. '9' )+
            int cnt5=0;
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( ((LA5_0 >= '0' && LA5_0 <= '9')) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
            	    {
            	    if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
            	        input.consume();
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt5 >= 1 ) break loop5;
                        EarlyExitException eee =
                            new EarlyExitException(5, input);
                        throw eee;
                }
                cnt5++;
            } while (true);


            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:470:34: ( '%' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ '%' )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0=='%') ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:470:35: '%' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ '%'
                    {
                    match('%'); 

                    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:470:38: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+
                    int cnt6=0;
                    loop6:
                    do {
                        int alt6=2;
                        int LA6_0 = input.LA(1);

                        if ( ((LA6_0 >= '0' && LA6_0 <= '9')||(LA6_0 >= 'A' && LA6_0 <= 'Z')||(LA6_0 >= 'a' && LA6_0 <= 'z')) ) {
                            alt6=1;
                        }


                        switch (alt6) {
                    	case 1 :
                    	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
                    	    {
                    	    if ( (input.LA(1) >= '0' && input.LA(1) <= '9')||(input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
                    	        input.consume();
                    	    }
                    	    else {
                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
                    	        recover(mse);
                    	        throw mse;
                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt6 >= 1 ) break loop6;
                                EarlyExitException eee =
                                    new EarlyExitException(6, input);
                                throw eee;
                        }
                        cnt6++;
                    } while (true);


                    match('%'); 

                    }
                    break;

            }


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "VARIABLE"

    // $ANTLR start "VARID"
    public final void mVARID() throws RecognitionException {
        try {
            int _type = VARID;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:478:7: ( ( 'A' .. 'Z' )+ )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:478:9: ( 'A' .. 'Z' )+
            {
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:478:9: ( 'A' .. 'Z' )+
            int cnt8=0;
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( ((LA8_0 >= 'A' && LA8_0 <= 'Z')) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
            	    {
            	    if ( (input.LA(1) >= 'A' && input.LA(1) <= 'Z') ) {
            	        input.consume();
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt8 >= 1 ) break loop8;
                        EarlyExitException eee =
                            new EarlyExitException(8, input);
                        throw eee;
                }
                cnt8++;
            } while (true);


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "VARID"

    // $ANTLR start "LOWID"
    public final void mLOWID() throws RecognitionException {
        try {
            int _type = LOWID;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:479:7: ( ( 'a' .. 'z' | '\\-' )+ )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:479:9: ( 'a' .. 'z' | '\\-' )+
            {
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:479:9: ( 'a' .. 'z' | '\\-' )+
            int cnt9=0;
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0=='-'||(LA9_0 >= 'a' && LA9_0 <= 'z')) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
            	    {
            	    if ( input.LA(1)=='-'||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
            	        input.consume();
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt9 >= 1 ) break loop9;
                        EarlyExitException eee =
                            new EarlyExitException(9, input);
                        throw eee;
                }
                cnt9++;
            } while (true);


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "LOWID"

    // $ANTLR start "ID"
    public final void mID() throws RecognitionException {
        try {
            int _type = ID;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:480:5: ( ( 'a' .. 'z' | 'A' .. 'Z' )+ )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:480:9: ( 'a' .. 'z' | 'A' .. 'Z' )+
            {
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:480:9: ( 'a' .. 'z' | 'A' .. 'Z' )+
            int cnt10=0;
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( ((LA10_0 >= 'A' && LA10_0 <= 'Z')||(LA10_0 >= 'a' && LA10_0 <= 'z')) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
            	    {
            	    if ( (input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
            	        input.consume();
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt10 >= 1 ) break loop10;
                        EarlyExitException eee =
                            new EarlyExitException(10, input);
                        throw eee;
                }
                cnt10++;
            } while (true);


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "ID"

    // $ANTLR start "INT"
    public final void mINT() throws RecognitionException {
        try {
            int _type = INT;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:481:5: ( ( '0' .. '9' )+ )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:481:9: ( '0' .. '9' )+
            {
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:481:9: ( '0' .. '9' )+
            int cnt11=0;
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( ((LA11_0 >= '0' && LA11_0 <= '9')) ) {
                    alt11=1;
                }


                switch (alt11) {
            	case 1 :
            	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
            	    {
            	    if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
            	        input.consume();
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt11 >= 1 ) break loop11;
                        EarlyExitException eee =
                            new EarlyExitException(11, input);
                        throw eee;
                }
                cnt11++;
            } while (true);


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "INT"

    // $ANTLR start "ANY"
    public final void mANY() throws RecognitionException {
        try {
            int _type = ANY;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:482:5: ( ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:482:7: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+
            {
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:482:7: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+
            int cnt12=0;
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( ((LA12_0 >= '0' && LA12_0 <= '9')||(LA12_0 >= 'A' && LA12_0 <= 'Z')||(LA12_0 >= 'a' && LA12_0 <= 'z')) ) {
                    alt12=1;
                }


                switch (alt12) {
            	case 1 :
            	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
            	    {
            	    if ( (input.LA(1) >= '0' && input.LA(1) <= '9')||(input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
            	        input.consume();
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt12 >= 1 ) break loop12;
                        EarlyExitException eee =
                            new EarlyExitException(12, input);
                        throw eee;
                }
                cnt12++;
            } while (true);


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "ANY"

    // $ANTLR start "NEWLINE"
    public final void mNEWLINE() throws RecognitionException {
        try {
            int _type = NEWLINE;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:483:8: ( ( '\\r' )? '\\n' )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:483:10: ( '\\r' )? '\\n'
            {
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:483:10: ( '\\r' )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0=='\r') ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:483:10: '\\r'
                    {
                    match('\r'); 

                    }
                    break;

            }


            match('\n'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "NEWLINE"

    // $ANTLR start "WHITESPACE"
    public final void mWHITESPACE() throws RecognitionException {
        try {
            int _type = WHITESPACE;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:484:12: ( ( '\\t' | ' ' | '\\r' | '\\n' | '\\u000C' )+ )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:484:14: ( '\\t' | ' ' | '\\r' | '\\n' | '\\u000C' )+
            {
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:484:14: ( '\\t' | ' ' | '\\r' | '\\n' | '\\u000C' )+
            int cnt14=0;
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( ((LA14_0 >= '\t' && LA14_0 <= '\n')||(LA14_0 >= '\f' && LA14_0 <= '\r')||LA14_0==' ') ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:
            	    {
            	    if ( (input.LA(1) >= '\t' && input.LA(1) <= '\n')||(input.LA(1) >= '\f' && input.LA(1) <= '\r')||input.LA(1)==' ' ) {
            	        input.consume();
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt14 >= 1 ) break loop14;
                        EarlyExitException eee =
                            new EarlyExitException(14, input);
                        throw eee;
                }
                cnt14++;
            } while (true);


             _channel = HIDDEN; 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "WHITESPACE"

    // $ANTLR start "COMPARATOR"
    public final void mCOMPARATOR() throws RecognitionException {
        try {
            int _type = COMPARATOR;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:487:11: ( ( '>' | '>=' | '=' | '<' | '=<' ) )
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:487:13: ( '>' | '>=' | '=' | '<' | '=<' )
            {
            // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:487:13: ( '>' | '>=' | '=' | '<' | '=<' )
            int alt15=5;
            switch ( input.LA(1) ) {
            case '>':
                {
                int LA15_1 = input.LA(2);

                if ( (LA15_1=='=') ) {
                    alt15=2;
                }
                else {
                    alt15=1;
                }
                }
                break;
            case '=':
                {
                int LA15_2 = input.LA(2);

                if ( (LA15_2=='<') ) {
                    alt15=5;
                }
                else {
                    alt15=3;
                }
                }
                break;
            case '<':
                {
                alt15=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;

            }

            switch (alt15) {
                case 1 :
                    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:487:15: '>'
                    {
                    match('>'); 

                    }
                    break;
                case 2 :
                    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:487:21: '>='
                    {
                    match(">="); 



                    }
                    break;
                case 3 :
                    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:487:28: '='
                    {
                    match('='); 

                    }
                    break;
                case 4 :
                    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:487:34: '<'
                    {
                    match('<'); 

                    }
                    break;
                case 5 :
                    // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:487:40: '=<'
                    {
                    match("=<"); 



                    }
                    break;

            }


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        	// do for sure before leaving
        }
    }
    // $ANTLR end "COMPARATOR"

    public void mTokens() throws RecognitionException {
        // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:8: ( T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | LINE_COMMENT | ModelName | Sequence | SequenceDef | VARIABLE | VARID | LOWID | ID | INT | ANY | NEWLINE | WHITESPACE | COMPARATOR )
        int alt16=56;
        alt16 = dfa16.predict(input);
        switch (alt16) {
            case 1 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:10: T__17
                {
                mT__17(); 


                }
                break;
            case 2 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:16: T__18
                {
                mT__18(); 


                }
                break;
            case 3 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:22: T__19
                {
                mT__19(); 


                }
                break;
            case 4 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:28: T__20
                {
                mT__20(); 


                }
                break;
            case 5 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:34: T__21
                {
                mT__21(); 


                }
                break;
            case 6 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:40: T__22
                {
                mT__22(); 


                }
                break;
            case 7 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:46: T__23
                {
                mT__23(); 


                }
                break;
            case 8 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:52: T__24
                {
                mT__24(); 


                }
                break;
            case 9 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:58: T__25
                {
                mT__25(); 


                }
                break;
            case 10 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:64: T__26
                {
                mT__26(); 


                }
                break;
            case 11 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:70: T__27
                {
                mT__27(); 


                }
                break;
            case 12 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:76: T__28
                {
                mT__28(); 


                }
                break;
            case 13 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:82: T__29
                {
                mT__29(); 


                }
                break;
            case 14 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:88: T__30
                {
                mT__30(); 


                }
                break;
            case 15 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:94: T__31
                {
                mT__31(); 


                }
                break;
            case 16 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:100: T__32
                {
                mT__32(); 


                }
                break;
            case 17 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:106: T__33
                {
                mT__33(); 


                }
                break;
            case 18 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:112: T__34
                {
                mT__34(); 


                }
                break;
            case 19 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:118: T__35
                {
                mT__35(); 


                }
                break;
            case 20 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:124: T__36
                {
                mT__36(); 


                }
                break;
            case 21 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:130: T__37
                {
                mT__37(); 


                }
                break;
            case 22 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:136: T__38
                {
                mT__38(); 


                }
                break;
            case 23 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:142: T__39
                {
                mT__39(); 


                }
                break;
            case 24 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:148: T__40
                {
                mT__40(); 


                }
                break;
            case 25 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:154: T__41
                {
                mT__41(); 


                }
                break;
            case 26 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:160: T__42
                {
                mT__42(); 


                }
                break;
            case 27 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:166: T__43
                {
                mT__43(); 


                }
                break;
            case 28 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:172: T__44
                {
                mT__44(); 


                }
                break;
            case 29 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:178: T__45
                {
                mT__45(); 


                }
                break;
            case 30 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:184: T__46
                {
                mT__46(); 


                }
                break;
            case 31 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:190: T__47
                {
                mT__47(); 


                }
                break;
            case 32 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:196: T__48
                {
                mT__48(); 


                }
                break;
            case 33 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:202: T__49
                {
                mT__49(); 


                }
                break;
            case 34 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:208: T__50
                {
                mT__50(); 


                }
                break;
            case 35 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:214: T__51
                {
                mT__51(); 


                }
                break;
            case 36 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:220: T__52
                {
                mT__52(); 


                }
                break;
            case 37 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:226: T__53
                {
                mT__53(); 


                }
                break;
            case 38 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:232: T__54
                {
                mT__54(); 


                }
                break;
            case 39 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:238: T__55
                {
                mT__55(); 


                }
                break;
            case 40 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:244: T__56
                {
                mT__56(); 


                }
                break;
            case 41 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:250: T__57
                {
                mT__57(); 


                }
                break;
            case 42 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:256: T__58
                {
                mT__58(); 


                }
                break;
            case 43 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:262: T__59
                {
                mT__59(); 


                }
                break;
            case 44 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:268: LINE_COMMENT
                {
                mLINE_COMMENT(); 


                }
                break;
            case 45 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:281: ModelName
                {
                mModelName(); 


                }
                break;
            case 46 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:291: Sequence
                {
                mSequence(); 


                }
                break;
            case 47 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:300: SequenceDef
                {
                mSequenceDef(); 


                }
                break;
            case 48 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:312: VARIABLE
                {
                mVARIABLE(); 


                }
                break;
            case 49 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:321: VARID
                {
                mVARID(); 


                }
                break;
            case 50 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:327: LOWID
                {
                mLOWID(); 


                }
                break;
            case 51 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:333: ID
                {
                mID(); 


                }
                break;
            case 52 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:336: INT
                {
                mINT(); 


                }
                break;
            case 53 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:340: ANY
                {
                mANY(); 


                }
                break;
            case 54 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:344: NEWLINE
                {
                mNEWLINE(); 


                }
                break;
            case 55 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:352: WHITESPACE
                {
                mWHITESPACE(); 


                }
                break;
            case 56 :
                // /opt/conda/conda-bld/logol_1531210364456/work/src/logol.g:1:363: COMPARATOR
                {
                mCOMPARATOR(); 


                }
                break;

        }

    }


    protected DFA16 dfa16 = new DFA16(this);
    static final String DFA16_eotS =
        "\1\uffff\1\50\2\uffff\1\52\2\uffff\1\54\3\uffff\1\55\1\62\1\64\2"+
        "\uffff\1\46\1\uffff\1\67\1\72\2\uffff\1\76\5\56\3\uffff\2\72\1\56"+
        "\1\107\1\45\1\110\23\uffff\1\72\1\116\1\uffff\1\117\3\uffff\1\56"+
        "\1\uffff\3\56\1\126\1\56\1\72\6\uffff\1\131\2\uffff\5\56\2\uffff"+
        "\1\56\1\72\1\uffff\1\56\1\uffff\2\56\1\144\1\56\1\146\3\56\1\uffff"+
        "\1\56\2\uffff\1\56\1\155\3\56\1\uffff\1\56\1\uffff\1\56\1\163\2"+
        "\uffff";
    static final String DFA16_eofS =
        "\164\uffff";
    static final String DFA16_minS =
        "\1\11\1\145\2\uffff\1\44\2\uffff\1\53\3\uffff\1\55\1\52\1\57\2\uffff"+
        "\1\75\1\uffff\1\100\1\60\2\uffff\1\54\3\60\1\44\1\60\3\uffff\4\60"+
        "\1\12\1\11\13\uffff\1\141\4\uffff\1\52\2\uffff\2\60\1\uffff\1\60"+
        "\3\uffff\1\60\1\uffff\3\60\1\44\2\60\6\uffff\1\60\2\uffff\5\60\2"+
        "\uffff\2\60\1\uffff\1\60\1\uffff\4\60\1\45\3\60\1\uffff\1\60\2\uffff"+
        "\1\60\1\55\1\60\1\50\1\60\1\uffff\1\60\1\uffff\1\60\1\55\2\uffff";
    static final String DFA16_maxS =
        "\1\175\1\145\2\uffff\1\44\2\uffff\1\53\3\uffff\1\172\1\156\1\57"+
        "\2\uffff\1\75\1\uffff\1\100\1\172\2\uffff\1\73\5\172\3\uffff\4\172"+
        "\1\12\1\40\13\uffff\1\151\4\uffff\1\76\2\uffff\2\172\1\uffff\1\172"+
        "\3\uffff\1\172\1\uffff\3\172\1\44\2\172\6\uffff\1\172\2\uffff\5"+
        "\172\2\uffff\2\172\1\uffff\1\172\1\uffff\10\172\1\uffff\1\172\2"+
        "\uffff\5\172\1\uffff\1\172\1\uffff\2\172\2\uffff";
    static final String DFA16_acceptS =
        "\2\uffff\1\3\1\4\1\uffff\1\7\1\10\1\uffff\1\13\1\14\1\15\3\uffff"+
        "\1\25\1\26\1\uffff\1\31\2\uffff\1\35\1\36\6\uffff\1\51\1\52\1\53"+
        "\6\uffff\1\67\1\70\1\2\1\1\1\5\1\6\1\12\1\11\1\16\1\62\1\20\1\uffff"+
        "\1\23\1\17\1\54\1\24\1\uffff\1\33\1\32\2\uffff\1\61\1\uffff\1\40"+
        "\1\41\1\37\1\uffff\1\65\6\uffff\1\64\1\66\1\21\1\22\1\27\1\30\1"+
        "\uffff\1\60\1\63\5\uffff\1\46\1\47\2\uffff\1\34\1\uffff\1\43\10"+
        "\uffff\1\55\1\uffff\1\56\1\57\5\uffff\1\44\1\uffff\1\50\2\uffff"+
        "\1\42\1\45";
    static final String DFA16_specialS =
        "\164\uffff}>";
    static final String[] DFA16_transitionS = {
            "\1\45\1\44\1\uffff\1\45\1\43\22\uffff\1\45\1\1\1\2\1\3\1\4\1"+
            "\5\2\uffff\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\12\42\1\16"+
            "\1\17\1\46\1\20\1\46\1\21\1\22\16\40\1\23\3\40\1\37\7\40\1\24"+
            "\1\uffff\1\25\1\uffff\1\26\1\uffff\2\41\1\27\1\30\10\41\1\31"+
            "\2\41\1\32\1\41\1\33\10\41\1\34\1\35\1\36",
            "\1\47",
            "",
            "",
            "\1\51",
            "",
            "",
            "\1\53",
            "",
            "",
            "",
            "\1\56\63\uffff\32\56",
            "\1\57\102\uffff\1\60\1\61",
            "\1\63",
            "",
            "",
            "\1\65",
            "",
            "\1\66",
            "\12\71\7\uffff\17\40\1\70\12\40\6\uffff\32\73",
            "",
            "",
            "\1\74\16\uffff\1\75",
            "\12\100\7\uffff\32\73\6\uffff\16\41\1\77\13\41",
            "\12\100\7\uffff\32\73\6\uffff\4\41\1\101\25\41",
            "\12\100\7\uffff\32\73\6\uffff\1\102\15\41\1\103\13\41",
            "\1\104\13\uffff\12\100\7\uffff\32\73\6\uffff\32\41",
            "\12\100\7\uffff\32\73\6\uffff\4\41\1\105\25\41",
            "",
            "",
            "",
            "\12\71\7\uffff\4\40\1\106\25\40\6\uffff\32\73",
            "\12\71\7\uffff\32\40\6\uffff\32\73",
            "\12\100\7\uffff\32\73\6\uffff\32\41",
            "\12\42\7\uffff\32\100\6\uffff\32\100",
            "\1\44",
            "\2\45\1\uffff\2\45\22\uffff\1\45",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\111\7\uffff\1\112",
            "",
            "",
            "",
            "",
            "\1\113\23\uffff\1\114",
            "",
            "",
            "\12\71\7\uffff\23\40\1\115\6\40\6\uffff\32\73",
            "\12\71\7\uffff\32\100\6\uffff\32\100",
            "",
            "\12\100\7\uffff\32\73\6\uffff\32\73",
            "",
            "",
            "",
            "\12\100\7\uffff\32\73\6\uffff\15\41\1\120\14\41",
            "",
            "\12\100\7\uffff\32\73\6\uffff\5\41\1\121\24\41",
            "\12\100\7\uffff\32\73\6\uffff\23\41\1\122\6\41",
            "\12\100\7\uffff\32\73\6\uffff\3\41\1\124\15\41\1\123\10\41",
            "\1\125",
            "\12\100\7\uffff\32\73\6\uffff\17\41\1\127\12\41",
            "\12\71\7\uffff\20\40\1\130\11\40\6\uffff\32\73",
            "",
            "",
            "",
            "",
            "",
            "",
            "\12\71\7\uffff\32\40\6\uffff\32\73",
            "",
            "",
            "\12\100\7\uffff\32\73\6\uffff\23\41\1\132\6\41",
            "\12\100\1\133\6\uffff\32\73\6\uffff\32\41",
            "\12\100\7\uffff\32\73\6\uffff\21\41\1\134\10\41",
            "\12\100\7\uffff\32\73\6\uffff\17\41\1\135\12\41",
            "\12\136\7\uffff\32\73\6\uffff\32\41",
            "",
            "",
            "\12\100\7\uffff\32\73\6\uffff\4\41\1\137\25\41",
            "\12\140\7\uffff\32\40\6\uffff\32\73",
            "",
            "\12\100\7\uffff\32\73\6\uffff\21\41\1\141\10\41",
            "",
            "\12\100\7\uffff\32\73\6\uffff\10\41\1\142\21\41",
            "\12\100\7\uffff\32\73\6\uffff\7\41\1\143\22\41",
            "\12\136\7\uffff\32\100\6\uffff\32\100",
            "\12\100\7\uffff\32\73\6\uffff\1\145\31\41",
            "\1\116\6\uffff\1\147\3\uffff\12\140\7\uffff\32\100\6\uffff"+
            "\32\100",
            "\12\100\7\uffff\32\73\6\uffff\16\41\1\150\13\41",
            "\12\100\7\uffff\32\73\6\uffff\27\41\1\151\2\41",
            "\12\100\7\uffff\32\73\6\uffff\10\41\1\152\21\41",
            "",
            "\12\100\7\uffff\32\73\6\uffff\23\41\1\153\6\41",
            "",
            "",
            "\12\100\7\uffff\32\73\6\uffff\13\41\1\154\16\41",
            "\1\56\2\uffff\12\100\7\uffff\32\73\6\uffff\32\41",
            "\12\100\7\uffff\32\73\6\uffff\22\41\1\156\7\41",
            "\1\157\7\uffff\12\100\7\uffff\32\73\6\uffff\32\41",
            "\12\100\7\uffff\32\73\6\uffff\22\41\1\160\7\41",
            "",
            "\12\100\7\uffff\32\73\6\uffff\14\41\1\161\15\41",
            "",
            "\12\100\1\162\6\uffff\32\73\6\uffff\32\41",
            "\1\56\2\uffff\12\100\7\uffff\32\73\6\uffff\32\41",
            "",
            ""
    };

    static final short[] DFA16_eot = DFA.unpackEncodedString(DFA16_eotS);
    static final short[] DFA16_eof = DFA.unpackEncodedString(DFA16_eofS);
    static final char[] DFA16_min = DFA.unpackEncodedStringToUnsignedChars(DFA16_minS);
    static final char[] DFA16_max = DFA.unpackEncodedStringToUnsignedChars(DFA16_maxS);
    static final short[] DFA16_accept = DFA.unpackEncodedString(DFA16_acceptS);
    static final short[] DFA16_special = DFA.unpackEncodedString(DFA16_specialS);
    static final short[][] DFA16_transition;

    static {
        int numStates = DFA16_transitionS.length;
        DFA16_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA16_transition[i] = DFA.unpackEncodedString(DFA16_transitionS[i]);
        }
    }

    class DFA16 extends DFA {

        public DFA16(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 16;
            this.eot = DFA16_eot;
            this.eof = DFA16_eof;
            this.min = DFA16_min;
            this.max = DFA16_max;
            this.accept = DFA16_accept;
            this.special = DFA16_special;
            this.transition = DFA16_transition;
        }
        public String getDescription() {
            return "1:1: Tokens : ( T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | LINE_COMMENT | ModelName | Sequence | SequenceDef | VARIABLE | VARID | LOWID | ID | INT | ANY | NEWLINE | WHITESPACE | COMPARATOR );";
        }
    }
 

}