PreviousUpNext

15.4.435  src/lib/compiler/back/low/tools/parser/architecture-description-language.lex.pkg

generic package adl_lex_g(tokens : Adl_Tokens){
   
# Compiled by:
#     src/lib/compiler/back/low/tools/architecture-parser.lib

    package user_declarations {
      
## architecture-description-language.lex -- derived from ~/src/sml/nj/smlnj-110.60/MLRISC/Tools/Parser/adl.lex
#
# Here we define the lexer for our Architecture Description Language,
# which contains a large subset of SML, including SML/NJ extensions.
#
# Architecture Description Language is the syntax used in our architecture description files
#
#     src/lib/compiler/back/low/intel32/one_word_int.architecture-description
#     src/lib/compiler/back/low/pwrpc32/pwrpc32.architecture-description
#     src/lib/compiler/back/low/sparc32/sparc32.architecture-description
#     src/lib/compiler/back/low/tools/basis.adl
#     
# Our responsibility in this file is breaking up raw text from those files into
# a stream of typed tokens which get fed into the parser specified in
#
#     src/lib/compiler/back/low/tools/parser/architecture-description-language.grammar
#
# to produce a parsetree in the format specified in
#
#     src/lib/compiler/back/low/tools/adl-syntax/adl-raw-syntax-form.pkg
#
# which then gets run through
#
#     src/lib/compiler/back/low/tools/arch/architecture-description.pkg
#
# to produce our Architecture_Description record.
# The information in this record drives the modules
#
#     src/lib/compiler/back/low/tools/arch/make-sourcecode-for-machcode-xxx-package.pkg
#     src/lib/compiler/back/low/tools/arch/make-sourcecode-for-registerkinds-xxx-package.pkg
#     src/lib/compiler/back/low/tools/arch/make-sourcecode-for-translate-machcode-to-asmcode-xxx-g-package.pkg
#     src/lib/compiler/back/low/tools/arch/make-sourcecode-for-translate-machcode-to-execode-xxx-g-package.pkg
#     ...
#
# which generate corresponding compiler backend lowhalf packages such as
#
#     src/lib/compiler/back/low/intel32/code/machcode-intel32.codemade.api
#     src/lib/compiler/back/low/intel32/code/machcode-intel32-g.codemade.pkg
#     src/lib/compiler/back/low/intel32/code/registerkinds-intel32.codemade.pkg
#     src/lib/compiler/back/low/intel32/emit/translate-machcode-to-asmcode-intel32-g.codemade.pkg
#     src/lib/compiler/back/low/intel32/emit/translate-machcode-to-execode-intel32-g.codemade.pkg.unused
#     ...

# Compiled by:
#     src/lib/compiler/back/low/tools/architecture-parser.lib



exception ERROR;

Source_Position = Int;

Semantic_Value = tokens::Semantic_Value;
    #
    # Semantic_Value is a datatype including one constructor
    # for every grammar terminal listed in the %term declaration in
    #     src/lib/compiler/back/low/tools/parser/architecture-description-language.grammar
    #     src/lib/compiler/back/low/tools/parser/architecture-description-language.grammar.pkg  
    # is the the mythryl-yacc generated file actually containing
    # the 'package tokens' definition.


Token( X, Y ) = tokens::Token( X, Y );
Lex_Result =  Token( Semantic_Value, Source_Position );

Lex_Arg = { line_number_db  : line_number_database::Sourcemap,
            err     : (Source_Position, Source_Position, String) -> Void,
            adl_mode : Bool
          };

Arg = Lex_Arg;

include tokens;                                         # tokens        is from   src/lib/compiler/back/low/tools/parser/architecture-description-language.grammar.pkg
                                                        # (architecture-description-language.grammar.pkg is synthesized by mythryl-yacc during compilation.)

comment_level = REF 0;
meta_level = REF 0;

# These four never get set to any other value in existing code.
# They are probably intended as an end-user customization hook:
#
asm_lquote = REF "``";
asm_rquote = REF "''";
asm_lmeta  = REF "<";
asm_rmeta  = REF ">";

exception ERROR;

fun init ()
    =
    {   comment_level := 0;
        meta_level    := 0;
        asm_lquote    := "``";
        asm_rquote    := "''";
        asm_lmeta     := "<";
        asm_rmeta     := ">";
    };

fun eof { line_number_db, err, adl_mode }
    = 
    {   pos = line_number_database::curr_pos line_number_db;

        eof_t(pos,pos);
    };

fun debug _
    =
    ();

fun check (err, _, _, THE w)
        =>
        w;

    check (err, pos, s, NULL)
        => 
        {   err(pos,pos+size s,"bad literal " + s);
            raise exception ERROR;
        };
end;

fun strip k s
    =
    string::substring(s,k,string::length s - k);

fun scan err fmt (s,s') tok pos
    = 
    tok(check(err,pos,s,number_string::scan_string fmt s'),
              pos,pos + size s) 
    except
        _ = id (s, pos, pos);

fun wdecimal (err,s,pos)
    = 
    scan err (one_word_unt::scan number_string::DECIMAL) (s,strip 2 s) unt pos;

fun whex (err,s,pos)
    = 
    scan err (one_word_unt::scan number_string::HEX) (s,strip 3 s) unt pos;

fun woctal  (err,s,pos) =  scan err (one_word_unt::scan number_string::OCTAL)   (s,strip 3 s) unt  pos;
fun wbinary (err,s,pos) =  scan err (one_word_unt::scan number_string::BINARY)  (s,strip 3 s) unt  pos;
fun decimal (err,s,pos) =  scan err (int::scan   number_string::DECIMAL) (s,s)         int  pos;

fun real (err,s,pos)
    =
    scan err (eight_byte_float::scan) (s,s) 
                       (fn (x,y,z) =  real_t(eight_byte_float::to_string x, y, z)) pos;

fun hex    (err,s,pos) =  scan err (int::scan number_string::HEX)    (s,strip 2 s) int pos;
fun octal  (err,s,pos) =  scan err (int::scan number_string::OCTAL)  (s,strip 2 s) int pos;
fun binary (err,s,pos) =  scan err (int::scan number_string::BINARY) (s,strip 2 s) int pos;

fun decimalinf (err,s,pos) =  scan err (multiword_int::scan number_string::DECIMAL) (s,s)         integer pos;
fun hexinf     (err,s,pos) =  scan err (multiword_int::scan number_string::HEX)     (s,strip 2 s) integer pos;
fun octalinf   (err,s,pos) =  scan err (multiword_int::scan number_string::OCTAL)   (s,strip 2 s) integer pos;
fun binaryinf  (err,s,pos) =  scan err (multiword_int::scan number_string::BINARY)  (s,strip 2 s) integer pos;

fun string (err,s,pos)
    = 
    string_t(
      check(err,pos,s,string::from_string(string::substring(s,1,string::length s - 2))),
      pos, pos + size s);

fun char (err,s,pos)
    = 
    char_t(check(err,pos,s,char::from_string(string::substring(s,2,string::length s - 3))),
         pos,pos + size s);

fun trans_asm s
    = 
    string::implode(loop(string::explode s))
    where
        fun loop ('\\' ! '<' ! s) =>   '<' ! loop s;
            loop('\\' ! '>' ! s) =>   '>' ! loop s;
            loop(c ! s)          =>    c  ! loop s;
            loop []              =>    []         ;
        end;
    end;

fun asmtext (err,s,pos)
    = 
    asmtext_t (check (err, pos, s, string::from_string(trans_asm s)),pos,pos + size s);

infix my @@ ;

fun x @@ y =  y ! x ;

exception NOT_FOUND;

keywords    = hashtable::make_hashtable (hash_string::hash_string, (==)) { size_hint => 13, not_found_exception => NOT_FOUND }
            :  hashtable::Hashtable (String, (Int, Int) -> Token (Semantic_Value,Int));

adlkeywords = hashtable::make_hashtable (hash_string::hash_string, (==)) { size_hint => 13, not_found_exception => NOT_FOUND }
            : hashtable::Hashtable (String, (Int, Int) -> Token (Semantic_Value, Int));

symbols     = hashtable::make_hashtable (hash_string::hash_string, (==)) { size_hint => 13, not_found_exception => NOT_FOUND }
            : hashtable::Hashtable (String, (Int, Int) -> Token (Semantic_Value, Int));

# Set up hashtable
#
#     keywords

# mapping strings to corresponding token-creation functions.
#
# The token-creation functions (type_t, end_t, fun_t, ... )
# here are from package tokens in 
#     src/lib/compiler/back/low/tools/parser/architecture-description-language.grammar.pkg
# with definitions like
#     fun type_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 7,  (parser_data::values::TM_VOID, p1, p2));
#     fun end_t  (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 1,  (parser_data::values::TM_VOID, p1, p2));
#     fun fun_t  (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 76, (parser_data::values::TM_VOID, p1, p2));
#
my _ = apply (hashtable::set keywords) 
( NIL       @@
 ("_",wild) @@
 ("datatype", datatype) @@
 ("type", type_t) @@
 ("end", end_t) @@
 ("fun", fun_t) @@
 ("fn", fn_t) @@
 ("my", my_t) @@
 ("raise", raise_t) @@
 ("handle", except_t) @@
 ("let", let_t) @@
 ("local", local_t) @@
 ("exception", exception_t) @@
 ("structure", package_t) @@
 ("signature", api_t) @@
 ("functor", generic_t) @@
 ("sig", begin_api) @@
 ("struct", struct) @@
 ("sharing", sharing_t) @@
 ("where", where_t) @@
 ("withtype", withtype_t) @@
 ("if", if_t) @@
 ("then", then_t) @@
 ("else", else_t) @@
 ("in", in_t) @@
 ("true", true) @@
 ("false", false) @@
 ("and", and_t) @@
 ("at", at) @@
 ("of", of_t) @@
 ("case", case_t) @@
 ("as", as_t) @@
 ("open", open) @@
 ("op", op_t) @@
 ("include", include_t) @@
 ("infix", infix_t) @@
 ("infixr", infixr_t) @@
 ("nonfix", nonfix_t) @@
 ("not", not) 
);

my _ = apply (hashtable::set adlkeywords) 
( NIL @@
 ("architecture", architecture) @@
 ("assembly", assembly) @@
 ("storage", storage) @@
 ("locations", locations) @@
 ("at", at) @@
 ("field", field_t) @@
 ("fields", fields) @@
 ("signed", signed) @@
 ("unsigned", unsigned) @@
 ("bits", bits) @@
 ("ordering", ordering) @@
 ("little", little) @@
 ("big", big) @@
 ("endian", endian) @@
 ("register", register) @@
 ("as", as_t) @@
 ("cell", cell) @@
 ("cells", cells) @@
 ("registerset", registerset) @@
 ("pipeline", pipeline) @@
 ("cpu", cpu) @@
 ("resource", resource) @@
 ("latency", latency) @@
 ("base_op", base_op) @@
 ("instruction", instruction) @@
 ("formats", formats) @@
 ("uppercase", uppercase) @@
 ("lowercase", lowercase) @@
 ("verbatim", verbatim) @@
 ("span", span) @@
 ("dependent", dependent) @@
 ("always", always) @@
 ("never", never) @@
 ("delayslot", delayslot) @@
 #  ("equation", equation) @@
 #  ("reservation", reservation) @@
 #  ("table", table) @@
 #  ("predicated", predicated) @@
 #  ("branching", branching) @@ 
 #  ("candidate", candidate) @@
 ("rtl", rtl) @@
 ("debug", debug_t) @@
 ("aliasing", aliasing) @@
 ("aggregable",aggregable) 
);

my _ = apply (hashtable::set symbols) 
(
  NIL @@
  ("=", eq) @@
  ("*", times) @@
  (":", colon) @@
  (":>",colongreater) @@
  ("|", bar) @@
  ("->", arrow) @@
  ("=>", darrow) @@
  ("#", hash) @@
  ("!", deref) @@
  ("^^", meld)          # Called 'concat' in SML/NJ 
);

fun look_up (adl_mode,s,yypos)
    =
    {   l = string::length s;

        fun id_fn () = id(unique_symbol::to_string
                        (unique_symbol::from_string s), yypos, yypos + l);

        hashtable::look_up keywords s (yypos,yypos + l) 
        except _ =
             if adl_mode  
               (hashtable::look_up adlkeywords s (yypos,yypos + l) except _ =  id_fn());
             else
               id_fn();
             fi;
    };

fun look_up_sym (s,yypos)
    =
    {   l = string::length s;

        hashtable::look_up symbols s (yypos,yypos + l) 
        except _ =  symbol (unique_symbol::to_string
                           (unique_symbol::from_string s), yypos, yypos + l);
    };

}; #  end of user routines 
exception LEX_ERROR; # Raised if illegal leaf action tried.
package internal {
         

Yyfinstate = NN Int;
Statedata = { fin:  List( Yyfinstate ), trans: String };
#  transition & final state table 
tab = {
    s = [ 
 (0,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (1,  
"\009\009\009\009\009\009\009\009\009\117\118\009\009\009\009\009\
\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
\\117\010\113\108\107\010\010\105\103\102\010\010\101\100\097\095\
\\078\070\070\070\070\070\070\070\070\070\010\069\010\010\010\010\
\\010\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
\\014\014\014\014\014\014\014\014\014\014\014\068\009\067\010\014\
\\065\061\014\051\041\014\014\014\014\014\014\014\014\038\028\014\
\\020\014\016\014\014\014\014\014\014\014\014\013\010\012\010\009\
\\009"
),
 (3,  
"\119\119\119\119\119\119\119\119\119\127\118\119\119\119\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\127\119\119\119\119\119\119\119\125\119\122\119\119\119\119\120\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
\\119"
),
 (5,  
"\009\009\009\009\009\009\009\009\009\117\118\009\009\009\009\009\
\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
\\117\132\113\149\148\132\132\146\145\102\132\132\101\144\141\132\
\\078\070\070\070\070\070\070\070\070\070\132\069\139\138\136\132\
\\132\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
\\014\014\014\014\014\014\014\014\014\014\014\068\135\067\132\014\
\\133\061\014\051\041\014\014\014\014\014\014\014\014\038\028\014\
\\020\014\016\014\014\014\014\014\014\014\014\013\132\012\128\009\
\\009"
),
 (7,  
"\150\150\150\150\150\150\150\150\150\009\168\150\150\150\150\150\
\\150\150\150\150\150\150\150\150\150\150\150\150\150\150\150\150\
\\150\156\150\156\156\156\156\166\150\150\156\156\150\156\156\156\
\\150\150\150\150\150\150\150\150\150\150\156\150\164\163\161\156\
\\156\150\150\150\150\150\150\150\150\150\150\150\150\150\150\150\
\\150\150\150\150\150\150\150\150\150\150\150\150\159\150\156\150\
\\157\150\150\150\150\150\150\150\150\150\150\150\150\150\150\150\
\\150\150\150\150\150\150\150\150\150\150\150\150\156\150\152\150\
\\150"
),
 (10,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\011\000\011\011\011\011\000\000\000\011\011\000\011\000\011\
\\000\000\000\000\000\000\000\000\000\000\011\000\011\011\011\011\
\\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\011\000\
\\000"
),
 (14,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (16,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\017\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (17,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\018\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (18,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\019\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (20,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\021\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (21,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\022\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (22,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\023\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (23,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\024\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (24,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\025\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (25,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\026\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (26,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\027\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (28,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\029\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (29,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\030\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (30,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\031\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (31,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\032\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (32,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\033\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (33,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\034\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (34,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\035\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (35,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\036\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (36,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\037\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (38,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\039\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (39,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\040\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (41,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\042\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (42,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\043\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (43,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\044\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (44,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\045\015\000\000\000\000\000\
\\000"
),
 (45,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\046\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (46,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\047\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (47,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\048\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (48,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\049\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (49,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\050\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (51,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\052\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (52,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\053\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (53,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\054\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (54,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\055\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (55,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\056\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (56,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\057\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (57,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\058\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (58,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\059\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (59,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\060\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (61,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\062\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (62,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\063\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (63,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\015\000\000\000\000\000\000\000\000\
\\015\015\015\015\015\015\015\015\015\015\064\000\000\000\000\000\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
\\000"
),
 (65,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\066\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (70,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\073\000\
\\072\072\072\072\072\072\072\072\072\072\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\071\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (73,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (74,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\075\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (75,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\077\000\000\
\\076\076\076\076\076\076\076\076\076\076\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (76,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\076\076\076\076\076\076\076\076\076\076\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (78,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\073\000\
\\093\093\093\093\093\093\093\093\072\072\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\090\000\000\000\000\000\000\071\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\082\079\000\000\000\000\000\000\000\
\\000"
),
 (79,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\080\080\080\080\080\080\080\080\080\080\000\000\000\000\000\000\
\\000\080\080\080\080\080\080\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\080\080\080\080\080\080\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (80,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\080\080\080\080\080\080\080\080\080\080\000\000\000\000\000\000\
\\000\080\080\080\080\080\080\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\080\080\080\080\080\080\000\000\081\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (82,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\088\087\087\087\087\087\087\087\087\087\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\085\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\083\000\000\000\000\000\000\000\
\\000"
),
 (83,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\084\084\084\084\084\084\084\084\084\084\000\000\000\000\000\000\
\\000\084\084\084\084\084\084\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\084\084\084\084\084\084\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (85,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\086\086\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (87,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\087\087\087\087\087\087\087\087\087\087\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (88,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\089\089\089\089\089\089\089\089\087\087\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (90,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\091\091\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (91,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\091\091\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\092\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (93,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\073\000\
\\093\093\093\093\093\093\093\093\072\072\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\094\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (95,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\011\000\011\011\011\011\000\000\000\096\011\000\011\000\011\
\\000\000\000\000\000\000\000\000\000\000\011\000\011\011\011\011\
\\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\011\000\
\\000"
),
 (96,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\011\000\011\011\011\011\000\000\000\096\011\000\096\000\011\
\\000\000\000\000\000\000\000\000\000\000\011\000\011\096\011\011\
\\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\011\000\
\\000"
),
 (97,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\098\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (98,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\099\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (100,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\011\000\011\011\011\011\000\000\000\011\011\000\011\000\011\
\\072\072\072\072\072\072\072\072\072\072\011\000\011\011\011\011\
\\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\011\000\
\\000"
),
 (103,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\104\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (105,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\066\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\000\000\000\000\106\
\\000\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\000\000\000\000\000\
\\000"
),
 (106,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\106\000\000\000\000\000\000\000\000\
\\106\106\106\106\106\106\106\106\106\106\000\000\000\000\000\000\
\\000\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\000\000\000\000\106\
\\000\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\000\000\000\000\000\
\\000"
),
 (108,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\011\110\011\011\011\011\000\000\000\011\011\000\011\000\011\
\\000\000\000\000\000\000\000\000\000\000\011\000\011\011\011\011\
\\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\109\000\000\011\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\011\000\
\\000"
),
 (110,  
"\110\110\110\110\110\110\110\110\110\000\000\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\112\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\111\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110"
),
 (111,  
"\110\110\110\110\110\110\110\110\110\110\000\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\
\\110"
),
 (113,  
"\114\114\114\114\114\114\114\114\114\000\000\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\116\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\115\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114"
),
 (115,  
"\114\114\114\114\114\114\114\114\114\114\000\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
\\114"
),
 (120,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\121\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (121,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\121\000\000\121\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\121\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (122,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\124\000\000\000\000\000\123\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (125,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\126\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (128,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\000\129\129\129\129\000\000\000\129\129\000\129\129\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\130\129\
\\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\
\\000"
),
 (129,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\000\129\129\129\129\000\000\000\129\129\000\129\129\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\000\129\
\\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\
\\000"
),
 (130,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (133,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (135,  
"\131\131\131\131\131\131\131\131\131\131\000\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
\\131"
),
 (136,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\137\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (138,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\000\129\129\129\129\000\000\000\129\129\000\129\129\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\131\129\
\\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\
\\000"
),
 (139,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\140\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (141,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\000\129\129\129\129\000\000\000\129\129\000\129\142\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\000\129\
\\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\
\\000"
),
 (142,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\000\129\129\129\129\000\000\000\129\129\000\129\143\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\000\129\
\\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\
\\000"
),
 (144,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\000\129\129\129\129\000\000\000\129\129\000\129\129\129\
\\072\072\072\072\072\072\072\072\072\072\129\000\000\129\000\129\
\\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\
\\000"
),
 (146,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\147\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\000\000\000\000\106\
\\000\106\106\106\106\106\106\106\106\106\106\106\106\106\106\106\
\\106\106\106\106\106\106\106\106\106\106\106\000\000\000\000\000\
\\000"
),
 (147,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\147\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (149,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\129\110\129\129\129\129\000\000\000\129\129\000\129\129\129\
\\000\000\000\000\000\000\000\000\000\000\129\000\000\129\000\129\
\\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\109\000\000\129\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\
\\000"
),
 (150,  
"\151\151\151\151\151\151\151\151\151\000\000\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\000\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\000\151\000\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151"
),
 (152,  
"\151\151\151\151\151\151\151\151\151\000\000\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\153\151\153\153\153\153\000\151\151\153\153\151\153\153\153\
\\151\151\151\151\151\151\151\151\151\151\153\151\000\153\154\153\
\\153\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\153\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\153\151\153\151\
\\151"
),
 (153,  
"\151\151\151\151\151\151\151\151\151\000\000\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\153\151\153\153\153\153\000\151\151\153\153\151\153\153\153\
\\151\151\151\151\151\151\151\151\151\151\153\151\000\153\000\153\
\\153\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\153\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\153\151\153\151\
\\151"
),
 (154,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\155\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (157,  
"\151\151\151\151\151\151\151\151\151\000\000\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\000\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\000\151\000\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\158\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151"
),
 (159,  
"\160\160\160\160\160\160\160\160\160\155\000\160\160\160\160\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\
\\160\160\160\160\160\160\160\155\160\160\160\160\160\160\160\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\155\160\155\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\
\\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\160\
\\160"
),
 (161,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\162\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (163,  
"\151\151\151\151\151\151\151\151\151\000\000\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\153\151\153\153\153\153\000\151\151\153\153\151\153\153\153\
\\151\151\151\151\151\151\151\151\151\151\153\151\000\153\155\153\
\\153\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\153\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\151\
\\151\151\151\151\151\151\151\151\151\151\151\151\153\151\153\151\
\\151"
),
 (164,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\165\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
 (166,  
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\167\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\\000"
),
    (0, "")];
    fun f x = x;
    s = map f (reverse (tail (reverse s)));
    exception LEX_HACKING_ERROR;
    fun get ((j, x) ! r, i: Int)
            =>
            if (i == j)  x;   else get (r, i); fi;

        get ([], i)
            =>
            raise exception LEX_HACKING_ERROR;
    end;
fun g {   fin => x,   trans => i   }
    =
    {   fin => x,   trans => get (s, i)   };
 vector::from_list (map g 
[{ fin => [], trans => 0},
{ fin => [], trans => 1},
{ fin => [], trans => 1},
{ fin => [], trans => 3},
{ fin => [], trans => 3},
{ fin => [], trans => 5},
{ fin => [], trans => 5},
{ fin => [], trans => 7},
{ fin => [], trans => 7},
{ fin => [(NN 262)], trans => 0},
{ fin => [(NN 201), (NN 262)], trans => 10},
{ fin => [(NN 201)], trans => 10},
{ fin => [(NN 179), (NN 262)], trans => 0},
{ fin => [(NN 177), (NN 262)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 14},
{ fin => [(NN 160)], trans => 14},
{ fin => [(NN 160), (NN 262)], trans => 16},
{ fin => [(NN 160)], trans => 17},
{ fin => [(NN 160)], trans => 18},
{ fin => [(NN 115)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 20},
{ fin => [(NN 160)], trans => 21},
{ fin => [(NN 160)], trans => 22},
{ fin => [(NN 160)], trans => 23},
{ fin => [(NN 160)], trans => 24},
{ fin => [(NN 160)], trans => 25},
{ fin => [(NN 160)], trans => 26},
{ fin => [(NN 135)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 28},
{ fin => [(NN 160)], trans => 29},
{ fin => [(NN 160)], trans => 30},
{ fin => [(NN 160)], trans => 31},
{ fin => [(NN 160)], trans => 32},
{ fin => [(NN 160)], trans => 33},
{ fin => [(NN 160)], trans => 34},
{ fin => [(NN 160)], trans => 35},
{ fin => [(NN 160)], trans => 36},
{ fin => [(NN 146)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 38},
{ fin => [(NN 160)], trans => 39},
{ fin => [(NN 110)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 41},
{ fin => [(NN 160)], trans => 42},
{ fin => [(NN 160)], trans => 43},
{ fin => [(NN 160)], trans => 44},
{ fin => [(NN 160)], trans => 45},
{ fin => [(NN 160)], trans => 46},
{ fin => [(NN 160)], trans => 47},
{ fin => [(NN 160)], trans => 48},
{ fin => [(NN 160)], trans => 49},
{ fin => [(NN 126)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 51},
{ fin => [(NN 160)], trans => 52},
{ fin => [(NN 160)], trans => 53},
{ fin => [(NN 160)], trans => 54},
{ fin => [(NN 160)], trans => 55},
{ fin => [(NN 160)], trans => 56},
{ fin => [(NN 160)], trans => 57},
{ fin => [(NN 160)], trans => 58},
{ fin => [(NN 160)], trans => 59},
{ fin => [(NN 157)], trans => 0},
{ fin => [(NN 160), (NN 262)], trans => 61},
{ fin => [(NN 160)], trans => 62},
{ fin => [(NN 160)], trans => 63},
{ fin => [(NN 106)], trans => 0},
{ fin => [(NN 262)], trans => 65},
{ fin => [(NN 201)], trans => 0},
{ fin => [(NN 175), (NN 262)], trans => 0},
{ fin => [(NN 170), (NN 262)], trans => 0},
{ fin => [(NN 183), (NN 262)], trans => 0},
{ fin => [(NN 16), (NN 262)], trans => 70},
{ fin => [(NN 35)], trans => 0},
{ fin => [(NN 16)], trans => 70},
{ fin => [], trans => 73},
{ fin => [(NN 99)], trans => 74},
{ fin => [], trans => 75},
{ fin => [(NN 99)], trans => 76},
{ fin => [], trans => 76},
{ fin => [(NN 16), (NN 262)], trans => 78},
{ fin => [], trans => 79},
{ fin => [(NN 21)], trans => 80},
{ fin => [(NN 41)], trans => 0},
{ fin => [], trans => 82},
{ fin => [], trans => 83},
{ fin => [(NN 63)], trans => 83},
{ fin => [], trans => 85},
{ fin => [(NN 75)], trans => 85},
{ fin => [(NN 57)], trans => 87},
{ fin => [(NN 57)], trans => 88},
{ fin => [(NN 57), (NN 69)], trans => 88},
{ fin => [], trans => 90},
{ fin => [(NN 30)], trans => 91},
{ fin => [(NN 52)], trans => 0},
{ fin => [(NN 16), (NN 25)], trans => 93},
{ fin => [(NN 35), (NN 46)], trans => 0},
{ fin => [(NN 201), (NN 262)], trans => 95},
{ fin => [(NN 12), (NN 201)], trans => 96},
{ fin => [(NN 185), (NN 262)], trans => 97},
{ fin => [(NN 188)], trans => 98},
{ fin => [(NN 192)], trans => 0},
{ fin => [(NN 201), (NN 262)], trans => 100},
{ fin => [(NN 181), (NN 262)], trans => 0},
{ fin => [(NN 168), (NN 262)], trans => 0},
{ fin => [(NN 166), (NN 262)], trans => 103},
{ fin => [(NN 8)], trans => 0},
{ fin => [(NN 262)], trans => 105},
{ fin => [(NN 164)], trans => 106},
{ fin => [(NN 101), (NN 201), (NN 262)], trans => 10},
{ fin => [(NN 201), (NN 262)], trans => 108},
{ fin => [(NN 173)], trans => 0},
{ fin => [], trans => 110},
{ fin => [], trans => 111},
{ fin => [(NN 88)], trans => 0},
{ fin => [(NN 262)], trans => 113},
{ fin => [], trans => 113},
{ fin => [], trans => 115},
{ fin => [(NN 81)], trans => 0},
{ fin => [(NN 3), (NN 262)], trans => 0},
{ fin => [(NN 1)], trans => 0},
{ fin => [(NN 260), (NN 262)], trans => 0},
{ fin => [(NN 260), (NN 262)], trans => 120},
{ fin => [(NN 258)], trans => 121},
{ fin => [(NN 260), (NN 262)], trans => 122},
{ fin => [(NN 251)], trans => 0},
{ fin => [(NN 248)], trans => 0},
{ fin => [(NN 260), (NN 262)], trans => 125},
{ fin => [(NN 254)], trans => 0},
{ fin => [(NN 3), (NN 260), (NN 262)], trans => 0},
{ fin => [(NN 241), (NN 262)], trans => 128},
{ fin => [(NN 241)], trans => 129},
{ fin => [], trans => 130},
{ fin => [(NN 241)], trans => 0},
{ fin => [(NN 241), (NN 262)], trans => 129},
{ fin => [(NN 241), (NN 262)], trans => 133},
{ fin => [(NN 241)], trans => 133},
{ fin => [(NN 262)], trans => 135},
{ fin => [(NN 241), (NN 262)], trans => 136},
{ fin => [(NN 241)], trans => 136},
{ fin => [(NN 241), (NN 262)], trans => 138},
{ fin => [(NN 241), (NN 262)], trans => 139},
{ fin => [(NN 241)], trans => 139},
{ fin => [(NN 185), (NN 241), (NN 262)], trans => 141},
{ fin => [(NN 188), (NN 241)], trans => 142},
{ fin => [(NN 192), (NN 241)], trans => 129},
{ fin => [(NN 241), (NN 262)], trans => 144},
{ fin => [(NN 166), (NN 262)], trans => 0},
{ fin => [(NN 241), (NN 262)], trans => 146},
{ fin => [(NN 241)], trans => 147},
{ fin => [(NN 101), (NN 241), (NN 262)], trans => 129},
{ fin => [(NN 241), (NN 262)], trans => 149},
{ fin => [(NN 245), (NN 262)], trans => 150},
{ fin => [(NN 245)], trans => 150},
{ fin => [(NN 221), (NN 245), (NN 262)], trans => 152},
{ fin => [(NN 221), (NN 245)], trans => 153},
{ fin => [], trans => 154},
{ fin => [(NN 221)], trans => 0},
{ fin => [(NN 221), (NN 245), (NN 262)], trans => 153},
{ fin => [(NN 221), (NN 245), (NN 262)], trans => 157},
{ fin => [(NN 221), (NN 245)], trans => 157},
{ fin => [(NN 245), (NN 262)], trans => 159},
{ fin => [(NN 221), (NN 245)], trans => 150},
{ fin => [(NN 221), (NN 262)], trans => 161},
{ fin => [(NN 221)], trans => 161},
{ fin => [(NN 221), (NN 245), (NN 262)], trans => 163},
{ fin => [(NN 221), (NN 262)], trans => 164},
{ fin => [(NN 221)], trans => 164},
{ fin => [(NN 221), (NN 245), (NN 262)], trans => 166},
{ fin => [(NN 221)], trans => 166},
{ fin => [(NN 5)], trans => 0}]);
};
package start_states {
         
         Yystartstate = STARTSTATE Int;

#  start state definitions 

my asm = STARTSTATE 5;
my asmquote = STARTSTATE 7;
my comment = STARTSTATE 3;
my initial = STARTSTATE 1;

 };
Result = user_declarations::Lex_Result;
         exception LEXER_ERROR; # Raised if illegal leaf action tried */
};

fun make_lexer yyinput =
{        my yygone0=1;
         yyb = REF "\n";                #  Buffer 
         yybl = REF 1;          # Buffer length 
         yybufpos = REF 1;              #  location of next character to use 
         yygone = REF yygone0;  #  position in file of beginning of buffer 
         yydone = REF FALSE;            #  eof found yet? 
         yybegin_i = REF 1;             # Current 'start state' for lexer 

         yybegin = fn (internal::start_states::STARTSTATE x) =
                 yybegin_i := x;

fun lex (yyarg as ( { line_number_db,err,adl_mode } )) =
 { fun continue () : internal::Result = 
  { fun scan (s, accepting_leaves:  List( List( internal::Yyfinstate ) ), l, i0) =
         { fun action (i, NIL) => raise exception LEX_ERROR;
         action (i, NIL ! l)     => action (i - 1, l);
         action (i, (node ! acts) ! l) => 
                 case node
                 
                    internal::NN yyk => 
                         ( { fun yymktext () = substring(*yyb, i0, i-i0);
                             yypos = i0 + *yygone;
                         fun REJECT() = action (i, acts ! l);
                         include user_declarations;
                         include internal::start_states;
  {   yybufpos := i;
      case yyk
 

                        #  Application actions 

  1 => { line_number_database::newline line_number_db yypos; continue(); };
  101 => { if adl_mode  dollar(yypos,yypos+1);
                            else         symbol("$",yypos,yypos+1);
                            fi; };
  106 => {   yytext=yymktext();
if adl_mode       asm_colon(yypos,yypos+size yytext); else REJECT(); fi; };
  110 => {   yytext=yymktext();
if adl_mode        mc_colon(yypos,yypos+size yytext); else REJECT(); fi; };
  115 => {   yytext=yymktext();
if adl_mode       rtl_colon(yypos,yypos+size yytext); else REJECT(); fi; };
  12 => { comment_level := 1; yybegin comment; continue(); };
  126 => {   yytext=yymktext();
if adl_mode delayslot_colon(yypos,      size yytext); else REJECT(); fi; };
  135 => {   yytext=yymktext();
if adl_mode   padding_colon(yypos,      size yytext); else REJECT(); fi; };
  146 => {   yytext=yymktext();
if adl_mode nullified_colon(yypos,      size yytext); else REJECT(); fi; };
  157 => {   yytext=yymktext();
if adl_mode candidate_colon(yypos,      size yytext); else REJECT(); fi; };
  16 => {   yytext=yymktext();
decimal(err,yytext,yypos); };
  160 => {   yytext=yymktext();
look_up(adl_mode,yytext,yypos); };
  164 => {   yytext=yymktext();
tyvar(yytext,yypos,yypos + size yytext); };
  166 => { lparen(yypos,yypos+1); };
  168 => { rparen(yypos,yypos+1); };
  170 => { lbracket(yypos,yypos+1); };
  173 => { lhashbracket(yypos,yypos+1); };
  175 => { rbracket(yypos,yypos+1); };
  177 => { lbrace(yypos,yypos+1); };
  179 => { rbrace(yypos,yypos+1); };
  181 => { comma(yypos,yypos+1); };
  183 => { semicolon(yypos,yypos+1); };
  185 => { dot(yypos,yypos+1); };
  188 => { dotdot(yypos,yypos+2); };
  192 => { dotdot(yypos,yypos+3); };
  201 => {   yytext=yymktext();
if (yytext == *asm_lquote)
                                debug("lquote " + yytext + "\n");
                                yybegin asmquote; 
                                ldquote(yypos,yypos+size yytext);
                            else
                                look_up_sym(yytext,yypos);
                            fi
                           ; };
  21 => {   yytext=yymktext();
hex(err,yytext,yypos); };
  221 => {   yytext=yymktext();
if (yytext == *asm_rquote )
                                 if (*meta_level != 0 )
                                    err(yypos,yypos+size yytext,
                                       "Mismatch between " + *asm_lmeta +
                                          " and " + *asm_rmeta);
                                 fi;
                                 debug("rquote " + yytext + "\n");
                                 yybegin initial; 
                                 rdquote(yypos,yypos+size yytext);
                            else if (yytext == *asm_lmeta )
                                     meta_level := *meta_level + 1;
                                     debug("lmeta " + yytext + "\n");
                                     yybegin asm;
                                     lmeta(yypos,yypos+size yytext);
                                 else
                                     asmtext(err,yytext,yypos);
                                fi;
                            fi; };
  241 => {   yytext=yymktext();
if (yytext == *asm_rmeta )
                                 meta_level := *meta_level - 1;
                                 debug("rmeta " + yytext + "(" + int::to_string *meta_level + ")\n");
                                 if (*meta_level == 0 ) yybegin asmquote; fi;
                                 rmeta(yypos,yypos+size yytext);
                            else
                                look_up_sym( yytext, yypos );
                            fi
                            ; };
  245 => {   yytext=yymktext();
debug("text=" + yytext + "\n"); 
                            asmtext(err,yytext,yypos); };
  248 => { comment_level := *comment_level - 1;
                            if (*comment_level == 0 ) yybegin initial; fi; 
                            continue(); };
  25 => {   yytext=yymktext();
octal(err,yytext,yypos); };
  251 => { comment_level := *comment_level - 1;
                            if (*comment_level == 0 ) yybegin initial; fi; 
                            continue(); };
  254 => { comment_level := *comment_level + 1; continue(); };
  258 => { comment_level := *comment_level + 1; continue(); };
  260 => { continue(); };
  262 => {   yytext=yymktext();
err(yypos,yypos+size yytext,
                                "unknown character " + string::to_string yytext);
                            continue(); };
  3 => { continue(); };
  30 => {   yytext=yymktext();
binary(err,yytext,yypos); };
  35 => {   yytext=yymktext();
decimalinf(err,yytext,yypos); };
  41 => {   yytext=yymktext();
hexinf(err,yytext,yypos); };
  46 => {   yytext=yymktext();
octalinf(err,yytext,yypos); };
  5 => {   yytext=yymktext();
err(yypos,yypos+size yytext,
                                "newline in assembly text!"); continue(); };
  52 => {   yytext=yymktext();
binaryinf(err,yytext,yypos); };
  57 => {   yytext=yymktext();
wdecimal(err,yytext,yypos); };
  63 => {   yytext=yymktext();
whex(err,yytext,yypos); };
  69 => {   yytext=yymktext();
woctal(err,yytext,yypos); };
  75 => {   yytext=yymktext();
wbinary(err,yytext,yypos); };
  8 => { comment_level := 1; yybegin comment; continue(); };
  81 => {   yytext=yymktext();
string(err,yytext,yypos); };
  88 => {   yytext=yymktext();
char(err,yytext,yypos); };
  99 => {   yytext=yymktext();
real(err,yytext,yypos); };
  _ => raise exception internal::LEXER_ERROR;

                 esac; }; } ); esac; end;    # fun action

         my { fin, trans } = unsafe::vector::get (internal::tab, s);
         new_accepting_leaves = fin ! accepting_leaves;
         if (l == *yybl)
             if (trans == .trans (vector::get (internal::tab, 0)))
               action (l, new_accepting_leaves);
         else        newchars= if *yydone ""; else yyinput 1024; fi;
             if ((size newchars) == 0)
                        yydone := TRUE;
                        if (l == i0)  user_declarations::eof yyarg;
                                  else action (l, new_accepting_leaves); fi;
                  else if (l == i0)  yyb := newchars;
                             else yyb := substring(*yyb, i0, l-i0) + newchars; fi;
                       yygone := *yygone+i0;
                       yybl := size *yyb;
                       scan (s, accepting_leaves, l-i0, 0);
             fi;   # (size newchars) == 0
             fi;   # trans == $trans ...
          else new_char = char::to_int (unsafe::vector_of_chars::get(*yyb, l));
                 new_char = if (new_char < 128) new_char; else 128; fi;
                 new_state = char::to_int (unsafe::vector_of_chars::get (trans, new_char));
                 if (new_state == 0) action (l, new_accepting_leaves);
                 else scan (new_state, new_accepting_leaves, l+1, i0); fi;
         fi;
  };    # fun scan
/*
         start= if (substring(*yyb,*yybufpos - 1, 1)=="\n") *yybegin_i+1; else *yybegin_i; fi;
*/
         scan(*yybegin_i /* start */ , NIL, *yybufpos, *yybufpos);   # fun continue
    };   # fun continue
 continue; };    # fun lex
  lex; 
  };   # fun make_lexer
};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext