# 17 "parsing/lexer.mll" open Lexing open Misc open Parser type error = | Illegal_character of char | Illegal_escape of string | Unterminated_comment | Unterminated_string | Unterminated_string_in_comment | Keyword_as_label of string | Literal_overflow of string ;; exception Error of error * Location.t;; (* Extracting names from constructors/destructors tokens XXO *) (* Walid: this should be done by parser. *) let destr_name str = let len = String.length str in String.sub str 0 (len - 1) (* "F^" -> "F" *) let edestr_name str = let len = String.length str in String.sub str 2 (len - 3) (* "~~F^" -> "F" *) let euident_name str = let len = String.length str in String.sub str 2 (len - 2) (* "~~F" -> "F" *) (* The table of keywords *) let keyword_table = create_hashtable 149 [ "and", AND; "as", AS; "assert", ASSERT; "begin", BEGIN; "class", CLASS; "constraint", CONSTRAINT; "do", DO; "done", DONE; "downto", DOWNTO; "else", ELSE; "end", END; "exception", EXCEPTION; "external", EXTERNAL; "false", FALSE; "for", FOR; "fun", FUN; "function", FUNCTION; "functor", FUNCTOR; "if", IF; "in", IN; "include", INCLUDE; "inherit", INHERIT; "initializer", INITIALIZER; "lazy", LAZY; "let", LET; "match", MATCH; "method", METHOD; "module", MODULE; "mutable", MUTABLE; "new", NEW; "object", OBJECT; "of", OF; "open", OPEN; "or", OR; (* "parser", PARSER; *) "private", PRIVATE; "rec", REC; "sig", SIG; "struct", STRUCT; "then", THEN; "to", TO; "true", TRUE; "try", TRY; "type", TYPE; "val", VAL; "virtual", VIRTUAL; "when", WHEN; "while", WHILE; "with", WITH; "mod", INFIXOP3("mod"); "land", INFIXOP3("land"); "lor", INFIXOP3("lor"); "lxor", INFIXOP3("lxor"); "lsl", INFIXOP4("lsl"); "lsr", INFIXOP4("lsr"); "asr", INFIXOP4("asr") ] (* To buffer string literals *) let initial_string_buffer = String.create 256 let string_buff = ref initial_string_buffer let string_index = ref 0 let reset_string_buffer () = string_buff := initial_string_buffer; string_index := 0 let store_string_char c = if !string_index >= String.length (!string_buff) then begin let new_buff = String.create (String.length (!string_buff) * 2) in String.blit (!string_buff) 0 new_buff 0 (String.length (!string_buff)); string_buff := new_buff end; String.unsafe_set (!string_buff) (!string_index) c; incr string_index let get_stored_string () = let s = String.sub (!string_buff) 0 (!string_index) in string_buff := initial_string_buffer; s (* To store the position of the beginning of a string and comment *) let string_start_loc = ref Location.none;; let comment_start_loc = ref [];; let in_comment () = !comment_start_loc <> [];; (* To translate escape sequences *) let char_for_backslash = function | 'n' -> '\010' | 'r' -> '\013' | 'b' -> '\008' | 't' -> '\009' | c -> c let char_for_decimal_code lexbuf i = let c = 100 * (Char.code(Lexing.lexeme_char lexbuf i) - 48) + 10 * (Char.code(Lexing.lexeme_char lexbuf (i+1)) - 48) + (Char.code(Lexing.lexeme_char lexbuf (i+2)) - 48) in if (c < 0 || c > 255) && not (in_comment ()) then raise (Error(Illegal_escape (Lexing.lexeme lexbuf), Location.curr lexbuf)) else Char.chr c let char_for_hexadecimal_code lexbuf i = let d1 = Char.code (Lexing.lexeme_char lexbuf i) in let val1 = if d1 >= 97 then d1 - 87 else if d1 >= 65 then d1 - 55 else d1 - 48 in let d2 = Char.code (Lexing.lexeme_char lexbuf (i+1)) in let val2 = if d2 >= 97 then d2 - 87 else if d2 >= 65 then d2 - 55 else d2 - 48 in Char.chr (val1 * 16 + val2) (* Remove underscores from float literals *) let remove_underscores s = let l = String.length s in let rec remove src dst = if src >= l then if dst >= l then s else String.sub s 0 dst else match s.[src] with '_' -> remove (src + 1) dst | c -> s.[dst] <- c; remove (src + 1) (dst + 1) in remove 0 0 (* Update the current location with file name and line number. *) let update_loc lexbuf file line absolute chars = let pos = lexbuf.lex_curr_p in let new_file = match file with | None -> pos.pos_fname | Some s -> s in lexbuf.lex_curr_p <- { pos with pos_fname = new_file; pos_lnum = if absolute then line else pos.pos_lnum + line; pos_bol = pos.pos_cnum - chars; } ;; (* Error report *) open Format let report_error ppf = function | Illegal_character c -> fprintf ppf "Illegal character (%s)" (Char.escaped c) | Illegal_escape s -> fprintf ppf "Illegal backslash escape in string or character (%s)" s | Unterminated_comment -> fprintf ppf "Comment not terminated" | Unterminated_string -> fprintf ppf "String literal not terminated" | Unterminated_string_in_comment -> fprintf ppf "This comment contains an unterminated string literal" | Keyword_as_label kwd -> fprintf ppf "`%s' is a keyword, it cannot be used as label name" kwd | Literal_overflow ty -> fprintf ppf "Integer literal exceeds the range of representable integers of type %s" ty ;; # 205 "parsing/lexer.ml" let __ocaml_lex_tables = { Lexing.lex_base = "\000\000\166\255\167\255\224\000\003\001\038\001\073\001\108\001\ \182\255\143\001\032\000\190\255\067\000\180\001\215\001\069\000\ \072\000\250\001\207\255\209\255\212\255\029\002\122\000\064\002\ \090\000\255\000\226\255\083\002\116\002\189\002\141\003\108\004\ \200\004\152\005\104\006\071\007\243\000\126\000\001\000\255\255\ \176\255\204\255\249\255\013\000\251\255\253\255\070\000\014\000\ \016\000\248\255\247\255\108\007\181\255\183\255\252\255\235\255\ \170\007\131\008\028\000\026\000\034\000\050\000\044\000\091\000\ \051\000\052\000\053\000\245\255\054\000\244\255\107\000\243\255\ \098\009\165\009\227\009\240\255\179\010\233\255\131\011\098\012\ \237\255\227\255\228\255\229\255\013\003\023\003\108\000\111\000\ \216\003\227\005\179\006\066\002\053\003\132\000\115\012\128\000\ \254\000\129\000\225\255\224\255\220\255\060\005\033\003\130\000\ \223\255\239\003\151\000\222\255\193\006\176\000\221\255\206\000\ \218\255\140\012\217\255\129\007\015\004\004\000\216\255\007\000\ \008\001\045\001\016\000\005\000\216\255\207\012\242\012\023\013\ \058\013\200\255\201\255\202\255\198\255\093\013\191\255\192\255\ \193\255\188\255\185\255\128\013\163\013\198\013\009\004\006\000\ \246\255\047\001\217\000\217\000\254\255\216\013\234\000\013\001\ \236\000\250\255\245\007\108\004\239\000\125\004\241\000\206\008\ \244\000\104\001\008\000\033\014\116\009\135\004\063\001\050\001\ \200\004\254\010\255\000\002\001\033\001\034\001\020\001\046\001\ \033\001\009\000"; Lexing.lex_backtrk = "\255\255\255\255\255\255\087\000\084\000\082\000\076\000\080\000\ \255\255\068\000\066\000\255\255\061\000\060\000\058\000\056\000\ \052\000\077\000\255\255\255\255\255\255\041\000\040\000\047\000\ \045\000\044\000\255\255\024\000\024\000\021\000\019\000\016\000\ \014\000\013\000\021\000\071\000\050\000\001\000\000\000\255\255\ \255\255\255\255\255\255\005\000\255\255\255\255\009\000\255\255\ \255\255\255\255\255\255\083\000\255\255\255\255\255\255\255\255\ \021\000\021\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \081\000\081\000\255\255\255\255\023\000\255\255\255\255\017\000\ \255\255\255\255\255\255\255\255\255\255\025\000\255\255\255\255\ \255\255\024\000\024\000\024\000\025\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\035\000\035\000\035\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\036\000\ \255\255\086\000\255\255\255\255\255\255\039\000\255\255\255\255\ \255\255\255\255\255\255\039\000\255\255\042\000\085\000\078\000\ \049\000\255\255\255\255\255\255\255\255\059\000\255\255\255\255\ \255\255\255\255\255\255\069\000\080\000\075\000\255\255\010\000\ \255\255\011\000\011\000\011\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\006\000\008\000\005\000\005\000\001\000\001\000\ \255\255\255\255\002\000\255\255\255\255\001\000\255\255\255\255\ \255\255\255\255"; Lexing.lex_default = "\001\000\000\000\000\000\255\255\255\255\255\255\255\255\255\255\ \000\000\255\255\255\255\000\000\255\255\255\255\255\255\255\255\ \255\255\255\255\000\000\000\000\000\000\255\255\255\255\255\255\ \255\255\095\000\000\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000\ \000\000\000\000\000\000\255\255\000\000\000\000\255\255\255\255\ \255\255\000\000\000\000\255\255\000\000\000\000\000\000\000\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\000\000\255\255\000\000\255\255\000\000\ \255\255\255\255\255\255\000\000\255\255\000\000\255\255\255\255\ \000\000\000\000\000\000\000\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\100\000\255\255\ \255\255\255\255\000\000\000\000\000\000\255\255\255\255\255\255\ \000\000\255\255\255\255\000\000\255\255\255\255\000\000\255\255\ \000\000\255\255\000\000\119\000\255\255\255\255\000\000\119\000\ \120\000\119\000\122\000\255\255\000\000\255\255\255\255\255\255\ \255\255\000\000\000\000\000\000\000\000\255\255\000\000\000\000\ \000\000\000\000\000\000\255\255\255\255\255\255\069\000\255\255\ \000\000\150\000\255\255\255\255\000\000\255\255\255\255\255\255\ \255\255\000\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\050\000\255\255\153\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\172\000\175\000\255\255\175\000\ \255\255\255\255"; Lexing.lex_trans = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\037\000\039\000\039\000\037\000\038\000\118\000\124\000\ \067\000\118\000\042\000\039\000\117\000\000\000\000\000\000\000\ \000\000\000\000\124\000\000\000\000\000\123\000\000\000\000\000\ \037\000\007\000\026\000\022\000\005\000\003\000\021\000\025\000\ \024\000\019\000\023\000\006\000\018\000\017\000\036\000\003\000\ \028\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\ \027\000\027\000\016\000\015\000\014\000\013\000\035\000\031\000\ \004\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\034\000\029\000\029\000\029\000\ \029\000\029\000\029\000\012\000\137\000\011\000\004\000\033\000\ \020\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\010\000\009\000\008\000\032\000\135\000\ \132\000\134\000\131\000\116\000\111\000\130\000\129\000\037\000\ \046\000\048\000\037\000\050\000\047\000\049\000\059\000\060\000\ \061\000\062\000\063\000\065\000\070\000\064\000\068\000\066\000\ \067\000\069\000\116\000\071\000\091\000\091\000\037\000\090\000\ \090\000\090\000\090\000\090\000\090\000\090\000\090\000\099\000\ \098\000\104\000\115\000\115\000\115\000\115\000\115\000\115\000\ \115\000\115\000\115\000\115\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\107\000\136\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\110\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\112\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \002\000\003\000\148\000\039\000\003\000\003\000\003\000\255\255\ \097\000\097\000\003\000\003\000\096\000\003\000\003\000\003\000\ \255\255\153\000\118\000\044\000\043\000\117\000\042\000\152\000\ \049\000\042\000\003\000\050\000\003\000\003\000\003\000\003\000\ \003\000\041\000\171\000\172\000\004\000\098\000\255\255\004\000\ \004\000\004\000\122\000\173\000\174\000\004\000\004\000\045\000\ \004\000\004\000\004\000\040\000\044\000\176\000\121\000\118\000\ \174\000\152\000\117\000\167\000\151\000\004\000\003\000\004\000\ \004\000\004\000\004\000\004\000\177\000\000\000\000\000\005\000\ \167\000\167\000\005\000\005\000\005\000\121\000\000\000\120\000\ \005\000\005\000\167\000\005\000\005\000\005\000\054\000\000\000\ \000\000\000\000\000\000\094\000\003\000\000\000\003\000\167\000\ \005\000\004\000\005\000\005\000\005\000\005\000\005\000\000\000\ \000\000\000\000\126\000\000\000\000\000\126\000\126\000\126\000\ \000\000\044\000\042\000\126\000\126\000\162\000\126\000\126\000\ \126\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\ \000\000\004\000\000\000\126\000\005\000\126\000\126\000\126\000\ \126\000\126\000\039\000\149\000\000\000\140\000\000\000\000\000\ \140\000\140\000\140\000\000\000\000\000\000\000\140\000\140\000\ \000\000\140\000\140\000\140\000\000\000\000\000\000\000\000\000\ \000\000\000\000\005\000\000\000\005\000\000\000\140\000\126\000\ \140\000\141\000\140\000\140\000\140\000\000\000\000\000\000\000\ \005\000\000\000\000\000\005\000\005\000\005\000\000\000\000\000\ \000\000\005\000\005\000\000\000\005\000\005\000\005\000\000\000\ \000\000\000\000\000\000\000\000\163\000\126\000\000\000\126\000\ \000\000\005\000\140\000\005\000\005\000\005\000\005\000\005\000\ \000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\ \005\000\005\000\005\000\000\000\000\000\000\000\005\000\005\000\ \000\000\005\000\005\000\005\000\000\000\000\000\000\000\000\000\ \140\000\000\000\140\000\000\000\138\000\005\000\005\000\000\000\ \005\000\005\000\005\000\005\000\005\000\000\000\000\000\000\000\ \005\000\000\000\000\000\005\000\005\000\005\000\000\000\255\255\ \000\000\005\000\005\000\000\000\133\000\005\000\005\000\000\000\ \255\255\000\000\000\000\139\000\000\000\005\000\000\000\000\000\ \000\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ \000\000\000\000\000\000\126\000\000\000\000\000\126\000\126\000\ \126\000\255\255\255\255\000\000\126\000\126\000\000\000\126\000\ \127\000\126\000\000\000\000\000\000\000\255\255\255\255\255\255\ \005\000\000\000\005\000\000\000\126\000\005\000\126\000\126\000\ \128\000\126\000\126\000\000\000\000\000\000\000\005\000\000\000\ \000\000\005\000\005\000\125\000\000\000\000\000\000\000\005\000\ \005\000\000\000\005\000\005\000\005\000\000\000\000\000\000\000\ \000\000\000\000\000\000\005\000\000\000\005\000\000\000\005\000\ \126\000\005\000\005\000\005\000\005\000\005\000\000\000\000\000\ \000\000\003\000\000\000\000\000\003\000\003\000\003\000\000\000\ \049\000\114\000\113\000\003\000\000\000\003\000\003\000\003\000\ \000\000\000\000\091\000\091\000\000\000\000\000\126\000\000\000\ \126\000\000\000\003\000\005\000\003\000\003\000\003\000\003\000\ \003\000\085\000\000\000\027\000\027\000\027\000\027\000\027\000\ \027\000\027\000\027\000\027\000\027\000\000\000\082\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \084\000\005\000\000\000\005\000\000\000\000\000\003\000\082\000\ \000\000\091\000\085\000\000\000\027\000\027\000\027\000\027\000\ \027\000\027\000\027\000\027\000\027\000\027\000\083\000\000\000\ \081\000\000\000\027\000\000\000\000\000\000\000\086\000\000\000\ \084\000\084\000\000\000\000\000\003\000\000\000\003\000\083\000\ \082\000\081\000\000\000\087\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\088\000\000\000\000\000\000\000\ \000\000\000\000\000\000\027\000\000\000\000\000\086\000\000\000\ \000\000\084\000\000\000\000\000\000\000\000\000\000\000\000\000\ \083\000\000\000\081\000\087\000\029\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\088\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \000\000\000\000\000\000\055\000\029\000\000\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \093\000\000\000\093\000\000\000\000\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\000\000\084\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\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\084\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\092\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\030\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \000\000\000\000\000\000\000\000\030\000\000\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\000\000\067\000\000\000\000\000\143\000\000\000\ \116\000\089\000\089\000\089\000\089\000\089\000\089\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\000\000\000\000\045\000\000\000\000\000\000\000\116\000\ \145\000\147\000\000\000\146\000\000\000\000\000\000\000\000\000\ \000\000\089\000\089\000\089\000\089\000\089\000\089\000\115\000\ \115\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ \115\000\000\000\000\000\000\000\000\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\000\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\000\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\072\000\000\000\000\000\ \072\000\072\000\072\000\000\000\000\000\000\000\072\000\072\000\ \000\000\072\000\072\000\072\000\157\000\157\000\157\000\157\000\ \157\000\157\000\157\000\157\000\157\000\157\000\072\000\000\000\ \072\000\072\000\072\000\079\000\072\000\158\000\158\000\158\000\ \158\000\158\000\158\000\158\000\158\000\158\000\158\000\168\000\ \168\000\168\000\168\000\168\000\168\000\168\000\168\000\168\000\ \168\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\072\000\078\000\000\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\000\000\ \072\000\072\000\072\000\000\000\072\000\072\000\072\000\000\000\ \000\000\000\000\072\000\072\000\000\000\072\000\072\000\072\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\072\000\000\000\072\000\072\000\072\000\072\000\ \072\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\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\072\000\074\000\ \000\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\000\000\072\000\000\000\073\000\000\000\ \000\000\000\000\000\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\000\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\108\000\108\000\108\000\108\000\ \108\000\108\000\108\000\108\000\108\000\108\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\108\000\108\000\108\000\ \108\000\108\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\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\108\000\108\000\108\000\ \108\000\108\000\108\000\000\000\000\000\000\000\000\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\030\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\000\000\000\000\000\000\000\000\030\000\ \000\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\089\000\089\000\089\000\089\000\ \089\000\089\000\000\000\000\000\000\000\000\000\000\000\082\000\ \000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\089\000\089\000\089\000\089\000\ \089\000\089\000\000\000\000\000\000\000\000\000\000\000\083\000\ \000\000\081\000\000\000\000\000\000\000\000\000\000\000\000\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\000\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\029\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\000\000\000\000\000\000\055\000\029\000\ \000\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\056\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\090\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\000\000\000\000\000\000\000\000\000\000\ \000\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\109\000\109\000\000\000\000\000\000\000\000\000\082\000\ \000\000\000\000\109\000\109\000\109\000\109\000\109\000\109\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\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\083\000\ \000\000\081\000\109\000\109\000\109\000\109\000\109\000\109\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\000\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\000\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \051\000\000\000\000\000\051\000\051\000\051\000\000\000\000\000\ \000\000\051\000\051\000\000\000\051\000\054\000\051\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\051\000\000\000\051\000\051\000\051\000\051\000\051\000\ \000\000\000\000\121\000\118\000\000\000\051\000\117\000\000\000\ \051\000\051\000\051\000\000\000\000\000\000\000\051\000\051\000\ \000\000\051\000\051\000\051\000\000\000\000\000\000\000\000\000\ \000\000\121\000\000\000\120\000\053\000\051\000\051\000\000\000\ \051\000\051\000\051\000\051\000\051\000\000\000\000\000\000\000\ \000\000\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ \115\000\115\000\115\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\051\000\052\000\051\000\000\000\000\000\ \000\000\000\000\051\000\000\000\000\000\000\000\000\000\000\000\ \000\000\029\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\000\000\000\000\000\000\000\000\ \051\000\000\000\051\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\000\000\000\000\000\000\ \055\000\029\000\000\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\057\000\029\000\029\000\159\000\159\000\159\000\ \159\000\159\000\159\000\159\000\159\000\159\000\159\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\159\000\159\000\ \159\000\159\000\159\000\159\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\159\000\159\000\ \159\000\159\000\159\000\159\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\255\255\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\000\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\000\000\000\000\000\000\000\000\000\000\ \000\000\058\000\000\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\000\000\000\000\ \000\000\055\000\029\000\000\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\160\000\160\000\ \160\000\160\000\160\000\160\000\160\000\160\000\160\000\160\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\ \160\000\160\000\160\000\160\000\160\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\ \160\000\160\000\160\000\160\000\160\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\000\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\000\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\072\000\000\000\000\000\072\000\072\000\ \072\000\000\000\000\000\000\000\072\000\072\000\000\000\072\000\ \072\000\072\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\072\000\000\000\072\000\072\000\ \072\000\072\000\072\000\000\000\169\000\169\000\169\000\169\000\ \169\000\169\000\169\000\169\000\169\000\169\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\169\000\169\000\169\000\ \169\000\169\000\169\000\000\000\000\000\000\000\000\000\000\000\ \072\000\000\000\000\000\000\000\000\000\000\000\072\000\000\000\ \000\000\072\000\072\000\072\000\000\000\000\000\000\000\072\000\ \072\000\000\000\072\000\072\000\072\000\169\000\169\000\169\000\ \169\000\169\000\169\000\000\000\000\000\000\000\072\000\072\000\ \072\000\072\000\072\000\072\000\072\000\072\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \000\000\000\000\000\000\072\000\000\000\000\000\000\000\000\000\ \000\000\000\000\074\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\075\000\000\000\000\000\ \000\000\072\000\000\000\072\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\000\000\000\000\ \000\000\000\000\074\000\000\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\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\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\000\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\076\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\000\000\000\000\ \000\000\077\000\076\000\000\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\044\000\044\000\ \044\000\044\000\044\000\044\000\044\000\044\000\044\000\044\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\000\ \044\000\044\000\044\000\044\000\044\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\000\ \044\000\044\000\044\000\044\000\044\000\000\000\000\000\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\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\000\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\078\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\080\000\000\000\000\000\ \000\000\000\000\000\000\000\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\000\000\000\000\ \000\000\000\000\078\000\000\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\000\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\000\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\072\000\000\000\000\000\072\000\072\000\ \072\000\000\000\000\000\000\000\072\000\072\000\000\000\072\000\ \072\000\072\000\000\000\103\000\000\000\103\000\000\000\000\000\ \000\000\000\000\103\000\000\000\072\000\000\000\072\000\072\000\ \072\000\072\000\072\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\113\000\000\000\000\000\ \113\000\113\000\113\000\000\000\000\000\000\000\113\000\113\000\ \000\000\113\000\113\000\113\000\000\000\000\000\000\000\000\000\ \072\000\000\000\000\000\000\000\000\000\000\000\113\000\000\000\ \113\000\113\000\113\000\113\000\113\000\000\000\000\000\103\000\ \000\000\000\000\000\000\000\000\000\000\103\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\072\000\000\000\ \072\000\103\000\000\000\000\000\000\000\103\000\000\000\103\000\ \000\000\000\000\113\000\101\000\000\000\000\000\000\000\000\000\ \005\000\000\000\000\000\005\000\005\000\005\000\000\000\000\000\ \000\000\005\000\005\000\000\000\005\000\005\000\005\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \113\000\005\000\113\000\005\000\005\000\005\000\005\000\005\000\ \000\000\000\000\000\000\126\000\000\000\000\000\126\000\126\000\ \126\000\000\000\000\000\000\000\126\000\126\000\000\000\126\000\ \126\000\126\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\126\000\005\000\126\000\126\000\ \126\000\126\000\126\000\000\000\000\000\000\000\000\000\000\000\ \126\000\000\000\000\000\126\000\126\000\126\000\000\000\000\000\ \000\000\126\000\126\000\000\000\126\000\126\000\126\000\000\000\ \000\000\000\000\000\000\005\000\000\000\005\000\000\000\000\000\ \126\000\126\000\000\000\126\000\126\000\126\000\126\000\126\000\ \000\000\000\000\000\000\126\000\000\000\000\000\126\000\126\000\ \126\000\000\000\000\000\000\000\126\000\126\000\000\000\126\000\ \126\000\126\000\000\000\000\000\000\000\000\000\126\000\000\000\ \126\000\000\000\000\000\255\255\126\000\126\000\126\000\126\000\ \126\000\126\000\126\000\000\000\000\000\000\000\005\000\000\000\ \000\000\005\000\005\000\005\000\000\000\000\000\000\000\005\000\ \005\000\000\000\005\000\005\000\005\000\000\000\000\000\000\000\ \000\000\000\000\000\000\126\000\000\000\126\000\000\000\005\000\ \126\000\005\000\005\000\005\000\005\000\005\000\000\000\000\000\ \000\000\005\000\000\000\000\000\005\000\005\000\005\000\000\000\ \000\000\000\000\005\000\005\000\000\000\005\000\005\000\005\000\ \000\000\000\000\000\000\000\000\000\000\000\000\126\000\000\000\ \126\000\000\000\005\000\005\000\005\000\005\000\005\000\005\000\ \005\000\000\000\000\000\000\000\140\000\000\000\000\000\140\000\ \140\000\140\000\000\000\000\000\000\000\140\000\140\000\000\000\ \140\000\140\000\140\000\000\000\000\000\000\000\000\000\000\000\ \000\000\005\000\000\000\005\000\000\000\140\000\005\000\140\000\ \140\000\140\000\140\000\140\000\000\000\000\000\000\000\140\000\ \000\000\000\000\140\000\140\000\140\000\000\000\000\000\000\000\ \140\000\140\000\000\000\140\000\140\000\140\000\000\000\000\000\ \156\000\000\000\156\000\000\000\005\000\000\000\005\000\156\000\ \140\000\140\000\140\000\140\000\140\000\140\000\140\000\000\000\ \155\000\155\000\155\000\155\000\155\000\155\000\155\000\155\000\ \155\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\140\000\ \000\000\140\000\000\000\000\000\140\000\000\000\000\000\000\000\ \000\000\000\000\000\000\167\000\000\000\000\000\166\000\000\000\ \000\000\000\000\000\000\000\000\156\000\000\000\000\000\000\000\ \000\000\000\000\156\000\000\000\000\000\000\000\000\000\000\000\ \000\000\045\000\140\000\045\000\140\000\000\000\156\000\000\000\ \045\000\000\000\156\000\000\000\156\000\000\000\000\000\000\000\ \154\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ \165\000\165\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\000\045\000\000\000\000\000\ \000\000\000\000\000\000\045\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\045\000\ \000\000\000\000\000\000\045\000\000\000\045\000\000\000\000\000\ \000\000\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\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\255\255"; Lexing.lex_check = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\000\000\000\000\038\000\000\000\000\000\117\000\123\000\ \143\000\119\000\162\000\177\000\119\000\255\255\255\255\255\255\ \255\255\255\255\122\000\255\255\255\255\122\000\255\255\255\255\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\000\ \015\000\012\000\016\000\022\000\024\000\016\000\016\000\037\000\ \043\000\046\000\037\000\047\000\046\000\048\000\058\000\059\000\ \060\000\061\000\062\000\062\000\063\000\062\000\064\000\065\000\ \066\000\068\000\022\000\070\000\086\000\086\000\037\000\087\000\ \087\000\087\000\087\000\087\000\087\000\087\000\087\000\095\000\ \097\000\103\000\022\000\022\000\022\000\022\000\022\000\022\000\ \022\000\022\000\022\000\022\000\093\000\093\000\093\000\093\000\ \093\000\093\000\093\000\093\000\093\000\093\000\106\000\012\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\111\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\003\000\146\000\147\000\003\000\003\000\003\000\119\000\ \096\000\025\000\003\000\003\000\025\000\003\000\003\000\003\000\ \122\000\150\000\120\000\152\000\036\000\120\000\156\000\151\000\ \158\000\036\000\003\000\160\000\003\000\003\000\003\000\003\000\ \003\000\036\000\170\000\171\000\004\000\096\000\025\000\004\000\ \004\000\004\000\120\000\172\000\173\000\004\000\004\000\036\000\ \004\000\004\000\004\000\036\000\151\000\174\000\121\000\121\000\ \175\000\145\000\121\000\167\000\145\000\004\000\003\000\004\000\ \004\000\004\000\004\000\004\000\176\000\255\255\255\255\005\000\ \166\000\166\000\005\000\005\000\005\000\121\000\255\255\121\000\ \005\000\005\000\167\000\005\000\005\000\005\000\145\000\255\255\ \255\255\255\255\255\255\025\000\003\000\255\255\003\000\166\000\ \005\000\004\000\005\000\005\000\005\000\005\000\005\000\255\255\ \255\255\255\255\006\000\255\255\255\255\006\000\006\000\006\000\ \255\255\036\000\161\000\006\000\006\000\161\000\006\000\006\000\ \006\000\255\255\255\255\255\255\255\255\255\255\255\255\004\000\ \255\255\004\000\255\255\006\000\005\000\006\000\006\000\006\000\ \006\000\006\000\161\000\145\000\255\255\007\000\255\255\255\255\ \007\000\007\000\007\000\255\255\255\255\255\255\007\000\007\000\ \255\255\007\000\007\000\007\000\255\255\255\255\255\255\255\255\ \255\255\255\255\005\000\255\255\005\000\255\255\007\000\006\000\ \007\000\007\000\007\000\007\000\007\000\255\255\255\255\255\255\ \009\000\255\255\255\255\009\000\009\000\009\000\255\255\255\255\ \255\255\009\000\009\000\255\255\009\000\009\000\009\000\255\255\ \255\255\255\255\255\255\255\255\161\000\006\000\255\255\006\000\ \255\255\009\000\007\000\009\000\009\000\009\000\009\000\009\000\ \255\255\255\255\255\255\255\255\255\255\013\000\255\255\255\255\ \013\000\013\000\013\000\255\255\255\255\255\255\013\000\013\000\ \255\255\013\000\013\000\013\000\255\255\255\255\255\255\255\255\ \007\000\255\255\007\000\255\255\009\000\009\000\013\000\255\255\ \013\000\013\000\013\000\013\000\013\000\255\255\255\255\255\255\ \014\000\255\255\255\255\014\000\014\000\014\000\255\255\025\000\ \255\255\014\000\014\000\255\255\014\000\014\000\014\000\255\255\ \120\000\255\255\255\255\009\000\255\255\009\000\255\255\255\255\ \255\255\014\000\013\000\014\000\014\000\014\000\014\000\014\000\ \255\255\255\255\255\255\017\000\255\255\255\255\017\000\017\000\ \017\000\172\000\173\000\255\255\017\000\017\000\255\255\017\000\ \017\000\017\000\255\255\255\255\255\255\121\000\175\000\145\000\ \013\000\255\255\013\000\255\255\017\000\014\000\017\000\017\000\ \017\000\017\000\017\000\255\255\255\255\255\255\021\000\255\255\ \255\255\021\000\021\000\021\000\255\255\255\255\255\255\021\000\ \021\000\255\255\021\000\021\000\021\000\255\255\255\255\255\255\ \255\255\255\255\255\255\014\000\255\255\014\000\255\255\021\000\ \017\000\021\000\021\000\021\000\021\000\021\000\255\255\255\255\ \255\255\023\000\255\255\255\255\023\000\023\000\023\000\255\255\ \161\000\023\000\023\000\023\000\255\255\023\000\023\000\023\000\ \255\255\255\255\091\000\091\000\255\255\255\255\017\000\255\255\ \017\000\255\255\023\000\021\000\023\000\023\000\023\000\023\000\ \023\000\027\000\255\255\027\000\027\000\027\000\027\000\027\000\ \027\000\027\000\027\000\027\000\027\000\255\255\091\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \027\000\021\000\255\255\021\000\255\255\255\255\023\000\027\000\ \255\255\091\000\028\000\255\255\028\000\028\000\028\000\028\000\ \028\000\028\000\028\000\028\000\028\000\028\000\091\000\255\255\ \091\000\255\255\027\000\255\255\255\255\255\255\028\000\255\255\ \027\000\028\000\255\255\255\255\023\000\255\255\023\000\027\000\ \028\000\027\000\255\255\028\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\028\000\255\255\255\255\255\255\ \255\255\255\255\255\255\028\000\255\255\255\255\028\000\255\255\ \255\255\028\000\255\255\255\255\255\255\255\255\255\255\255\255\ \028\000\255\255\028\000\028\000\029\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\028\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \255\255\255\255\255\255\029\000\029\000\255\255\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \084\000\255\255\084\000\255\255\255\255\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\255\255\085\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\085\000\255\255\ \255\255\255\255\255\255\255\255\085\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\092\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\030\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \255\255\255\255\255\255\255\255\030\000\255\255\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\255\255\142\000\255\255\255\255\142\000\255\255\ \116\000\088\000\088\000\088\000\088\000\088\000\088\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\255\255\255\255\142\000\255\255\255\255\255\255\116\000\ \142\000\142\000\255\255\142\000\255\255\255\255\255\255\255\255\ \255\255\088\000\088\000\088\000\088\000\088\000\088\000\116\000\ \116\000\116\000\116\000\116\000\116\000\116\000\116\000\116\000\ \116\000\255\255\255\255\255\255\255\255\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\255\255\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\255\255\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\031\000\255\255\255\255\ \031\000\031\000\031\000\255\255\255\255\255\255\031\000\031\000\ \255\255\031\000\031\000\031\000\155\000\155\000\155\000\155\000\ \155\000\155\000\155\000\155\000\155\000\155\000\031\000\255\255\ \031\000\031\000\031\000\031\000\031\000\157\000\157\000\157\000\ \157\000\157\000\157\000\157\000\157\000\157\000\157\000\165\000\ \165\000\165\000\165\000\165\000\165\000\165\000\165\000\165\000\ \165\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\031\000\031\000\255\255\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\255\255\ \031\000\032\000\031\000\255\255\032\000\032\000\032\000\255\255\ \255\255\255\255\032\000\032\000\255\255\032\000\032\000\032\000\ \168\000\168\000\168\000\168\000\168\000\168\000\168\000\168\000\ \168\000\168\000\032\000\255\255\032\000\032\000\032\000\032\000\ \032\000\142\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\032\000\032\000\ \255\255\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\255\255\032\000\255\255\032\000\255\255\ \255\255\255\255\255\255\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\255\255\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\101\000\101\000\101\000\101\000\ \101\000\101\000\101\000\101\000\101\000\101\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\101\000\101\000\101\000\ \101\000\101\000\101\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\101\000\101\000\101\000\ \101\000\101\000\101\000\255\255\255\255\255\255\255\255\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\033\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\255\255\255\255\255\255\255\255\033\000\ \255\255\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\089\000\089\000\089\000\089\000\ \089\000\089\000\255\255\255\255\255\255\255\255\255\255\089\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\089\000\255\255\089\000\089\000\089\000\089\000\ \089\000\089\000\255\255\255\255\255\255\255\255\255\255\089\000\ \255\255\089\000\255\255\255\255\255\255\255\255\255\255\255\255\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\255\255\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\034\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\255\255\255\255\255\255\034\000\034\000\ \255\255\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\090\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\255\255\255\255\255\255\255\255\255\255\ \255\255\108\000\108\000\108\000\108\000\108\000\108\000\108\000\ \108\000\108\000\108\000\255\255\255\255\255\255\255\255\090\000\ \255\255\255\255\108\000\108\000\108\000\108\000\108\000\108\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\090\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\090\000\ \255\255\090\000\108\000\108\000\108\000\108\000\108\000\108\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\255\255\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\255\255\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \035\000\255\255\255\255\035\000\035\000\035\000\255\255\255\255\ \255\255\035\000\035\000\255\255\035\000\035\000\035\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\035\000\255\255\035\000\035\000\035\000\035\000\035\000\ \255\255\255\255\115\000\115\000\255\255\051\000\115\000\255\255\ \051\000\051\000\051\000\255\255\255\255\255\255\051\000\051\000\ \255\255\051\000\051\000\051\000\255\255\255\255\255\255\255\255\ \255\255\115\000\255\255\115\000\035\000\035\000\051\000\255\255\ \051\000\051\000\051\000\051\000\051\000\255\255\255\255\255\255\ \255\255\115\000\115\000\115\000\115\000\115\000\115\000\115\000\ \115\000\115\000\115\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\035\000\035\000\035\000\255\255\255\255\ \255\255\255\255\051\000\255\255\255\255\255\255\255\255\255\255\ \255\255\056\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\255\255\255\255\255\255\255\255\ \051\000\255\255\051\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\255\255\255\255\255\255\ \056\000\056\000\255\255\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\154\000\154\000\154\000\ \154\000\154\000\154\000\154\000\154\000\154\000\154\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\154\000\154\000\ \154\000\154\000\154\000\154\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\154\000\154\000\ \154\000\154\000\154\000\154\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\115\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\255\255\056\000\056\000\056\000\056\000\056\000\056\000\ \056\000\056\000\057\000\255\255\255\255\255\255\255\255\255\255\ \255\255\057\000\255\255\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\255\255\255\255\ \255\255\057\000\057\000\255\255\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\159\000\159\000\ \159\000\159\000\159\000\159\000\159\000\159\000\159\000\159\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\159\000\ \159\000\159\000\159\000\159\000\159\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\159\000\ \159\000\159\000\159\000\159\000\159\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\255\255\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\255\255\057\000\057\000\057\000\057\000\057\000\ \057\000\057\000\057\000\072\000\255\255\255\255\072\000\072\000\ \072\000\255\255\255\255\255\255\072\000\072\000\255\255\072\000\ \072\000\072\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\072\000\255\255\072\000\072\000\ \072\000\072\000\072\000\255\255\164\000\164\000\164\000\164\000\ \164\000\164\000\164\000\164\000\164\000\164\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\164\000\164\000\164\000\ \164\000\164\000\164\000\255\255\255\255\255\255\255\255\255\255\ \072\000\255\255\255\255\255\255\255\255\255\255\073\000\255\255\ \255\255\073\000\073\000\073\000\255\255\255\255\255\255\073\000\ \073\000\255\255\073\000\073\000\073\000\164\000\164\000\164\000\ \164\000\164\000\164\000\255\255\255\255\255\255\072\000\073\000\ \072\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \255\255\255\255\255\255\073\000\255\255\255\255\255\255\255\255\ \255\255\255\255\074\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\255\255\255\255\ \255\255\073\000\255\255\073\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\255\255\255\255\ \255\255\255\255\074\000\255\255\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\255\255\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\255\255\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\076\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\255\255\255\255\ \255\255\076\000\076\000\255\255\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\169\000\169\000\ \169\000\169\000\169\000\169\000\169\000\169\000\169\000\169\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\169\000\ \169\000\169\000\169\000\169\000\169\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\169\000\ \169\000\169\000\169\000\169\000\169\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\255\255\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\078\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\255\255\255\255\ \255\255\255\255\255\255\255\255\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\255\255\255\255\ \255\255\255\255\078\000\255\255\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\255\255\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\255\255\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\079\000\255\255\255\255\079\000\079\000\ \079\000\255\255\255\255\255\255\079\000\079\000\255\255\079\000\ \079\000\079\000\255\255\094\000\255\255\094\000\255\255\255\255\ \255\255\255\255\094\000\255\255\079\000\255\255\079\000\079\000\ \079\000\079\000\079\000\094\000\094\000\094\000\094\000\094\000\ \094\000\094\000\094\000\094\000\094\000\113\000\255\255\255\255\ \113\000\113\000\113\000\255\255\255\255\255\255\113\000\113\000\ \255\255\113\000\113\000\113\000\255\255\255\255\255\255\255\255\ \079\000\255\255\255\255\255\255\255\255\255\255\113\000\255\255\ \113\000\113\000\113\000\113\000\113\000\255\255\255\255\094\000\ \255\255\255\255\255\255\255\255\255\255\094\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\079\000\255\255\ \079\000\094\000\255\255\255\255\255\255\094\000\255\255\094\000\ \255\255\255\255\113\000\094\000\255\255\255\255\255\255\255\255\ \125\000\255\255\255\255\125\000\125\000\125\000\255\255\255\255\ \255\255\125\000\125\000\255\255\125\000\125\000\125\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \113\000\125\000\113\000\125\000\125\000\125\000\125\000\125\000\ \255\255\255\255\255\255\126\000\255\255\255\255\126\000\126\000\ \126\000\255\255\255\255\255\255\126\000\126\000\255\255\126\000\ \126\000\126\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\126\000\125\000\126\000\126\000\ \126\000\126\000\126\000\255\255\255\255\255\255\255\255\255\255\ \127\000\255\255\255\255\127\000\127\000\127\000\255\255\255\255\ \255\255\127\000\127\000\255\255\127\000\127\000\127\000\255\255\ \255\255\255\255\255\255\125\000\255\255\125\000\255\255\255\255\ \126\000\127\000\255\255\127\000\127\000\127\000\127\000\127\000\ \255\255\255\255\255\255\128\000\255\255\255\255\128\000\128\000\ \128\000\255\255\255\255\255\255\128\000\128\000\255\255\128\000\ \128\000\128\000\255\255\255\255\255\255\255\255\126\000\255\255\ \126\000\255\255\255\255\094\000\128\000\127\000\128\000\128\000\ \128\000\128\000\128\000\255\255\255\255\255\255\133\000\255\255\ \255\255\133\000\133\000\133\000\255\255\255\255\255\255\133\000\ \133\000\255\255\133\000\133\000\133\000\255\255\255\255\255\255\ \255\255\255\255\255\255\127\000\255\255\127\000\255\255\133\000\ \128\000\133\000\133\000\133\000\133\000\133\000\255\255\255\255\ \255\255\139\000\255\255\255\255\139\000\139\000\139\000\255\255\ \255\255\255\255\139\000\139\000\255\255\139\000\139\000\139\000\ \255\255\255\255\255\255\255\255\255\255\255\255\128\000\255\255\ \128\000\255\255\139\000\133\000\139\000\139\000\139\000\139\000\ \139\000\255\255\255\255\255\255\140\000\255\255\255\255\140\000\ \140\000\140\000\255\255\255\255\255\255\140\000\140\000\255\255\ \140\000\140\000\140\000\255\255\255\255\255\255\255\255\255\255\ \255\255\133\000\255\255\133\000\255\255\140\000\139\000\140\000\ \140\000\140\000\140\000\140\000\255\255\255\255\255\255\141\000\ \255\255\255\255\141\000\141\000\141\000\255\255\255\255\255\255\ \141\000\141\000\255\255\141\000\141\000\141\000\255\255\255\255\ \149\000\255\255\149\000\255\255\139\000\255\255\139\000\149\000\ \141\000\140\000\141\000\141\000\141\000\141\000\141\000\255\255\ \149\000\149\000\149\000\149\000\149\000\149\000\149\000\149\000\ \149\000\149\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\140\000\ \255\255\140\000\255\255\255\255\141\000\255\255\255\255\255\255\ \255\255\255\255\255\255\163\000\255\255\255\255\163\000\255\255\ \255\255\255\255\255\255\255\255\149\000\255\255\255\255\255\255\ \255\255\255\255\149\000\255\255\255\255\255\255\255\255\255\255\ \255\255\163\000\141\000\163\000\141\000\255\255\149\000\255\255\ \163\000\255\255\149\000\255\255\149\000\255\255\255\255\255\255\ \149\000\163\000\163\000\163\000\163\000\163\000\163\000\163\000\ \163\000\163\000\163\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\163\000\255\255\255\255\ \255\255\255\255\255\255\163\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\163\000\ \255\255\255\255\255\255\163\000\255\255\163\000\255\255\255\255\ \255\255\163\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\163\000"; Lexing.lex_base_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\010\000\036\000\000\000\012\000\000\000\ \000\000\002\000\000\000\000\000\027\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\001\000\000\000\000\000\002\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000"; Lexing.lex_backtrk_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\012\000\000\000\000\000\ \000\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\039\000\039\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000"; Lexing.lex_default_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000"; Lexing.lex_trans_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\001\000\000\000\036\000\036\000\000\000\036\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \001\000\000\000\000\000\001\000\022\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\007\000\001\000\000\000\000\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\001\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000"; Lexing.lex_check_code = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\022\000\120\000\163\000\166\000\120\000\163\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \022\000\255\255\120\000\000\000\121\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\115\000\116\000\255\255\255\255\ \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\ \022\000\022\000\115\000\115\000\115\000\115\000\115\000\115\000\ \115\000\115\000\115\000\115\000\116\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\116\000\116\000\116\000\116\000\ \116\000\116\000\116\000\116\000\116\000\116\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \120\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255"; Lexing.lex_code = "\255\004\255\255\005\255\255\007\255\006\255\255\003\255\000\004\ \001\005\255\007\255\255\006\255\007\255\255\000\004\001\005\003\ \006\002\007\255\001\255\255\000\001\255"; } let rec token lexbuf = lexbuf.Lexing.lex_mem <- Array.create 8 (-1) ; __ocaml_lex_token_rec lexbuf 0 and __ocaml_lex_token_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 247 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0; token lexbuf ) # 1414 "parsing/lexer.ml" | 1 -> # 251 "parsing/lexer.mll" ( token lexbuf ) # 1419 "parsing/lexer.ml" | 2 -> # 252 "parsing/lexer.mll" ( DOTLESS ) # 1424 "parsing/lexer.ml" | 3 -> # 253 "parsing/lexer.mll" ( GREATERDOT ) # 1429 "parsing/lexer.ml" | 4 -> # 254 "parsing/lexer.mll" ( DOTTILDE ) # 1434 "parsing/lexer.ml" | 5 -> # 255 "parsing/lexer.mll" ( DOTBANG ) # 1439 "parsing/lexer.ml" | 6 -> # 256 "parsing/lexer.mll" ( DOTPOND ) # 1444 "parsing/lexer.ml" | 7 -> # 257 "parsing/lexer.mll" ( DOTBANGC ) # 1449 "parsing/lexer.ml" | 8 -> # 258 "parsing/lexer.mll" ( DOTBANGF ) # 1454 "parsing/lexer.ml" | 9 -> # 259 "parsing/lexer.mll" ( BANGLBRACE ) # 1459 "parsing/lexer.ml" | 10 -> # 260 "parsing/lexer.mll" ( RUN_GCC ) # 1464 "parsing/lexer.ml" | 11 -> # 261 "parsing/lexer.mll" ( RUN_ICC ) # 1469 "parsing/lexer.ml" | 12 -> # 262 "parsing/lexer.mll" ( RUN_F90 ) # 1474 "parsing/lexer.ml" | 13 -> # 264 "parsing/lexer.mll" ( UNDERSCORE ) # 1479 "parsing/lexer.ml" | 14 -> # 265 "parsing/lexer.mll" ( TILDE ) # 1484 "parsing/lexer.ml" | 15 -> # 267 "parsing/lexer.mll" ( let s = Lexing.lexeme lexbuf in let name = String.sub s 1 (String.length s - 2) in if Hashtbl.mem keyword_table name then raise (Error(Keyword_as_label name, Location.curr lexbuf)); LABEL name ) # 1493 "parsing/lexer.ml" | 16 -> # 272 "parsing/lexer.mll" ( QUESTION ) # 1498 "parsing/lexer.ml" | 17 -> # 273 "parsing/lexer.mll" ( QUESTIONQUESTION ) # 1503 "parsing/lexer.ml" | 18 -> # 275 "parsing/lexer.mll" ( let s = Lexing.lexeme lexbuf in let name = String.sub s 1 (String.length s - 2) in if Hashtbl.mem keyword_table name then raise (Error(Keyword_as_label name, Location.curr lexbuf)); OPTLABEL name ) # 1512 "parsing/lexer.ml" | 19 -> # 281 "parsing/lexer.mll" ( let s = Lexing.lexeme lexbuf in try Hashtbl.find keyword_table s with Not_found -> LIDENT s ) # 1521 "parsing/lexer.ml" | 20 -> # 287 "parsing/lexer.mll" ( UIDENTI(destr_name (Lexing.lexeme lexbuf)) ) # 1526 "parsing/lexer.ml" | 21 -> # 289 "parsing/lexer.mll" ( UIDENT(Lexing.lexeme lexbuf) ) # 1531 "parsing/lexer.ml" | 22 -> # 291 "parsing/lexer.mll" ( EUIDENTI(edestr_name (Lexing.lexeme lexbuf)) ) # 1536 "parsing/lexer.ml" | 23 -> # 293 "parsing/lexer.mll" ( EUIDENT(euident_name (Lexing.lexeme lexbuf)) ) # 1541 "parsing/lexer.ml" | 24 -> # 295 "parsing/lexer.mll" ( try INT (int_of_string(Lexing.lexeme lexbuf)) with Failure _ -> raise (Error(Literal_overflow "int", Location.curr lexbuf)) ) # 1550 "parsing/lexer.ml" | 25 -> # 301 "parsing/lexer.mll" ( FLOAT (remove_underscores(Lexing.lexeme lexbuf)) ) # 1555 "parsing/lexer.ml" | 26 -> # 303 "parsing/lexer.mll" ( let s = Lexing.lexeme lexbuf in try INT32 (Int32.of_string(String.sub s 0 (String.length s - 1))) with Failure _ -> raise (Error(Literal_overflow "int32", Location.curr lexbuf)) ) # 1564 "parsing/lexer.ml" | 27 -> # 309 "parsing/lexer.mll" ( let s = Lexing.lexeme lexbuf in try INT64 (Int64.of_string(String.sub s 0 (String.length s - 1))) with Failure _ -> raise (Error(Literal_overflow "int64", Location.curr lexbuf)) ) # 1573 "parsing/lexer.ml" | 28 -> # 315 "parsing/lexer.mll" ( let s = Lexing.lexeme lexbuf in try NATIVEINT (Nativeint.of_string(String.sub s 0 (String.length s - 1))) with Failure _ -> raise (Error(Literal_overflow "nativeint", Location.curr lexbuf)) ) # 1583 "parsing/lexer.ml" | 29 -> # 322 "parsing/lexer.mll" ( reset_string_buffer(); let string_start = lexbuf.lex_start_p in string_start_loc := Location.curr lexbuf; string lexbuf; lexbuf.lex_start_p <- string_start; STRING (get_stored_string()) ) # 1593 "parsing/lexer.ml" | 30 -> # 329 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 1; CHAR (Lexing.lexeme_char lexbuf 1) ) # 1599 "parsing/lexer.ml" | 31 -> # 332 "parsing/lexer.mll" ( CHAR(Lexing.lexeme_char lexbuf 1) ) # 1604 "parsing/lexer.ml" | 32 -> # 334 "parsing/lexer.mll" ( CHAR(char_for_backslash (Lexing.lexeme_char lexbuf 2)) ) # 1609 "parsing/lexer.ml" | 33 -> # 336 "parsing/lexer.mll" ( CHAR(char_for_decimal_code lexbuf 2) ) # 1614 "parsing/lexer.ml" | 34 -> # 338 "parsing/lexer.mll" ( CHAR(char_for_hexadecimal_code lexbuf 3) ) # 1619 "parsing/lexer.ml" | 35 -> # 340 "parsing/lexer.mll" ( let l = Lexing.lexeme lexbuf in let esc = String.sub l 1 (String.length l - 1) in raise (Error(Illegal_escape esc, Location.curr lexbuf)) ) # 1627 "parsing/lexer.ml" | 36 -> # 345 "parsing/lexer.mll" ( comment_start_loc := [Location.curr lexbuf]; comment lexbuf; token lexbuf ) # 1634 "parsing/lexer.ml" | 37 -> # 349 "parsing/lexer.mll" ( let loc = Location.curr lexbuf in Location.prerr_warning loc Warnings.Comment_start; comment_start_loc := [Location.curr lexbuf]; comment lexbuf; token lexbuf ) # 1644 "parsing/lexer.ml" | 38 -> # 356 "parsing/lexer.mll" ( let loc = Location.curr lexbuf in Location.prerr_warning loc Warnings.Comment_not_end; lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_curr_pos - 1; let curpos = lexbuf.lex_curr_p in lexbuf.lex_curr_p <- { curpos with pos_cnum = curpos.pos_cnum - 1 }; STAR ) # 1655 "parsing/lexer.ml" | 39 -> let num = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) lexbuf.Lexing.lex_mem.(1) and name = Lexing.sub_lexeme_opt lexbuf lexbuf.Lexing.lex_mem.(3) lexbuf.Lexing.lex_mem.(2) in # 366 "parsing/lexer.mll" ( update_loc lexbuf name (int_of_string num) true 0; token lexbuf ) # 1665 "parsing/lexer.ml" | 40 -> # 369 "parsing/lexer.mll" ( SHARP ) # 1670 "parsing/lexer.ml" | 41 -> # 370 "parsing/lexer.mll" ( AMPERSAND ) # 1675 "parsing/lexer.ml" | 42 -> # 371 "parsing/lexer.mll" ( AMPERAMPER ) # 1680 "parsing/lexer.ml" | 43 -> # 372 "parsing/lexer.mll" ( BACKQUOTE ) # 1685 "parsing/lexer.ml" | 44 -> # 373 "parsing/lexer.mll" ( QUOTE ) # 1690 "parsing/lexer.ml" | 45 -> # 374 "parsing/lexer.mll" ( LPAREN ) # 1695 "parsing/lexer.ml" | 46 -> # 375 "parsing/lexer.mll" ( RPAREN ) # 1700 "parsing/lexer.ml" | 47 -> # 376 "parsing/lexer.mll" ( STAR ) # 1705 "parsing/lexer.ml" | 48 -> # 377 "parsing/lexer.mll" ( COMMA ) # 1710 "parsing/lexer.ml" | 49 -> # 378 "parsing/lexer.mll" ( MINUSGREATER ) # 1715 "parsing/lexer.ml" | 50 -> # 379 "parsing/lexer.mll" ( DOT ) # 1720 "parsing/lexer.ml" | 51 -> # 380 "parsing/lexer.mll" ( DOTDOT ) # 1725 "parsing/lexer.ml" | 52 -> # 381 "parsing/lexer.mll" ( COLON ) # 1730 "parsing/lexer.ml" | 53 -> # 382 "parsing/lexer.mll" ( COLONCOLON ) # 1735 "parsing/lexer.ml" | 54 -> # 383 "parsing/lexer.mll" ( COLONEQUAL ) # 1740 "parsing/lexer.ml" | 55 -> # 384 "parsing/lexer.mll" ( COLONGREATER ) # 1745 "parsing/lexer.ml" | 56 -> # 385 "parsing/lexer.mll" ( SEMI ) # 1750 "parsing/lexer.ml" | 57 -> # 386 "parsing/lexer.mll" ( SEMISEMI ) # 1755 "parsing/lexer.ml" | 58 -> # 387 "parsing/lexer.mll" ( LESS ) # 1760 "parsing/lexer.ml" | 59 -> # 388 "parsing/lexer.mll" ( LESSMINUS ) # 1765 "parsing/lexer.ml" | 60 -> # 389 "parsing/lexer.mll" ( EQUAL ) # 1770 "parsing/lexer.ml" | 61 -> # 390 "parsing/lexer.mll" ( LBRACKET ) # 1775 "parsing/lexer.ml" | 62 -> # 391 "parsing/lexer.mll" ( LBRACKETBAR ) # 1780 "parsing/lexer.ml" | 63 -> # 392 "parsing/lexer.mll" ( LBRACKETLESS ) # 1785 "parsing/lexer.ml" | 64 -> # 393 "parsing/lexer.mll" ( LBRACKETGREATER ) # 1790 "parsing/lexer.ml" | 65 -> # 394 "parsing/lexer.mll" ( RBRACKET ) # 1795 "parsing/lexer.ml" | 66 -> # 395 "parsing/lexer.mll" ( LBRACE ) # 1800 "parsing/lexer.ml" | 67 -> # 396 "parsing/lexer.mll" ( LBRACELESS ) # 1805 "parsing/lexer.ml" | 68 -> # 397 "parsing/lexer.mll" ( BAR ) # 1810 "parsing/lexer.ml" | 69 -> # 398 "parsing/lexer.mll" ( BARBAR ) # 1815 "parsing/lexer.ml" | 70 -> # 399 "parsing/lexer.mll" ( BARRBRACKET ) # 1820 "parsing/lexer.ml" | 71 -> # 400 "parsing/lexer.mll" ( GREATER ) # 1825 "parsing/lexer.ml" | 72 -> # 401 "parsing/lexer.mll" ( GREATERRBRACKET ) # 1830 "parsing/lexer.ml" | 73 -> # 402 "parsing/lexer.mll" ( RBRACE ) # 1835 "parsing/lexer.ml" | 74 -> # 403 "parsing/lexer.mll" ( GREATERRBRACE ) # 1840 "parsing/lexer.ml" | 75 -> # 405 "parsing/lexer.mll" ( INFIXOP0 "!=" ) # 1845 "parsing/lexer.ml" | 76 -> # 406 "parsing/lexer.mll" ( PLUS ) # 1850 "parsing/lexer.ml" | 77 -> # 407 "parsing/lexer.mll" ( MINUS ) # 1855 "parsing/lexer.ml" | 78 -> # 408 "parsing/lexer.mll" ( MINUSDOT ) # 1860 "parsing/lexer.ml" | 79 -> # 409 "parsing/lexer.mll" ( LIDENT ".@" ) # 1865 "parsing/lexer.ml" | 80 -> # 412 "parsing/lexer.mll" ( PREFIXOP(Lexing.lexeme lexbuf) ) # 1870 "parsing/lexer.ml" | 81 -> # 414 "parsing/lexer.mll" ( PREFIXOP(Lexing.lexeme lexbuf) ) # 1875 "parsing/lexer.ml" | 82 -> # 416 "parsing/lexer.mll" ( INFIXOP0(Lexing.lexeme lexbuf) ) # 1880 "parsing/lexer.ml" | 83 -> # 418 "parsing/lexer.mll" ( INFIXOP0(Lexing.lexeme lexbuf) ) # 1885 "parsing/lexer.ml" | 84 -> # 420 "parsing/lexer.mll" ( INFIXOP1(Lexing.lexeme lexbuf) ) # 1890 "parsing/lexer.ml" | 85 -> # 422 "parsing/lexer.mll" ( INFIXOP2(Lexing.lexeme lexbuf) ) # 1895 "parsing/lexer.ml" | 86 -> # 424 "parsing/lexer.mll" ( INFIXOP4(Lexing.lexeme lexbuf) ) # 1900 "parsing/lexer.ml" | 87 -> # 426 "parsing/lexer.mll" ( INFIXOP3(Lexing.lexeme lexbuf) ) # 1905 "parsing/lexer.ml" | 88 -> # 427 "parsing/lexer.mll" ( EOF ) # 1910 "parsing/lexer.ml" | 89 -> # 429 "parsing/lexer.mll" ( raise (Error(Illegal_character (Lexing.lexeme_char lexbuf 0), Location.curr lexbuf)) ) # 1917 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state and comment lexbuf = __ocaml_lex_comment_rec lexbuf 142 and __ocaml_lex_comment_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 435 "parsing/lexer.mll" ( comment_start_loc := (Location.curr lexbuf) :: !comment_start_loc; comment lexbuf; ) # 1930 "parsing/lexer.ml" | 1 -> # 439 "parsing/lexer.mll" ( match !comment_start_loc with | [] -> assert false | [x] -> comment_start_loc := []; | _ :: l -> comment_start_loc := l; comment lexbuf; ) # 1940 "parsing/lexer.ml" | 2 -> # 446 "parsing/lexer.mll" ( reset_string_buffer(); string_start_loc := Location.curr lexbuf; begin try string lexbuf with Error (Unterminated_string, _) -> match !comment_start_loc with | [] -> assert false | loc :: _ -> comment_start_loc := []; raise (Error (Unterminated_string_in_comment, loc)) end; reset_string_buffer (); comment lexbuf ) # 1955 "parsing/lexer.ml" | 3 -> # 458 "parsing/lexer.mll" ( comment lexbuf ) # 1960 "parsing/lexer.ml" | 4 -> # 460 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 1; comment lexbuf ) # 1967 "parsing/lexer.ml" | 5 -> # 464 "parsing/lexer.mll" ( comment lexbuf ) # 1972 "parsing/lexer.ml" | 6 -> # 466 "parsing/lexer.mll" ( comment lexbuf ) # 1977 "parsing/lexer.ml" | 7 -> # 468 "parsing/lexer.mll" ( comment lexbuf ) # 1982 "parsing/lexer.ml" | 8 -> # 470 "parsing/lexer.mll" ( comment lexbuf ) # 1987 "parsing/lexer.ml" | 9 -> # 472 "parsing/lexer.mll" ( match !comment_start_loc with | [] -> assert false | loc :: _ -> comment_start_loc := []; raise (Error (Unterminated_comment, loc)) ) # 1996 "parsing/lexer.ml" | 10 -> # 478 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0; comment lexbuf ) # 2003 "parsing/lexer.ml" | 11 -> # 482 "parsing/lexer.mll" ( comment lexbuf ) # 2008 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_comment_rec lexbuf __ocaml_lex_state and string lexbuf = lexbuf.Lexing.lex_mem <- Array.create 2 (-1) ; __ocaml_lex_string_rec lexbuf 161 and __ocaml_lex_string_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 486 "parsing/lexer.mll" ( () ) # 2019 "parsing/lexer.ml" | 1 -> let space = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) lexbuf.Lexing.lex_curr_pos in # 488 "parsing/lexer.mll" ( update_loc lexbuf None 1 false (String.length space); string lexbuf ) # 2028 "parsing/lexer.ml" | 2 -> # 492 "parsing/lexer.mll" ( store_string_char(char_for_backslash(Lexing.lexeme_char lexbuf 1)); string lexbuf ) # 2034 "parsing/lexer.ml" | 3 -> # 495 "parsing/lexer.mll" ( store_string_char(char_for_decimal_code lexbuf 1); string lexbuf ) # 2040 "parsing/lexer.ml" | 4 -> # 498 "parsing/lexer.mll" ( store_string_char(char_for_hexadecimal_code lexbuf 2); string lexbuf ) # 2046 "parsing/lexer.ml" | 5 -> # 501 "parsing/lexer.mll" ( if in_comment () then string lexbuf else begin (* Should be an error, but we are very lax. raise (Error (Illegal_escape (Lexing.lexeme lexbuf), Location.curr lexbuf)) *) let loc = Location.curr lexbuf in Location.prerr_warning loc Warnings.Illegal_backslash; store_string_char (Lexing.lexeme_char lexbuf 0); store_string_char (Lexing.lexeme_char lexbuf 1); string lexbuf end ) # 2064 "parsing/lexer.ml" | 6 -> # 516 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0; let s = Lexing.lexeme lexbuf in for i = 0 to String.length s - 1 do store_string_char s.[i]; done; string lexbuf ) # 2075 "parsing/lexer.ml" | 7 -> # 524 "parsing/lexer.mll" ( raise (Error (Unterminated_string, !string_start_loc)) ) # 2080 "parsing/lexer.ml" | 8 -> # 526 "parsing/lexer.mll" ( store_string_char(Lexing.lexeme_char lexbuf 0); string lexbuf ) # 2086 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_string_rec lexbuf __ocaml_lex_state and skip_sharp_bang lexbuf = __ocaml_lex_skip_sharp_bang_rec lexbuf 170 and __ocaml_lex_skip_sharp_bang_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 531 "parsing/lexer.mll" ( update_loc lexbuf None 3 false 0 ) # 2097 "parsing/lexer.ml" | 1 -> # 533 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0 ) # 2102 "parsing/lexer.ml" | 2 -> # 534 "parsing/lexer.mll" ( () ) # 2107 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_skip_sharp_bang_rec lexbuf __ocaml_lex_state ;;