diff --git a/src/ocaml/parsing/ast_helper.ml b/src/ocaml/parsing/ast_helper.ml index ce4c27234c..5e093022bc 100644 --- a/src/ocaml/parsing/ast_helper.ml +++ b/src/ocaml/parsing/ast_helper.ml @@ -77,6 +77,7 @@ module Typ = struct let poly ?loc ?attrs a b = mk ?loc ?attrs (Ptyp_poly (a, b)) let package ?loc ?attrs a b = mk ?loc ?attrs (Ptyp_package (a, b)) let extension ?loc ?attrs a = mk ?loc ?attrs (Ptyp_extension a) + let open_ ?loc ?attrs mod_ident t = mk ?loc ?attrs (Ptyp_open (mod_ident, t)) let force_poly t = match t.ptyp_desc with @@ -107,9 +108,9 @@ module Typ = struct Ptyp_object (List.map loop_object_field lst, o) | Ptyp_class (longident, lst) -> Ptyp_class (longident, List.map loop lst) - | Ptyp_alias(core_type, string) -> - check_variable var_names t.ptyp_loc string; - Ptyp_alias(loop core_type, string) + | Ptyp_alias(core_type, alias) -> + check_variable var_names alias.loc alias.txt; + Ptyp_alias(loop core_type, alias) | Ptyp_variant(row_field_list, flag, lbl_lst_option) -> Ptyp_variant(List.map loop_row_field row_field_list, flag, lbl_lst_option) @@ -119,6 +120,8 @@ module Typ = struct Ptyp_poly(string_lst, loop core_type) | Ptyp_package(longident,lst) -> Ptyp_package(longident,List.map (fun (n,typ) -> (n,loop typ) ) lst) + | Ptyp_open (mod_ident, core_type) -> + Ptyp_open (mod_ident, loop core_type) | Ptyp_extension (s, arg) -> Ptyp_extension (s, arg) in @@ -186,8 +189,7 @@ module Exp = struct let ident ?loc ?attrs a = mk ?loc ?attrs (Pexp_ident a) let constant ?loc ?attrs a = mk ?loc ?attrs (Pexp_constant a) let let_ ?loc ?attrs a b c = mk ?loc ?attrs (Pexp_let (a, b, c)) - let fun_ ?loc ?attrs a b c d = mk ?loc ?attrs (Pexp_fun (a, b, c, d)) - let function_ ?loc ?attrs a = mk ?loc ?attrs (Pexp_function a) + let function_ ?loc ?attrs a b c = mk ?loc ?attrs (Pexp_function (a, b, c)) let apply ?loc ?attrs a b = mk ?loc ?attrs (Pexp_apply (a, b)) let match_ ?loc ?attrs a b = mk ?loc ?attrs (Pexp_match (a, b)) let try_ ?loc ?attrs a b = mk ?loc ?attrs (Pexp_try (a, b)) diff --git a/src/ocaml/parsing/ast_helper.mli b/src/ocaml/parsing/ast_helper.mli index 8ac40ed7c2..70f59e5b97 100644 --- a/src/ocaml/parsing/ast_helper.mli +++ b/src/ocaml/parsing/ast_helper.mli @@ -81,12 +81,14 @@ module Typ : val object_: ?loc:loc -> ?attrs:attrs -> object_field list -> closed_flag -> core_type val class_: ?loc:loc -> ?attrs:attrs -> lid -> core_type list -> core_type - val alias: ?loc:loc -> ?attrs:attrs -> core_type -> string -> core_type + val alias: ?loc:loc -> ?attrs:attrs -> core_type -> string with_loc + -> core_type val variant: ?loc:loc -> ?attrs:attrs -> row_field list -> closed_flag -> label list option -> core_type val poly: ?loc:loc -> ?attrs:attrs -> str list -> core_type -> core_type val package: ?loc:loc -> ?attrs:attrs -> lid -> (lid * core_type) list -> core_type + val open_ : ?loc:loc -> ?attrs:attrs -> lid -> core_type -> core_type val extension: ?loc:loc -> ?attrs:attrs -> extension -> core_type val force_poly: core_type -> core_type @@ -139,9 +141,9 @@ module Exp: val constant: ?loc:loc -> ?attrs:attrs -> constant -> expression val let_: ?loc:loc -> ?attrs:attrs -> rec_flag -> value_binding list -> expression -> expression - val fun_: ?loc:loc -> ?attrs:attrs -> arg_label -> expression option - -> pattern -> expression -> expression - val function_: ?loc:loc -> ?attrs:attrs -> case list -> expression + val function_ : ?loc:loc -> ?attrs:attrs -> function_param list + -> type_constraint option -> function_body + -> expression val apply: ?loc:loc -> ?attrs:attrs -> expression -> (arg_label * expression) list -> expression val match_: ?loc:loc -> ?attrs:attrs -> expression -> case list diff --git a/src/ocaml/parsing/ast_iterator.ml b/src/ocaml/parsing/ast_iterator.ml index 2398e772d1..94d5806fb3 100644 --- a/src/ocaml/parsing/ast_iterator.ml +++ b/src/ocaml/parsing/ast_iterator.ml @@ -40,6 +40,7 @@ type iterator = { class_type_declaration: iterator -> class_type_declaration -> unit; class_type_field: iterator -> class_type_field -> unit; constructor_declaration: iterator -> constructor_declaration -> unit; + directive_argument: iterator -> directive_argument -> unit; expr: iterator -> expression -> unit; extension: iterator -> extension -> unit; extension_constructor: iterator -> extension_constructor -> unit; @@ -61,6 +62,8 @@ type iterator = { signature_item: iterator -> signature_item -> unit; structure: iterator -> structure -> unit; structure_item: iterator -> structure_item -> unit; + toplevel_directive: iterator -> toplevel_directive -> unit; + toplevel_phrase: iterator -> toplevel_phrase -> unit; typ: iterator -> core_type -> unit; row_field: iterator -> row_field -> unit; object_field: iterator -> object_field -> unit; @@ -132,6 +135,9 @@ module T = struct | Ptyp_package (lid, l) -> iter_loc sub lid; List.iter (iter_tuple (iter_loc sub) (sub.typ sub)) l + | Ptyp_open (mod_ident, t) -> + iter_loc sub mod_ident; + sub.typ sub t | Ptyp_extension x -> sub.extension sub x let iter_type_declaration sub @@ -348,6 +354,32 @@ end module E = struct (* Value expressions for the core language *) + let iter_function_param sub { pparam_loc = loc; pparam_desc = desc } = + sub.location sub loc; + match desc with + | Pparam_val (_lab, def, p) -> + iter_opt (sub.expr sub) def; + sub.pat sub p + | Pparam_newtype ty -> + iter_loc sub ty + + let iter_body sub body = + match body with + | Pfunction_body e -> + sub.expr sub e + | Pfunction_cases (cases, loc, attrs) -> + sub.cases sub cases; + sub.location sub loc; + sub.attributes sub attrs + + let iter_constraint sub constraint_ = + match constraint_ with + | Pconstraint ty -> + sub.typ sub ty + | Pcoerce (ty1, ty2) -> + iter_opt (sub.typ sub) ty1; + sub.typ sub ty2 + let iter sub {pexp_loc = loc; pexp_desc = desc; pexp_attributes = attrs} = sub.location sub loc; sub.attributes sub attrs; @@ -357,11 +389,10 @@ module E = struct | Pexp_let (_r, vbs, e) -> List.iter (sub.value_binding sub) vbs; sub.expr sub e - | Pexp_fun (_lab, def, p, e) -> - iter_opt (sub.expr sub) def; - sub.pat sub p; - sub.expr sub e - | Pexp_function pel -> sub.cases sub pel + | Pexp_function (params, constraint_, body) -> + List.iter (iter_function_param sub) params; + iter_opt (iter_constraint sub) constraint_; + iter_body sub body | Pexp_apply (e, l) -> sub.expr sub e; List.iter (iter_snd (sub.expr sub)) l | Pexp_match (e, pel) -> @@ -694,4 +725,22 @@ let default_iterator = | PTyp x -> this.typ this x | PPat (x, g) -> this.pat this x; iter_opt (this.expr this) g ); + + directive_argument = + (fun this a -> + this.location this a.pdira_loc + ); + + toplevel_directive = + (fun this d -> + iter_loc this d.pdir_name; + iter_opt (this.directive_argument this) d.pdir_arg; + this.location this d.pdir_loc + ); + + toplevel_phrase = + (fun this -> function + | Ptop_def s -> this.structure this s + | Ptop_dir d -> this.toplevel_directive this d + ); } diff --git a/src/ocaml/parsing/ast_iterator.mli b/src/ocaml/parsing/ast_iterator.mli index 638ac5e8b6..6b02889163 100644 --- a/src/ocaml/parsing/ast_iterator.mli +++ b/src/ocaml/parsing/ast_iterator.mli @@ -43,6 +43,7 @@ type iterator = { class_type_declaration: iterator -> class_type_declaration -> unit; class_type_field: iterator -> class_type_field -> unit; constructor_declaration: iterator -> constructor_declaration -> unit; + directive_argument: iterator -> directive_argument -> unit; expr: iterator -> expression -> unit; extension: iterator -> extension -> unit; extension_constructor: iterator -> extension_constructor -> unit; @@ -64,6 +65,8 @@ type iterator = { signature_item: iterator -> signature_item -> unit; structure: iterator -> structure -> unit; structure_item: iterator -> structure_item -> unit; + toplevel_directive: iterator -> toplevel_directive -> unit; + toplevel_phrase: iterator -> toplevel_phrase -> unit; typ: iterator -> core_type -> unit; row_field: iterator -> row_field -> unit; object_field: iterator -> object_field -> unit; diff --git a/src/ocaml/parsing/ast_mapper.ml b/src/ocaml/parsing/ast_mapper.ml index 12d9018880..e3997095a9 100644 --- a/src/ocaml/parsing/ast_mapper.ml +++ b/src/ocaml/parsing/ast_mapper.ml @@ -20,6 +20,9 @@ (* Ensure that record patterns don't miss any field. *) *) +[@@@ocaml.warning "-60"] module Str = Ast_helper.Str (* For ocamldep *) +[@@@ocaml.warning "+60"] + open Parsetree open Ast_helper open Location @@ -45,6 +48,7 @@ type mapper = { constant: mapper -> constant -> constant; constructor_declaration: mapper -> constructor_declaration -> constructor_declaration; + directive_argument: mapper -> directive_argument -> directive_argument; expr: mapper -> expression -> expression; extension: mapper -> extension -> extension; extension_constructor: mapper -> extension_constructor @@ -68,6 +72,8 @@ type mapper = { signature_item: mapper -> signature_item -> signature_item; structure: mapper -> structure -> structure; structure_item: mapper -> structure_item -> structure_item; + toplevel_directive: mapper -> toplevel_directive -> toplevel_directive; + toplevel_phrase: mapper -> toplevel_phrase -> toplevel_phrase; typ: mapper -> core_type -> core_type; type_declaration: mapper -> type_declaration -> type_declaration; type_extension: mapper -> type_extension -> type_extension; @@ -144,7 +150,9 @@ module T = struct object_ ~loc ~attrs (List.map (object_field sub) l) o | Ptyp_class (lid, tl) -> class_ ~loc ~attrs (map_loc sub lid) (List.map (sub.typ sub) tl) - | Ptyp_alias (t, s) -> alias ~loc ~attrs (sub.typ sub t) s + | Ptyp_alias (t, s) -> + let s = map_loc sub s in + alias ~loc ~attrs (sub.typ sub t) s | Ptyp_variant (rl, b, ll) -> variant ~loc ~attrs (List.map (row_field sub) rl) b ll | Ptyp_poly (sl, t) -> poly ~loc ~attrs @@ -152,6 +160,8 @@ module T = struct | Ptyp_package (lid, l) -> package ~loc ~attrs (map_loc sub lid) (List.map (map_tuple (map_loc sub) (sub.typ sub)) l) + | Ptyp_open (mod_ident, t) -> + open_ ~loc ~attrs (map_loc sub mod_ident) (sub.typ sub t) | Ptyp_extension x -> extension ~loc ~attrs (sub.extension sub x) let map_type_declaration sub @@ -387,6 +397,35 @@ end module E = struct (* Value expressions for the core language *) + let map_function_param sub { pparam_loc = loc; pparam_desc = desc } = + let loc = sub.location sub loc in + let desc = + match desc with + | Pparam_val (lab, def, p) -> + Pparam_val + (lab, + map_opt (sub.expr sub) def, + sub.pat sub p) + | Pparam_newtype ty -> + Pparam_newtype (map_loc sub ty) + in + { pparam_loc = loc; pparam_desc = desc } + + let map_function_body sub body = + match body with + | Pfunction_body e -> + Pfunction_body (sub.expr sub e) + | Pfunction_cases (cases, loc, attributes) -> + let cases = sub.cases sub cases in + let loc = sub.location sub loc in + let attributes = sub.attributes sub attributes in + Pfunction_cases (cases, loc, attributes) + + let map_constraint sub c = + match c with + | Pconstraint ty -> Pconstraint (sub.typ sub ty) + | Pcoerce (ty1, ty2) -> Pcoerce (map_opt (sub.typ sub) ty1, sub.typ sub ty2) + let map sub {pexp_loc = loc; pexp_desc = desc; pexp_attributes = attrs} = let open Exp in let loc = sub.location sub loc in @@ -397,10 +436,11 @@ module E = struct | Pexp_let (r, vbs, e) -> let_ ~loc ~attrs r (List.map (sub.value_binding sub) vbs) (sub.expr sub e) - | Pexp_fun (lab, def, p, e) -> - fun_ ~loc ~attrs lab (map_opt (sub.expr sub) def) (sub.pat sub p) - (sub.expr sub e) - | Pexp_function pel -> function_ ~loc ~attrs (sub.cases sub pel) + | Pexp_function (ps, c, b) -> + function_ ~loc ~attrs + (List.map (map_function_param sub) ps) + (map_opt (map_constraint sub) c) + (map_function_body sub b) | Pexp_apply (e, l) -> apply ~loc ~attrs (sub.expr sub e) (List.map (map_snd (sub.expr sub)) l) | Pexp_match (e, pel) -> @@ -767,6 +807,22 @@ let default_mapper = | PTyp x -> PTyp (this.typ this x) | PPat (x, g) -> PPat (this.pat this x, map_opt (this.expr this) g) ); + + directive_argument = + (fun this a -> + { pdira_desc= a.pdira_desc + ; pdira_loc= this.location this a.pdira_loc} ); + + toplevel_directive = + (fun this d -> + { pdir_name= map_loc this d.pdir_name + ; pdir_arg= map_opt (this.directive_argument this) d.pdir_arg + ; pdir_loc= this.location this d.pdir_loc } ); + + toplevel_phrase = + (fun this -> function + | Ptop_def s -> Ptop_def (this.structure this s) + | Ptop_dir d -> Ptop_dir (this.toplevel_directive this d) ); } let extension_of_error {kind; main; sub} = @@ -844,11 +900,16 @@ module PpxContext = struct } let make ~tool_name () = + let Load_path.{ visible; hidden } = Load_path.get_paths () in let fields = [ lid "tool_name", make_string tool_name; - lid "include_dirs", make_list make_string !Clflags.include_dirs; - lid "load_path", make_list make_string (Load_path.get_paths ()); + lid "include_dirs", make_list make_string (!Clflags.include_dirs); + lid "hidden_include_dirs", + make_list make_string (!Clflags.hidden_include_dirs); + lid "load_path", + make_pair (make_list make_string) (make_list make_string) + (visible, hidden); lid "open_modules", make_list make_string !Clflags.open_modules; lid "for_package", make_option make_string !Clflags.for_package; lid "debug", make_bool !Clflags.debug; @@ -917,6 +978,8 @@ module PpxContext = struct tool_name_ref := get_string payload | "include_dirs" -> Clflags.include_dirs := get_list get_string payload + | "hidden_include_dirs" -> + Clflags.hidden_include_dirs := get_list get_string payload | "load_path" -> (* Duplicates Compmisc.auto_include, since we can't reference Compmisc from this module. *) @@ -927,8 +990,11 @@ module PpxContext = struct let alert = Location.auto_include_alert in Load_path.auto_include_otherlibs alert find_in_dir fn in *) - Load_path.(init - ~auto_include:no_auto_include (get_list get_string payload)) + let visible, hidden = + get_pair (get_list get_string) (get_list get_string) payload + in + let auto_include = Load_path.no_auto_include in + Load_path.init ~auto_include ~visible ~hidden | "open_modules" -> Clflags.open_modules := get_list get_string payload | "for_package" -> diff --git a/src/ocaml/parsing/ast_mapper.mli b/src/ocaml/parsing/ast_mapper.mli index 69f6b017ab..541c1f7dac 100644 --- a/src/ocaml/parsing/ast_mapper.mli +++ b/src/ocaml/parsing/ast_mapper.mli @@ -36,7 +36,7 @@ let test_mapper argv = expr = fun mapper expr -> match expr with | { pexp_desc = Pexp_extension ({ txt = "test" }, PStr [])} -> - Ast_helper.Exp.constant (Const_int 42) + Ast_helper.Exp.constant (Pconst_integer ("42", None)) | other -> default_mapper.expr mapper other; } let () = @@ -74,6 +74,7 @@ type mapper = { constant: mapper -> constant -> constant; constructor_declaration: mapper -> constructor_declaration -> constructor_declaration; + directive_argument: mapper -> directive_argument -> directive_argument; expr: mapper -> expression -> expression; extension: mapper -> extension -> extension; extension_constructor: mapper -> extension_constructor @@ -97,6 +98,8 @@ type mapper = { signature_item: mapper -> signature_item -> signature_item; structure: mapper -> structure -> structure; structure_item: mapper -> structure_item -> structure_item; + toplevel_directive: mapper -> toplevel_directive -> toplevel_directive; + toplevel_phrase: mapper -> toplevel_phrase -> toplevel_phrase; typ: mapper -> core_type -> core_type; type_declaration: mapper -> type_declaration -> type_declaration; type_extension: mapper -> type_extension -> type_extension; @@ -122,8 +125,8 @@ val tool_name: unit -> string ["ocaml"], ... Some global variables that reflect command-line options are automatically synchronized between the calling tool and the ppx preprocessor: {!Clflags.include_dirs}, - {!Load_path}, {!Clflags.open_modules}, {!Clflags.for_package}, - {!Clflags.debug}. *) + {!Clflags.hidden_include_dirs}, {!Load_path}, {!Clflags.open_modules}, + {!Clflags.for_package}, {!Clflags.debug}. *) val apply: source:string -> target:string -> mapper -> unit diff --git a/src/ocaml/parsing/attr_helper.ml b/src/ocaml/parsing/attr_helper.ml index 0a616cd746..390124199b 100644 --- a/src/ocaml/parsing/attr_helper.ml +++ b/src/ocaml/parsing/attr_helper.ml @@ -16,14 +16,17 @@ open Asttypes open Parsetree +module Style = Misc.Style + type error = | Multiple_attributes of string | No_payload_expected of string exception Error of Location.t * error -let get_no_payload_attribute alt_names attrs = - match List.filter (fun a -> List.mem a.attr_name.txt alt_names) attrs with +let get_no_payload_attribute nm attrs = + let actions = [(nm, Builtin_attributes.Return)] in + match Builtin_attributes.select_attributes actions attrs with | [] -> None | [ {attr_name = name; attr_payload = PStr []; attr_loc = _} ] -> Some name | [ {attr_name = name; _} ] -> @@ -40,9 +43,9 @@ open Format let report_error ppf = function | Multiple_attributes name -> - fprintf ppf "Too many `%s' attributes" name + fprintf ppf "Too many %a attributes" Style.inline_code name | No_payload_expected name -> - fprintf ppf "Attribute `%s' does not accept a payload" name + fprintf ppf "Attribute %a does not accept a payload" Style.inline_code name let () = Location.register_error_of_exn diff --git a/src/ocaml/parsing/attr_helper.mli b/src/ocaml/parsing/attr_helper.mli index a3ddc0c9cb..a94042a290 100644 --- a/src/ocaml/parsing/attr_helper.mli +++ b/src/ocaml/parsing/attr_helper.mli @@ -27,14 +27,11 @@ type error = | Multiple_attributes of string | No_payload_expected of string -(** The [string list] argument of the following functions is a list of - alternative names for the attribute we are looking for. For instance: - - {[ - ["foo"; "ocaml.foo"] - ]} *) -val get_no_payload_attribute : string list -> attributes -> string loc option -val has_no_payload_attribute : string list -> attributes -> bool +(** The [string] argument of the following functions is the name of the + attribute we are looking for. If the argument is ["foo"], these functions + will find attributes with the name ["foo"] or ["ocaml.foo"] *) +val get_no_payload_attribute : string -> attributes -> string loc option +val has_no_payload_attribute : string -> attributes -> bool exception Error of Location.t * error diff --git a/src/ocaml/parsing/builtin_attributes.ml b/src/ocaml/parsing/builtin_attributes.ml index 0db2133143..6add5ac375 100644 --- a/src/ocaml/parsing/builtin_attributes.ml +++ b/src/ocaml/parsing/builtin_attributes.ml @@ -15,6 +15,84 @@ open Asttypes open Parsetree +open Ast_helper + + +module Attribute_table = Hashtbl.Make (struct + type t = string with_loc + + let hash : t -> int = Hashtbl.hash + let equal : t -> t -> bool = (=) +end) +let unused_attrs = Attribute_table.create 128 +let mark_used t = Attribute_table.remove unused_attrs t + +(* [attr_order] is used to issue unused attribute warnings in the order the + attributes occur in the file rather than the random order of the hash table +*) +let attr_order a1 a2 = + match String.compare a1.loc.loc_start.pos_fname a2.loc.loc_start.pos_fname + with + | 0 -> Int.compare a1.loc.loc_start.pos_cnum a2.loc.loc_start.pos_cnum + | n -> n + +let warn_unused () = + let keys = List.of_seq (Attribute_table.to_seq_keys unused_attrs) in + let keys = List.sort attr_order keys in + List.iter (fun sloc -> + Location.prerr_warning sloc.loc (Warnings.Misplaced_attribute sloc.txt)) + keys + +(* These are the attributes that are tracked in the builtin_attrs table for + misplaced attribute warnings. *) +let builtin_attrs = + [ "alert" + ; "boxed" + ; "deprecated" + ; "deprecated_mutable" + ; "explicit_arity" + ; "immediate" + ; "immediate64" + ; "inline" + ; "inlined" + ; "noalloc" + ; "poll" + ; "ppwarning" + ; "specialise" + ; "specialised" + ; "tailcall" + ; "tail_mod_cons" + ; "unboxed" + ; "untagged" + ; "unrolled" + ; "warnerror" + ; "warning" + ; "warn_on_literal_pattern" + ] + +let builtin_attrs = + let tbl = Hashtbl.create 128 in + List.iter (fun attr -> Hashtbl.add tbl attr ()) builtin_attrs; + tbl + +let drop_ocaml_attr_prefix s = + let len = String.length s in + if String.starts_with ~prefix:"ocaml." s && len > 6 then + String.sub s 6 (len - 6) + else + s + +let is_builtin_attr s = Hashtbl.mem builtin_attrs (drop_ocaml_attr_prefix s) + +type current_phase = Parser | Invariant_check + +let register_attr current_phase name = + match current_phase with + | Parser when !Clflags.all_ppx <> [] -> () + | Parser | Invariant_check -> + if is_builtin_attr name.txt then + Attribute_table.replace unused_attrs name () + let string_of_cst = function | Pconst_string(s, _, _) -> Some s @@ -67,6 +145,41 @@ let error_of_extension ext = | ({txt; loc}, _) -> Location.errorf ~loc "Uninterpreted extension '%s'." txt +let attr_equals_builtin {attr_name = {txt; _}; _} s = + (* Check for attribute s or ocaml.s. Avoid allocating a fresh string. *) + txt = s || + ( String.length txt = 6 + String.length s + && String.starts_with ~prefix:"ocaml." txt + && String.ends_with ~suffix:s txt) + +let mark_alert_used a = + if attr_equals_builtin a "deprecated" || attr_equals_builtin a "alert" + then mark_used a.attr_name + +let mark_alerts_used l = List.iter mark_alert_used l + +let mark_warn_on_literal_pattern_used l = + List.iter (fun a -> + if attr_equals_builtin a "warn_on_literal_pattern" + then mark_used a.attr_name) + l + +let mark_deprecated_mutable_used l = + List.iter (fun a -> + if attr_equals_builtin a "deprecated_mutable" + then mark_used a.attr_name) + l + +let mark_payload_attrs_used payload = + let iter = + { Ast_iterator.default_iterator + with attribute = fun self a -> + mark_used a.attr_name; + Ast_iterator.default_iterator.attribute self a + } + in + iter.payload iter payload + let kind_and_message = function | PStr[ {pstr_desc= @@ -87,15 +200,14 @@ let cat s1 s2 = if s2 = "" then s1 else s1 ^ "\n" ^ s2 let alert_attr x = - match x.attr_name.txt with - | "ocaml.deprecated"|"deprecated" -> - Some (x, "deprecated", string_of_opt_payload x.attr_payload) - | "ocaml.alert"|"alert" -> - begin match kind_and_message x.attr_payload with - | Some (kind, message) -> Some (x, kind, message) - | None -> None (* note: bad payloads detected by warning_attribute *) - end - | _ -> None + if attr_equals_builtin x "deprecated" then + Some (x, "deprecated", string_of_opt_payload x.attr_payload) + else if attr_equals_builtin x "alert" then + begin match kind_and_message x.attr_payload with + | Some (kind, message) -> Some (x, kind, message) + | None -> None (* note: bad payloads detected by warning_attribute *) + end + else None let alert_attrs l = List.filter_map alert_attr l @@ -128,9 +240,8 @@ let check_alerts_inclusion ~def ~use loc attrs1 attrs2 s = let rec deprecated_mutable_of_attrs = function | [] -> None - | {attr_name = {txt = "ocaml.deprecated_mutable"|"deprecated_mutable"; _}; - attr_payload = p} :: _ -> - Some (string_of_opt_payload p) + | attr :: _ when attr_equals_builtin attr "deprecated_mutable" -> + Some (string_of_opt_payload attr.attr_payload) | _ :: tl -> deprecated_mutable_of_attrs tl let check_deprecated_mutable loc attrs s = @@ -164,73 +275,67 @@ let rec attrs_of_str = function let alerts_of_str str = alerts_of_attrs (attrs_of_str str) -let check_no_alert attrs = - List.iter - (fun (a, _, _) -> - Location.prerr_warning a.attr_loc - (Warnings.Misplaced_attribute a.attr_name.txt) - ) - (alert_attrs attrs) - let warn_payload loc txt msg = Location.prerr_warning loc (Warnings.Attribute_payload (txt, msg)) let warning_attribute ?(ppwarning = true) = - let process loc txt errflag payload = + let process loc name errflag payload = + mark_used name; match string_of_payload payload with | Some s -> begin try Option.iter (Location.prerr_alert loc) (Warnings.parse_options errflag s) - with Arg.Bad msg -> warn_payload loc txt msg + with Arg.Bad msg -> warn_payload loc name.txt msg end | None -> - warn_payload loc txt "A single string literal is expected" + warn_payload loc name.txt "A single string literal is expected" in - let process_alert loc txt = function + let process_alert loc name = function | PStr[{pstr_desc= Pstr_eval( {pexp_desc=Pexp_constant(Pconst_string(s,_,_))}, _) }] -> - begin try Warnings.parse_alert_option s - with Arg.Bad msg -> warn_payload loc txt msg + begin + mark_used name; + try Warnings.parse_alert_option s + with Arg.Bad msg -> warn_payload loc name.txt msg end | k -> + (* Don't [mark_used] in the [Some] cases - that happens in [Env] or + [type_mod] if they are in a valid place. Do [mark_used] in the + [None] case, which is just malformed and covered by the "Invalid + payload" warning. *) match kind_and_message k with | Some ("all", _) -> - warn_payload loc txt "The alert name 'all' is reserved" + warn_payload loc name.txt "The alert name 'all' is reserved" | Some _ -> () - | None -> warn_payload loc txt "Invalid payload" + | None -> begin + mark_used name; + warn_payload loc name.txt "Invalid payload" + end in - function - | {attr_name = {txt = ("ocaml.warning"|"warning") as txt; _}; - attr_loc; - attr_payload; - } -> - process attr_loc txt false attr_payload - | {attr_name = {txt = ("ocaml.warnerror"|"warnerror") as txt; _}; - attr_loc; - attr_payload - } -> - process attr_loc txt true attr_payload - | {attr_name = {txt="ocaml.ppwarning"|"ppwarning"; _}; - attr_loc = _; - attr_payload = - PStr [ - { pstr_desc= - Pstr_eval({pexp_desc=Pexp_constant (Pconst_string (s, _, _))},_); - pstr_loc } - ]; - } when ppwarning -> - Location.prerr_warning pstr_loc (Warnings.Preprocessor s) - | {attr_name = {txt = ("ocaml.alert"|"alert") as txt; _}; - attr_loc; - attr_payload; - } -> - process_alert attr_loc txt attr_payload - | _ -> - () + fun ({attr_name; attr_loc; attr_payload} as attr) -> + if attr_equals_builtin attr "warning" then + process attr_loc attr_name false attr_payload + else if attr_equals_builtin attr "warnerror" then + process attr_loc attr_name true attr_payload + else if attr_equals_builtin attr "alert" then + process_alert attr_loc attr_name attr_payload + else if ppwarning && attr_equals_builtin attr "ppwarning" then + begin match attr_payload with + | PStr [{ pstr_desc= + Pstr_eval({pexp_desc=Pexp_constant + (Pconst_string (s, _, _))},_); + pstr_loc }] -> + (mark_used attr_name; + Location.prerr_warning pstr_loc (Warnings.Preprocessor s)) + | _ -> + (mark_used attr_name; + warn_payload attr_loc attr_name.txt + "A single string literal is expected") + end let warning_scope ?ppwarning attrs f = let prev = Warnings.backup () in @@ -244,33 +349,34 @@ let warning_scope ?ppwarning attrs f = raise exn -let warn_on_literal_pattern = +let has_attribute nm attrs = List.exists - (fun a -> match a.attr_name.txt with - | "ocaml.warn_on_literal_pattern"|"warn_on_literal_pattern" -> true - | _ -> false - ) + (fun a -> + if attr_equals_builtin a nm + then (mark_used a.attr_name; true) + else false) + attrs -let explicit_arity = - List.exists - (fun a -> match a.attr_name.txt with - | "ocaml.explicit_arity"|"explicit_arity" -> true - | _ -> false - ) +type attr_action = Mark_used_only | Return +let select_attributes actions attrs = + List.filter (fun a -> + List.exists (fun (nm, action) -> + attr_equals_builtin a nm && + begin + mark_used a.attr_name; + action = Return + end) + actions + ) attrs -let immediate = - List.exists - (fun a -> match a.attr_name.txt with - | "ocaml.immediate"|"immediate" -> true - | _ -> false - ) +let warn_on_literal_pattern attrs = + has_attribute "warn_on_literal_pattern" attrs -let immediate64 = - List.exists - (fun a -> match a.attr_name.txt with - | "ocaml.immediate64"|"immediate64" -> true - | _ -> false - ) +let explicit_arity attrs = has_attribute "explicit_arity" attrs + +let immediate attrs = has_attribute "immediate" attrs + +let immediate64 attrs = has_attribute "immediate64" attrs (* The "ocaml.boxed (default)" and "ocaml.unboxed (default)" attributes cannot be input by the user, they are added by the @@ -279,11 +385,6 @@ let immediate64 = source file because the default can change between compiler invocations. *) -let check l a = List.mem a.attr_name.txt l - -let has_unboxed attr = - List.exists (check ["ocaml.unboxed"; "unboxed"]) - attr +let has_unboxed attrs = has_attribute "unboxed" attrs -let has_boxed attr = - List.exists (check ["ocaml.boxed"; "boxed"]) attr +let has_boxed attrs = has_attribute "boxed" attrs diff --git a/src/ocaml/parsing/builtin_attributes.mli b/src/ocaml/parsing/builtin_attributes.mli index 6200fd74ec..4eb5ef91f2 100644 --- a/src/ocaml/parsing/builtin_attributes.mli +++ b/src/ocaml/parsing/builtin_attributes.mli @@ -13,26 +13,103 @@ (* *) (**************************************************************************) -(** Support for some of the builtin attributes +(** Support for the builtin attributes: - - ocaml.deprecated - ocaml.alert - - ocaml.error - - ocaml.ppwarning - - ocaml.warning - - ocaml.warnerror - - ocaml.explicit_arity (for camlp4/camlp5) - - ocaml.warn_on_literal_pattern + - ocaml.boxed + - ocaml.deprecated - ocaml.deprecated_mutable + - ocaml.explicit_arity - ocaml.immediate - ocaml.immediate64 - - ocaml.boxed / ocaml.unboxed + - ocaml.inline + - ocaml.inlined + - ocaml.noalloc + - ocaml.poll + - ocaml.ppwarning + - ocaml.specialise + - ocaml.specialised + - ocaml.tailcall + - ocaml.tail_mod_cons + - ocaml.unboxed + - ocaml.untagged + - ocaml.unrolled + - ocaml.warnerror + - ocaml.warning + - ocaml.warn_on_literal_pattern {b Warning:} this module is unstable and part of {{!Compiler_libs}compiler-libs}. *) +(** {2 Attribute tracking for warning 53} *) + +(** [register_attr] must be called on the locations of all attributes that + should be tracked for the purpose of misplaced attribute warnings. In + particular, it should be called on all attributes that are present in the + source program except those that are contained in the payload of another + attribute (because these may be left behind by a ppx and intentionally + ignored by the compiler). + + The [current_phase] argument indicates when this function is being called + - either when an attribute is created in the parser or when we see an + attribute while running the check in the [Ast_invariants] module. This is + used to ensure that we track only attributes from the final version of the + parse tree: we skip adding attributes seen at parse time if we can see that + a ppx will be run later, because the [Ast_invariants] check is always run on + the result of a ppx. + + Note that the [Ast_invariants] check is also run on parse trees created from + marshalled ast files if no ppx is being used, ensuring we don't miss + attributes in that case. +*) +type current_phase = Parser | Invariant_check +val register_attr : current_phase -> string Location.loc -> unit + +(** Marks the attributes hiding in the payload of another attribute used, for + the purposes of misplaced attribute warnings (see comment on + [current_phase] above). In the parser, it's simplest to add these to + the table and remove them later, rather than threading through state + tracking whether we're in an attribute payload. *) +val mark_payload_attrs_used : Parsetree.payload -> unit + +(** Issue misplaced attribute warnings for all attributes created with + [mk_internal] but not yet marked used. *) +val warn_unused : unit -> unit + +(** {3 Warning 53 helpers for environment attributes} + + Some attributes, like deprecation markers, do not affect the compilation of + the definition on which they appear, but rather result in warnings on future + uses of that definition. This is implemented by moving the raw attributes + into the environment, where they will be noticed on future accesses. + + To make misplaced attribute warnings work appropriately for these + attributes, we mark them "used" when they are moved into the environment. + This is done with the helper functions in this section. +*) + +(** Marks the attribute used for the purposes of misplaced attribute warnings if + it is an alert. Call this when moving things allowed to have alert + attributes into the environment. *) +val mark_alert_used : Parsetree.attribute -> unit + +(** The same as [List.iter mark_alert_used]. *) +val mark_alerts_used : Parsetree.attributes -> unit + +(** Marks "warn_on_literal_pattern" attributes used for the purposes of + misplaced attribute warnings. Call this when moving constructors into the + environment. *) +val mark_warn_on_literal_pattern_used : Parsetree.attributes -> unit + +(** Marks "deprecated_mutable" attributes used for the purposes of misplaced + attribute warnings. Call this when moving labels of mutable fields into the + environment. *) +val mark_deprecated_mutable_used : Parsetree.attributes -> unit + +(** {2 Helpers for alert and warning attributes} *) + val check_alerts: Location.t -> Parsetree.attributes -> string -> unit val check_alerts_inclusion: def:Location.t -> use:Location.t -> Location.t -> Parsetree.attributes -> @@ -47,14 +124,12 @@ val check_deprecated_mutable_inclusion: def:Location.t -> use:Location.t -> Location.t -> Parsetree.attributes -> Parsetree.attributes -> string -> unit -val check_no_alert: Parsetree.attributes -> unit - val error_of_extension: Parsetree.extension -> Location.error val warning_attribute: ?ppwarning:bool -> Parsetree.attribute -> unit (** Apply warning settings from the specified attribute. - "ocaml.warning"/"ocaml.warnerror" (and variants without the prefix) - are processed and other attributes are ignored. + "ocaml.warning"/"ocaml.warnerror" (and variants without the prefix) are + processed and marked used for warning 53. Other attributes are ignored. Also implement ocaml.ppwarning (unless ~ppwarning:false is passed). @@ -73,10 +148,37 @@ val warning_scope: is executed. *) +(** {2 Helpers for searching for particular attributes} *) + +(** [has_attribute name attrs] is true if an attribute with name [name] or + ["ocaml." ^ name] is present in [attrs]. It marks that attribute used for + the purposes of misplaced attribute warnings. *) +val has_attribute : string -> Parsetree.attributes -> bool + +(** [select_attributes actions attrs] finds the elements of [attrs] that appear + in [actions] and either returns them or just marks them used, according to + the corresponding [attr_action]. + + Each element [(nm, action)] of the [actions] list is an attribute along with + an [attr_action] specifying what to do with that attribute. The action is + used to accommodate different compiler configurations. If an attribute is + used only in some compiler configurations, it's important that we still look + for it and mark it used when compiling with other configurations. + Otherwise, we would issue spurious misplaced attribute warnings. *) +type attr_action = Mark_used_only | Return +val select_attributes : + (string * attr_action) list -> Parsetree.attributes -> Parsetree.attributes + +(** [attr_equals_builtin attr s] is true if the name of the attribute is [s] or + ["ocaml." ^ s]. This is useful for manually inspecting attribute names, but + note that doing so will not result in marking the attribute used for the + purpose of warning 53, so it is usually preferrable to use [has_attribute] + or [select_attributes]. *) +val attr_equals_builtin : Parsetree.attribute -> string -> bool + val warn_on_literal_pattern: Parsetree.attributes -> bool val explicit_arity: Parsetree.attributes -> bool - val immediate: Parsetree.attributes -> bool val immediate64: Parsetree.attributes -> bool diff --git a/src/ocaml/parsing/lexer.ml b/src/ocaml/parsing/lexer.ml new file mode 100644 index 0000000000..3ebda68eb7 --- /dev/null +++ b/src/ocaml/parsing/lexer.ml @@ -0,0 +1,3 @@ +(* This forward reference is filled in Lexer_raw.mll *) +let is_keyword_ref : (string -> bool) ref = ref (fun _ -> false) +let is_keyword txt = !is_keyword_ref txt diff --git a/src/ocaml/parsing/location.ml b/src/ocaml/parsing/location.ml index 1b8b5f1552..781a2e846b 100644 --- a/src/ocaml/parsing/location.ml +++ b/src/ocaml/parsing/location.ml @@ -150,6 +150,11 @@ let print_updating_num_loc_lines ppf f arg = pp_print_flush ppf (); pp_set_formatter_out_functions ppf out_functions +(* +let setup_tags () = + Misc.Style.setup !Clflags.color +*) + (******************************************************************************) (* Printing locations, e.g. 'File "foo.ml", line 3, characters 10-12' *) @@ -219,6 +224,7 @@ let print_filename ppf file = location might be invalid; in which case we do not print it. *) let print_loc ppf loc = + (* setup_tags (); *) let file_valid = function | "_none_" -> (* This is a dummy placeholder, but we print it anyway to please editors @@ -548,7 +554,7 @@ let lines_around *) (* -(* Try to get lines from a lexbuf *) +(* Attempt to get lines from the lexing buffer. *) let lines_around_from_lexbuf ~(start_pos: position) ~(end_pos: position) (lb: lexbuf): @@ -592,56 +598,17 @@ let lines_around_from_phrasebuf lines_around ~start_pos ~end_pos ~seek ~read_char *) -(* -(* Get lines from a file *) -let lines_around_from_file - ~(start_pos: position) ~(end_pos: position) - (filename: string): - input_line list - = - try - let cin = open_in_bin filename in - let read_char () = - try Some (input_char cin) with End_of_file -> None - in - let lines = - lines_around ~start_pos ~end_pos ~seek:(seek_in cin) ~read_char - in - close_in cin; - lines - with Sys_error _ -> [] -*) - (* (* A [get_lines] function for [highlight_quote] that reads from the current - input. - - It first tries to read from [!input_lexbuf], then if that fails (because the - lexbuf no longer contains the input we want), it reads from [!input_name] - directly *) + input. *) let lines_around_from_current_input ~start_pos ~end_pos = - (* Be a bit defensive, and do not try to open one of the possible - [!input_name] values that we know do not denote valid filenames. *) - let file_valid = function - | "//toplevel//" | "_none_" | "" -> false - | _ -> true - in - let from_file () = - if file_valid !input_name then - lines_around_from_file !input_name ~start_pos ~end_pos - else + match !input_lexbuf, !input_phrase_buffer, !input_name with + | _, Some pb, "//toplevel//" -> + lines_around_from_phrasebuf pb ~start_pos ~end_pos + | Some lb, _, _ -> + lines_around_from_lexbuf lb ~start_pos ~end_pos + | None, _, _ -> [] - in - match !input_lexbuf with - | Some lb -> - begin match lines_around_from_lexbuf lb ~start_pos ~end_pos with - | [] -> (* The input is likely not in the lexbuf anymore *) - from_file () - | lines -> - lines - end - | None -> - from_file () *) (******************************************************************************) @@ -760,6 +727,7 @@ let batch_mode_printer : report_printer = in let pp_txt ppf txt = Format.fprintf ppf "@[%t@]" txt in let pp self ppf report = + (* setup_tags (); *) separate_new_message ppf; (* Make sure we keep [num_loc_lines] updated. The tabulation box is here to give submessage the option @@ -814,7 +782,7 @@ let batch_mode_printer : report_printer = (* let terminfo_toplevel_printer (lb: lexbuf): report_printer = let pp self ppf err = - setup_colors (); + setup_tags (); (* Highlight all toplevel locations of the report, instead of displaying the main location. Do it now instead of in [pp_main_loc], to avoid messing with Format boxes. *) @@ -939,13 +907,21 @@ let deprecated ?def ?use loc message = alert ?def ?use ~kind:"deprecated" loc message +module Style = Misc.Style + let auto_include_alert lib = - let message = Printf.sprintf "\ - OCaml's lib directory layout changed in 5.0. The %s subdirectory has been \ - automatically added to the search path, but you should add -I +%s to the \ - command-line to silence this alert (e.g. by adding %s to the list of \ - libraries in your dune file, or adding use_%s to your _tags file for \ - ocamlbuild, or using -package %s for ocamlfind)." lib lib lib lib lib in + let message = Format.asprintf "\ + OCaml's lib directory layout changed in 5.0. The %a subdirectory has been \ + automatically added to the search path, but you should add %a to the \ + command-line to silence this alert (e.g. by adding %a to the list of \ + libraries in your dune file, or adding %a to your %a file for \ + ocamlbuild, or using %a for ocamlfind)." + Style.inline_code lib + Style.inline_code ("-I +" ^lib) + Style.inline_code lib + Style.inline_code ("use_"^lib) + Style.inline_code "_tags" + Style.inline_code ("-package " ^ lib) in let alert = {Warnings.kind="ocaml_deprecated_auto_include"; use=none; def=none; message = Format.asprintf "@[@\n%a@]" Format.pp_print_text message} @@ -953,11 +929,14 @@ let auto_include_alert lib = prerr_alert none alert let deprecated_script_alert program = - let message = Printf.sprintf "\ - Running %s where the first argument is an implicit basename with no \ - extension (e.g. %s script-file) is deprecated. Either rename the script \ - (%s script-file.ml) or qualify the basename (%s ./script-file)" - program program program program + let message = Format.asprintf "\ + Running %a where the first argument is an implicit basename with no \ + extension (e.g. %a) is deprecated. Either rename the script \ + (%a) or qualify the basename (%a)" + Style.inline_code program + Style.inline_code (program ^ " script-file") + Style.inline_code (program ^ " script-file.ml") + Style.inline_code (program ^ " ./script-file") in let alert = {Warnings.kind="ocaml_deprecated_cli"; use=none; def=none; diff --git a/src/ocaml/parsing/parsetree.mli b/src/ocaml/parsing/parsetree.mli index 7bb13135e7..2f0a40c26c 100644 --- a/src/ocaml/parsing/parsetree.mli +++ b/src/ocaml/parsing/parsetree.mli @@ -121,7 +121,7 @@ and core_type_desc = - [T #tconstr] when [l=[T]], - [(T1, ..., Tn) #tconstr] when [l=[T1 ; ... ; Tn]]. *) - | Ptyp_alias of core_type * string (** [T as 'a]. *) + | Ptyp_alias of core_type * string loc (** [T as 'a]. *) | Ptyp_variant of row_field list * closed_flag * label list option (** [Ptyp_variant([`A;`B], flag, labels)] represents: - [[ `A|`B ]] @@ -166,6 +166,7 @@ and core_type_desc = {!value_description}. *) | Ptyp_package of package_type (** [(module S)]. *) + | Ptyp_open of Longident.t loc * core_type (** [M.(T)] *) | Ptyp_extension of extension (** [[%id]]. *) and package_type = Longident.t loc * (Longident.t loc * core_type) list @@ -296,30 +297,21 @@ and expression_desc = - [let rec P1 = E1 and ... and Pn = EN in E] when [flag] is {{!Asttypes.rec_flag.Recursive}[Recursive]}. *) - | Pexp_function of case list (** [function P1 -> E1 | ... | Pn -> En] *) - | Pexp_fun of arg_label * expression option * pattern * expression - (** [Pexp_fun(lbl, exp0, P, E1)] represents: - - [fun P -> E1] - when [lbl] is {{!Asttypes.arg_label.Nolabel}[Nolabel]} - and [exp0] is [None] - - [fun ~l:P -> E1] - when [lbl] is {{!Asttypes.arg_label.Labelled}[Labelled l]} - and [exp0] is [None] - - [fun ?l:P -> E1] - when [lbl] is {{!Asttypes.arg_label.Optional}[Optional l]} - and [exp0] is [None] - - [fun ?l:(P = E0) -> E1] - when [lbl] is {{!Asttypes.arg_label.Optional}[Optional l]} - and [exp0] is [Some E0] - - Notes: - - If [E0] is provided, only - {{!Asttypes.arg_label.Optional}[Optional]} is allowed. - - [fun P1 P2 .. Pn -> E1] is represented as nested - {{!expression_desc.Pexp_fun}[Pexp_fun]}. - - [let f P = E] is represented using - {{!expression_desc.Pexp_fun}[Pexp_fun]}. - *) + | Pexp_function of + function_param list * type_constraint option * function_body + (** [Pexp_function ([P1; ...; Pn], C, body)] represents any construct + involving [fun] or [function], including: + - [fun P1 ... Pn -> E] + when [body = Pfunction_body E] + - [fun P1 ... Pn -> function p1 -> e1 | ... | pm -> em] + when [body = Pfunction_cases [ p1 -> e1; ...; pm -> em ]] + + [C] represents a type constraint or coercion placed immediately before the + arrow, e.g. [fun P1 ... Pn : ty -> ...] when [C = Some (Pconstraint ty)]. + + A function must have parameters. [Pexp_function (params, _, body)] must + have non-empty [params] or a [Pfunction_cases _] body. + *) | Pexp_apply of expression * (arg_label * expression) list (** [Pexp_apply(E0, [(l1, E1) ; ... ; (ln, En)])] represents [E0 ~l1:E1 ... ~ln:En] @@ -440,6 +432,66 @@ and binding_op = pbop_loc : Location.t; } +and function_param_desc = + | Pparam_val of arg_label * expression option * pattern + (** [Pparam_val (lbl, exp0, P)] represents the parameter: + - [P] + when [lbl] is {{!Asttypes.arg_label.Nolabel}[Nolabel]} + and [exp0] is [None] + - [~l:P] + when [lbl] is {{!Asttypes.arg_label.Labelled}[Labelled l]} + and [exp0] is [None] + - [?l:P] + when [lbl] is {{!Asttypes.arg_label.Optional}[Optional l]} + and [exp0] is [None] + - [?l:(P = E0)] + when [lbl] is {{!Asttypes.arg_label.Optional}[Optional l]} + and [exp0] is [Some E0] + + Note: If [E0] is provided, only + {{!Asttypes.arg_label.Optional}[Optional]} is allowed. + *) + | Pparam_newtype of string loc + (** [Pparam_newtype x] represents the parameter [(type x)]. + [x] carries the location of the identifier, whereas the [pparam_loc] + on the enclosing [function_param] node is the location of the [(type x)] + as a whole. + + Multiple parameters [(type a b c)] are represented as multiple + [Pparam_newtype] nodes, let's say: + + {[ [ { pparam_kind = Pparam_newtype a; pparam_loc = loc1 }; + { pparam_kind = Pparam_newtype b; pparam_loc = loc2 }; + { pparam_kind = Pparam_newtype c; pparam_loc = loc3 }; + ] + ]} + + Here, the first loc [loc1] is the location of [(type a b c)], and the + subsequent locs [loc2] and [loc3] are the same as [loc1], except marked as + ghost locations. The locations on [a], [b], [c], correspond to the + variables [a], [b], and [c] in the source code. + *) + +and function_param = + { pparam_loc : Location.t; + pparam_desc : function_param_desc; + } + +and function_body = + | Pfunction_body of expression + | Pfunction_cases of case list * Location.t * attributes + (** In [Pfunction_cases (_, loc, attrs)], the location extends from the + start of the [function] keyword to the end of the last case. The compiler + will only use typechecking-related attributes from [attrs], e.g. enabling + or disabling a warning. + *) +(** See the comment on {{!expression_desc.Pexp_function}[Pexp_function]}. *) + +and type_constraint = + | Pconstraint of core_type + | Pcoerce of core_type option * core_type +(** See the comment on {{!expression_desc.Pexp_function}[Pexp_function]}. *) + (** {2 Value descriptions} *) and value_description = diff --git a/src/ocaml/parsing/pprintast.ml b/src/ocaml/parsing/pprintast.ml index ce6fc4f5b3..f8c866d1de 100644 --- a/src/ocaml/parsing/pprintast.ml +++ b/src/ocaml/parsing/pprintast.ml @@ -94,16 +94,19 @@ let needs_parens txt = let needs_spaces txt = first_is '*' txt || last_is '*' txt -let string_loc ppf x = fprintf ppf "%s" x.txt - -(* add parentheses to binders when they are in fact infix or prefix operators *) -let protect_ident ppf txt = +(* Turn an arbitrary variable name into a valid OCaml identifier by adding \# + in case it is a keyword, or parenthesis when it is an infix or prefix + operator. *) +let ident_of_name ppf txt = let format : (_, _, _) format = - if not (needs_parens txt) then "%s" + if Lexer.is_keyword txt then "\\#%s" + else if not (needs_parens txt) then "%s" else if needs_spaces txt then "(@;%s@;)" else "(%s)" in fprintf ppf format txt +let ident_of_name_loc ppf s = ident_of_name ppf s.txt + let protect_longident ppf print_longident longprefix txt = let format : (_, _, _) format = if not (needs_parens txt) then "%a.%s" @@ -133,11 +136,15 @@ type construct = | `nil | `normal | `simple of Longident.t - | `tuple ] + | `tuple + | `btrue + | `bfalse ] let view_expr x = match x.pexp_desc with | Pexp_construct ( {txt= Lident "()"; _},_) -> `tuple + | Pexp_construct ( {txt= Lident "true"; _},_) -> `btrue + | Pexp_construct ( {txt= Lident "false"; _},_) -> `bfalse | Pexp_construct ( {txt= Lident "[]";_},_) -> `nil | Pexp_construct ( {txt= Lident"::";_},Some _) -> let rec loop exp acc = match exp with @@ -160,7 +167,7 @@ let view_expr x = | _ -> `normal let is_simple_construct :construct -> bool = function - | `nil | `tuple | `list _ | `simple _ -> true + | `nil | `tuple | `list _ | `simple _ | `btrue | `bfalse -> true | `cons _ | `normal -> false let pp = fprintf @@ -169,12 +176,14 @@ type ctxt = { pipe : bool; semi : bool; ifthenelse : bool; + functionrhs : bool; } -let reset_ctxt = { pipe=false; semi=false; ifthenelse=false } +let reset_ctxt = { pipe=false; semi=false; ifthenelse=false; functionrhs=false } let under_pipe ctxt = { ctxt with pipe=true } let under_semi ctxt = { ctxt with semi=true } let under_ifthenelse ctxt = { ctxt with ifthenelse=true } +let under_functionrhs ctxt = { ctxt with functionrhs = true } (* let reset_semi ctxt = { ctxt with semi=false } let reset_ifthenelse ctxt = { ctxt with ifthenelse=false } @@ -216,7 +225,7 @@ let paren: 'a . ?first:space_formatter -> ?last:space_formatter -> else fu f x let rec longident f = function - | Lident s -> protect_ident f s + | Lident s -> ident_of_name f s | Ldot(y,s) -> protect_longident f longident y s | Lapply (y,s) -> pp f "%a(%a)" longident y longident s @@ -267,16 +276,23 @@ let iter_loc f ctxt {txt; loc = _} = f ctxt txt let constant_string f s = pp f "%S" s -let tyvar ppf s = +let tyvar_of_name s = if String.length s >= 2 && s.[1] = '\'' then (* without the space, this would be parsed as a character literal *) - Format.fprintf ppf "' %s" s + "' " ^ s + else if Lexer.is_keyword s then + "'\\#" ^ s + else if String.equal s "_" then + s else - Format.fprintf ppf "'%s" s + "'" ^ s + +let tyvar ppf s = + Format.fprintf ppf "%s" (tyvar_of_name s) let tyvar_loc f str = tyvar f str.txt -let string_quot f x = pp f "`%s" x +let string_quot f x = pp f "`%a" ident_of_name x (* c ['a,'b] *) let rec class_params_def ctxt f = function @@ -288,8 +304,8 @@ let rec class_params_def ctxt f = function and type_with_label ctxt f (label, c) = match label with | Nolabel -> core_type1 ctxt f c (* otherwise parenthesize *) - | Labelled s -> pp f "%s:%a" s (core_type1 ctxt) c - | Optional s -> pp f "?%s:%a" s (core_type1 ctxt) c + | Labelled s -> pp f "%a:%a" ident_of_name s (core_type1 ctxt) c + | Optional s -> pp f "?%a:%a" ident_of_name s (core_type1 ctxt) c and core_type ctxt f x = if x.ptyp_attributes <> [] then begin @@ -301,7 +317,7 @@ and core_type ctxt f x = pp f "@[<2>%a@;->@;%a@]" (* FIXME remove parens later *) (type_with_label ctxt) (l,ct1) (core_type ctxt) ct2 | Ptyp_alias (ct, s) -> - pp f "@[<2>%a@;as@;%a@]" (core_type1 ctxt) ct tyvar s + pp f "@[<2>%a@;as@;%a@]" (core_type1 ctxt) ct tyvar s.txt | Ptyp_poly ([], ct) -> core_type ctxt f ct | Ptyp_poly (sl, ct) -> @@ -362,7 +378,7 @@ and core_type1 ctxt f x = let core_field_type f x = match x.pof_desc with | Otag (l, ct) -> (* Cf #7200 *) - pp f "@[%s: %a@ %a@ @]" l.txt + pp f "@[%a: %a@ %a@ @]" ident_of_name l.txt (core_type ctxt) ct (attributes ctxt) x.pof_attributes | Oinherit ct -> pp f "@[%a@ @]" (core_type ctxt) ct @@ -401,7 +417,7 @@ and pattern ctxt f x = end else match x.ppat_desc with | Ppat_alias (p, s) -> - pp f "@[<2>%a@;as@;%a@]" (pattern ctxt) p protect_ident s.txt + pp f "@[<2>%a@;as@;%a@]" (pattern ctxt) p ident_of_name s.txt | _ -> pattern_or ctxt f x and pattern_or ctxt f x = @@ -431,8 +447,8 @@ and pattern1 ctxt (f:Format.formatter) (x:pattern) : unit = if x.ppat_attributes <> [] then pattern ctxt f x else match x.ppat_desc with | Ppat_variant (l, Some p) -> - pp f "@[<2>`%s@;%a@]" l (simple_pattern ctxt) p - | Ppat_construct (({txt=Lident("()"|"[]");_}), _) -> + pp f "@[<2>`%a@;%a@]" ident_of_name l (simple_pattern ctxt) p + | Ppat_construct (({txt=Lident("()"|"[]"|"true"|"false");_}), _) -> simple_pattern ctxt f x | Ppat_construct (({txt;_} as li), po) -> (* FIXME The third field always false *) @@ -444,7 +460,7 @@ and pattern1 ctxt (f:Format.formatter) (x:pattern) : unit = pp f "%a@;%a" longident_loc li (simple_pattern ctxt) x | Some (vl, x) -> pp f "%a@ (type %a)@;%a" longident_loc li - (list ~sep:"@ " string_loc) vl + (list ~sep:"@ " ident_of_name_loc) vl (simple_pattern ctxt) x | None -> pp f "%a" longident_loc li) | _ -> simple_pattern ctxt f x @@ -452,10 +468,10 @@ and pattern1 ctxt (f:Format.formatter) (x:pattern) : unit = and simple_pattern ctxt (f:Format.formatter) (x:pattern) : unit = if x.ppat_attributes <> [] then pattern ctxt f x else match x.ppat_desc with - | Ppat_construct (({txt=Lident ("()"|"[]" as x);_}), None) -> + | Ppat_construct (({txt=Lident ("()"|"[]"|"true"|"false" as x);_}), None) -> pp f "%s" x | Ppat_any -> pp f "_"; - | Ppat_var ({txt = txt;_}) -> protect_ident f txt + | Ppat_var ({txt = txt;_}) -> ident_of_name f txt | Ppat_array l -> pp f "@[<2>[|%a|]@]" (list (pattern1 ctxt) ~sep:";") l | Ppat_unpack { txt = None } -> @@ -485,7 +501,7 @@ and simple_pattern ctxt (f:Format.formatter) (x:pattern) : unit = pp f "@[<1>(%a)@]" (list ~sep:",@;" (pattern1 ctxt)) l (* level1*) | Ppat_constant (c) -> pp f "%a" constant c | Ppat_interval (c1, c2) -> pp f "%a..%a" constant c1 constant c2 - | Ppat_variant (l,None) -> pp f "`%s" l + | Ppat_variant (l,None) -> pp f "`%a" ident_of_name l | Ppat_constraint (p, ct) -> pp f "@[<2>(%a@;:@;%a)@]" (pattern1 ctxt) p (core_type ctxt) ct | Ppat_lazy p -> @@ -497,7 +513,8 @@ and simple_pattern ctxt (f:Format.formatter) (x:pattern) : unit = let with_paren = match p.ppat_desc with | Ppat_array _ | Ppat_record _ - | Ppat_construct (({txt=Lident ("()"|"[]");_}), None) -> false + | Ppat_construct (({txt=Lident ("()"|"[]"|"true"|"false");_}), None) -> + false | _ -> true in pp f "@[<2>%a.%a @]" longident_loc lid (paren with_paren @@ pattern1 ctxt) p @@ -513,20 +530,21 @@ and label_exp ctxt f (l,opt,p) = | {ppat_desc = Ppat_var {txt;_}; ppat_attributes = []} when txt = rest -> (match opt with - | Some o -> pp f "?(%s=@;%a)@;" rest (expression ctxt) o - | None -> pp f "?%s@ " rest) + | Some o -> + pp f "?(%a=@;%a)@;" ident_of_name rest (expression ctxt) o + | None -> pp f "?%a@ " ident_of_name rest) | _ -> (match opt with | Some o -> - pp f "?%s:(%a=@;%a)@;" - rest (pattern1 ctxt) p (expression ctxt) o - | None -> pp f "?%s:%a@;" rest (simple_pattern ctxt) p) + pp f "?%a:(%a=@;%a)@;" + ident_of_name rest (pattern1 ctxt) p (expression ctxt) o + | None -> pp f "?%a:%a@;" ident_of_name rest (simple_pattern ctxt) p) end | Labelled l -> match p with | {ppat_desc = Ppat_var {txt;_}; ppat_attributes = []} when txt = l -> - pp f "~%s@;" l - | _ -> pp f "~%s:%a@;" l (simple_pattern ctxt) p + pp f "~%a@;" ident_of_name l + | _ -> pp f "~%a:%a@;" ident_of_name l (simple_pattern ctxt) p and sugar_expr ctxt f e = if e.pexp_attributes <> [] then false @@ -604,18 +622,41 @@ and sugar_expr ctxt f e = end | _ -> false -and uncurry params e = - match e.pexp_desc with - | Pexp_fun (l, e0, p, e) -> - uncurry ((l, e0, p) :: params) e - | _ -> List.rev params, e +and function_param ctxt f param = + match param.pparam_desc with + | Pparam_val (a, b, c) -> label_exp ctxt f (a, b, c) + | Pparam_newtype ty -> pp f "(type %s)@;" ty.txt + +and function_body ctxt f function_body = + match function_body with + | Pfunction_body body -> expression ctxt f body + | Pfunction_cases (cases, _, attrs) -> + pp f "@[function%a%a@]" + (item_attributes ctxt) attrs + (case_list ctxt) cases + +and type_constraint ctxt f constraint_ = + match constraint_ with + | Pconstraint ty -> + pp f ":@;%a" (core_type ctxt) ty + | Pcoerce (ty1, ty2) -> + pp f "%a:>@;%a" + (option ~first:":@;" (core_type ctxt)) ty1 + (core_type ctxt) ty2 + +and function_params_then_body ctxt f params constraint_ body ~delimiter = + pp f "%a%a%s@;%a" + (list (function_param ctxt) ~sep:"") params + (option (type_constraint ctxt)) constraint_ + delimiter + (function_body (under_functionrhs ctxt)) body and expression ctxt f x = if x.pexp_attributes <> [] then pp f "((%a)@,%a)" (expression ctxt) {x with pexp_attributes=[]} (attributes ctxt) x.pexp_attributes else match x.pexp_desc with - | Pexp_function _ | Pexp_fun _ | Pexp_match _ | Pexp_try _ | Pexp_sequence _ + | Pexp_function _ | Pexp_match _ | Pexp_try _ | Pexp_sequence _ | Pexp_newtype _ when ctxt.pipe || ctxt.semi -> paren true (expression reset_ctxt) f x @@ -625,16 +666,34 @@ and expression ctxt f x = | Pexp_letexception _ | Pexp_letop _ when ctxt.semi -> paren true (expression reset_ctxt) f x - | Pexp_fun (l, e0, p, e) -> - let params, body = uncurry [l, e0, p] e in - pp f "@[<2>fun@;%a->@;%a@]" - (pp_print_list (label_exp ctxt)) params - (expression ctxt) body | Pexp_newtype (lid, e) -> - pp f "@[<2>fun@;(type@;%s)@;->@;%a@]" lid.txt + pp f "@[<2>fun@;(type@;%a)@;->@;%a@]" ident_of_name lid.txt (expression ctxt) e - | Pexp_function l -> - pp f "@[function%a@]" (case_list ctxt) l + | Pexp_function (params, c, body) -> + begin match params, c with + (* Omit [fun] if there are no params. *) + | [], None -> + (* If function cases are a direct body of a function, + the function node should be wrapped in parens so + it doesn't become part of the enclosing function. *) + let should_paren = + match body with + | Pfunction_cases _ -> ctxt.functionrhs + | Pfunction_body _ -> false + in + let ctxt' = if should_paren then reset_ctxt else ctxt in + pp f "@[<2>%a@]" (paren should_paren (function_body ctxt')) body + | [], Some c -> + pp f "@[<2>(%a@;%a)@]" + (function_body ctxt) body + (type_constraint ctxt) c + | _ :: _, _ -> + pp f "@[<2>fun@;%a@]" + (fun f () -> + function_params_then_body ctxt f params c body ~delimiter:"->") + (); + + end | Pexp_match (e, l) -> pp f "@[@[@[<2>match %a@]@ with@]%a@]" (expression reset_ctxt) e (case_list ctxt) l @@ -722,10 +781,10 @@ and expression ctxt f x = | Pexp_new (li) -> pp f "@[new@ %a@]" longident_loc li; | Pexp_setinstvar (s, e) -> - pp f "@[%s@ <-@ %a@]" s.txt (expression ctxt) e + pp f "@[%a@ <-@ %a@]" ident_of_name s.txt (expression ctxt) e | Pexp_override l -> (* FIXME *) let string_x_expression f (s, e) = - pp f "@[%s@ =@ %a@]" s.txt (expression ctxt) e in + pp f "@[%a@ =@ %a@]" ident_of_name s.txt (expression ctxt) e in pp f "@[{<%a>}@]" (list string_x_expression ~sep:";" ) l; | Pexp_letmodule (s, me, e) -> @@ -752,7 +811,7 @@ and expression ctxt f x = (override o.popen_override) (module_expr ctxt) o.popen_expr (expression ctxt) e | Pexp_variant (l,Some eo) -> - pp f "@[<2>`%s@;%a@]" l (simple_expr ctxt) eo + pp f "@[<2>`%a@;%a@]" ident_of_name l (simple_expr ctxt) eo | Pexp_letop {let_; ands; body} -> pp f "@[<2>@[%a@,%a@] in@;<1 -2>%a@]" (binding_op ctxt) let_ @@ -776,7 +835,8 @@ and expression2 ctxt f x = else match x.pexp_desc with | Pexp_field (e, li) -> pp f "@[%a.%a@]" (simple_expr ctxt) e longident_loc li - | Pexp_send (e, s) -> pp f "@[%a#%s@]" (simple_expr ctxt) e s.txt + | Pexp_send (e, s) -> + pp f "@[%a#%a@]" (simple_expr ctxt) e ident_of_name s.txt | _ -> simple_expr ctxt f x @@ -787,6 +847,8 @@ and simple_expr ctxt f x = (match view_expr x with | `nil -> pp f "[]" | `tuple -> pp f "()" + | `btrue -> pp f "true" + | `bfalse -> pp f "false" | `list xs -> pp f "@[[%a]@]" (list (expression (under_semi ctxt)) ~sep:";@;") xs @@ -808,7 +870,7 @@ and simple_expr ctxt f x = pp f "(%a%a :> %a)" (expression ctxt) e (option (core_type ctxt) ~first:" : " ~last:" ") cto1 (* no sep hint*) (core_type ctxt) ct - | Pexp_variant (l, None) -> pp f "`%s" l + | Pexp_variant (l, None) -> pp f "`%a" ident_of_name l | Pexp_record (l, eo) -> let longident_x_expression f ( li, e) = match e with @@ -878,12 +940,14 @@ and class_type_field ctxt f x = pp f "@[<2>inherit@ %a@]%a" (class_type ctxt) ct (item_attributes ctxt) x.pctf_attributes | Pctf_val (s, mf, vf, ct) -> - pp f "@[<2>val @ %a%a%s@ :@ %a@]%a" - mutable_flag mf virtual_flag vf s.txt (core_type ctxt) ct + pp f "@[<2>val @ %a%a%a@ :@ %a@]%a" + mutable_flag mf virtual_flag vf + ident_of_name s.txt (core_type ctxt) ct (item_attributes ctxt) x.pctf_attributes | Pctf_method (s, pf, vf, ct) -> - pp f "@[<2>method %a %a%s :@;%a@]%a" - private_flag pf virtual_flag vf s.txt (core_type ctxt) ct + pp f "@[<2>method %a %a%a :@;%a@]%a" + private_flag pf virtual_flag vf + ident_of_name s.txt (core_type ctxt) ct (item_attributes ctxt) x.pctf_attributes | Pctf_constraint (ct1, ct2) -> pp f "@[<2>constraint@ %a@ =@ %a@]%a" @@ -930,9 +994,10 @@ and class_type ctxt f x = and class_type_declaration_list ctxt f l = let class_type_declaration kwd f x = let { pci_params=ls; pci_name={ txt; _ }; _ } = x in - pp f "@[<2>%s %a%a%s@ =@ %a@]%a" kwd + pp f "@[<2>%s %a%a%a@ =@ %a@]%a" kwd virtual_flag x.pci_virt - (class_params_def ctxt) ls txt + (class_params_def ctxt) ls + ident_of_name txt (class_type ctxt) x.pci_expr (item_attributes ctxt) x.pci_attributes in @@ -951,21 +1016,24 @@ and class_field ctxt f x = (class_expr ctxt) ce (fun f so -> match so with | None -> (); - | Some (s) -> pp f "@ as %s" s.txt ) so + | Some (s) -> pp f "@ as %a" ident_of_name s.txt ) so (item_attributes ctxt) x.pcf_attributes | Pcf_val (s, mf, Cfk_concrete (ovf, e)) -> - pp f "@[<2>val%s %a%s =@;%a@]%a" (override ovf) - mutable_flag mf s.txt + pp f "@[<2>val%s %a%a =@;%a@]%a" (override ovf) + mutable_flag mf + ident_of_name s.txt (expression ctxt) e (item_attributes ctxt) x.pcf_attributes | Pcf_method (s, pf, Cfk_virtual ct) -> - pp f "@[<2>method virtual %a %s :@;%a@]%a" - private_flag pf s.txt + pp f "@[<2>method virtual %a %a :@;%a@]%a" + private_flag pf + ident_of_name s.txt (core_type ctxt) ct (item_attributes ctxt) x.pcf_attributes | Pcf_val (s, mf, Cfk_virtual ct) -> - pp f "@[<2>val virtual %a%s :@ %a@]%a" - mutable_flag mf s.txt + pp f "@[<2>val virtual %a%a :@ %a@]%a" + mutable_flag mf + ident_of_name s.txt (core_type ctxt) ct (item_attributes ctxt) x.pcf_attributes | Pcf_method (s, pf, Cfk_concrete (ovf, e)) -> @@ -987,8 +1055,8 @@ and class_field ctxt f x = private_flag pf (fun f -> function | {pexp_desc=Pexp_poly (e, Some ct); pexp_attributes=[]; _} -> - pp f "%s :@;%a=@;%a" - s.txt (core_type ctxt) ct (expression ctxt) e + pp f "%a :@;%a=@;%a" + ident_of_name s.txt (core_type ctxt) ct (expression ctxt) e | {pexp_desc=Pexp_poly (e, None); pexp_attributes=[]; _} -> bind e | _ -> bind e) e @@ -1123,7 +1191,7 @@ and signature_item ctxt f x : unit = | Psig_value vd -> let intro = if vd.pval_prim = [] then "val" else "external" in pp f "@[<2>%s@ %a@ :@ %a@]%a" intro - protect_ident vd.pval_name.txt + ident_of_name vd.pval_name.txt (value_description ctxt) vd (item_attributes ctxt) vd.pval_attributes | Psig_typext te -> @@ -1132,9 +1200,10 @@ and signature_item ctxt f x : unit = exception_declaration ctxt f ed | Psig_class l -> let class_description kwd f ({pci_params=ls;pci_name={txt;_};_} as x) = - pp f "@[<2>%s %a%a%s@;:@;%a@]%a" kwd + pp f "@[<2>%s %a%a%a@;:@;%a@]%a" kwd virtual_flag x.pci_virt - (class_params_def ctxt) ls txt + (class_params_def ctxt) ls + ident_of_name txt (class_type ctxt) x.pci_expr (item_attributes ctxt) x.pci_attributes in begin @@ -1263,14 +1332,10 @@ and binding ctxt f {pvb_pat=p; pvb_expr=x; pvb_constraint = ct; _} = let rec pp_print_pexp_function f x = if x.pexp_attributes <> [] then pp f "=@;%a" (expression ctxt) x else match x.pexp_desc with - | Pexp_fun (label, eo, p, e) -> - if label=Nolabel then - pp f "%a@ %a" (simple_pattern ctxt) p pp_print_pexp_function e - else - pp f "%a@ %a" - (label_exp ctxt) (label,eo,p) pp_print_pexp_function e + | Pexp_function (params, c, body) -> + function_params_then_body ctxt f params c body ~delimiter:"=" | Pexp_newtype (str,e) -> - pp f "(type@ %s)@ %a" str.txt pp_print_pexp_function e + pp f "(type@ %a)@ %a" ident_of_name str.txt pp_print_pexp_function e | _ -> pp f "=@;%a" (expression ctxt) x in match ct with @@ -1399,9 +1464,10 @@ and structure_item ctxt f x = let class_declaration kwd f ({pci_params=ls; pci_name={txt;_}; _} as x) = let args, constr, cl = extract_class_args x.pci_expr in - pp f "@[<2>%s %a%a%s %a%a=@;%a@]%a" kwd + pp f "@[<2>%s %a%a%a %a%a=@;%a@]%a" kwd virtual_flag x.pci_virt - (class_params_def ctxt) ls txt + (class_params_def ctxt) ls + ident_of_name txt (list (label_exp ctxt)) args (option class_constraint) constr (class_expr ctxt) cl @@ -1418,7 +1484,7 @@ and structure_item ctxt f x = | Pstr_class_type l -> class_type_declaration_list ctxt f l | Pstr_primitive vd -> pp f "@[external@ %a@ :@ %a@]%a" - protect_ident vd.pval_name.txt + ident_of_name vd.pval_name.txt (value_description ctxt) vd (item_attributes ctxt) vd.pval_attributes | Pstr_include incl -> @@ -1475,10 +1541,11 @@ and type_def_list ctxt f (rf, exported, l) = else if exported then " =" else " :=" in - pp f "@[<2>%s %a%a%s%s%a@]%a" kwd + pp f "@[<2>%s %a%a%a%s%a@]%a" kwd nonrec_flag rf (type_params ctxt) x.ptype_params - x.ptype_name.txt eq + ident_of_name x.ptype_name.txt + eq (type_declaration ctxt) x (item_attributes ctxt) x.ptype_attributes in @@ -1491,9 +1558,9 @@ and type_def_list ctxt f (rf, exported, l) = and record_declaration ctxt f lbls = let type_record_field f pld = - pp f "@[<2>%a%s:@;%a@;%a@]" + pp f "@[<2>%a%a:@;%a@;%a@]" mutable_flag pld.pld_mutable - pld.pld_name.txt + ident_of_name pld.pld_name.txt (core_type ctxt) pld.pld_type (attributes ctxt) pld.pld_attributes in @@ -1625,14 +1692,14 @@ and label_x_expression_param ctxt f (l,e) = | Nolabel -> expression2 ctxt f e (* level 2*) | Optional str -> if Some str = simple_name then - pp f "?%s" str + pp f "?%a" ident_of_name str else - pp f "?%s:%a" str (simple_expr ctxt) e + pp f "?%a:%a" ident_of_name str (simple_expr ctxt) e | Labelled lbl -> if Some lbl = simple_name then - pp f "~%s" lbl + pp f "~%a" ident_of_name lbl else - pp f "~%s:%a" lbl (simple_expr ctxt) e + pp f "~%a:%a" ident_of_name lbl (simple_expr ctxt) e and directive_argument f x = match x.pdira_desc with @@ -1690,47 +1757,68 @@ let binding = binding reset_ctxt let payload = payload reset_ctxt let case_list = case_list reset_ctxt +module Style = Misc.Style +(* merlin: moved from parse.ml *) let prepare_error err = - let source = Location.Parser in let open Syntaxerr in match err with | Unclosed(opening_loc, opening, closing_loc, closing) -> Location.errorf - ~source ~loc:closing_loc ~sub:[ Location.msg ~loc:opening_loc - "This '%s' might be unmatched" opening + "This %a might be unmatched" Style.inline_code opening ] - "Syntax error: '%s' expected" closing + "Syntax error: %a expected" Style.inline_code closing | Expecting (loc, nonterm) -> - Location.errorf ~source ~loc "Syntax error: %s expected." nonterm + Location.errorf ~loc "Syntax error: %a expected." + Style.inline_code nonterm | Not_expecting (loc, nonterm) -> - Location.errorf ~source ~loc "Syntax error: %s not expected." nonterm + Location.errorf ~loc "Syntax error: %a not expected." + Style.inline_code nonterm | Applicative_path loc -> - Location.errorf ~source ~loc - "Syntax error: applicative paths of the form F(X).t \ - are not supported when the option -no-app-func is set." + Location.errorf ~loc + "Syntax error: applicative paths of the form %a \ + are not supported when the option %a is set." + Style.inline_code "F(X).t" + Style.inline_code "-no-app-func" | Variable_in_scope (loc, var) -> - Location.errorf ~source ~loc + Location.errorf ~loc "In this scoped type, variable %a \ - is reserved for the local type %s." - tyvar var var + is reserved for the local type %a." + (Style.as_inline_code tyvar) var + Style.inline_code var | Other loc -> - Location.errorf ~source ~loc "Syntax error" + Location.errorf ~loc "Syntax error" | Ill_formed_ast (loc, s) -> Location.errorf ~loc "broken invariant in parsetree: %s" s - | Invalid_package_type (loc, s) -> - Location.errorf ~source ~loc "invalid package type: %s" s + | Invalid_package_type (loc, ipt) -> + let invalid ppf ipt = match ipt with + | Syntaxerr.Parameterized_types -> + Format.fprintf ppf "parametrized types are not supported" + | Constrained_types -> + Format.fprintf ppf "constrained types are not supported" + | Private_types -> + Format.fprintf ppf "private types are not supported" + | Not_with_type -> + Format.fprintf ppf "only %a constraints are supported" + Style.inline_code "with type t =" + | Neither_identifier_nor_with_type -> + Format.fprintf ppf + "only module type identifier and %a constraints are supported" + Style.inline_code "with type" + in + Location.errorf ~loc "invalid package type: %a" invalid ipt | Removed_string_set loc -> Location.errorf ~loc "Syntax error: strings are immutable, there is no assignment \ - syntax for them.\n\ - Hint: Mutable sequences of bytes are available in the Bytes module.\n\ - Hint: Did you mean to use 'Bytes.set'?" - + syntax for them.\n\ + @{Hint@}: Mutable sequences of bytes are available in \ + the Bytes module.\n\ + @{Hint@}: Did you mean to use %a?" + Style.inline_code "Bytes.set" let () = Location.register_error_of_exn (function diff --git a/src/ocaml/parsing/pprintast.mli b/src/ocaml/parsing/pprintast.mli index 4ceb5bbbb9..a477ae89c0 100644 --- a/src/ocaml/parsing/pprintast.mli +++ b/src/ocaml/parsing/pprintast.mli @@ -50,10 +50,16 @@ val signature_item: Format.formatter -> Parsetree.signature_item -> unit val binding: Format.formatter -> Parsetree.value_binding -> unit val payload: Format.formatter -> Parsetree.payload -> unit +val tyvar_of_name : string -> string + (** Turn a type variable name into a valid identifier, taking care of the + special treatment required for the single quote character in second + position, or for keywords by escaping them with \#. No-op on "_". *) + val tyvar: Format.formatter -> string -> unit - (** Print a type variable name, taking care of the special treatment - required for the single quote character in second position. *) + (** Print a type variable name as a valid identifier, taking care of the + special treatment required for the single quote character in second + position, or for keywords by escaping them with \#. No-op on "_". *) (* merlin *) val case_list : Format.formatter -> Parsetree.case list -> unit -val protect_ident : Format.formatter -> string -> unit +val ident_of_name : Format.formatter -> string -> unit diff --git a/src/ocaml/parsing/printast.ml b/src/ocaml/parsing/printast.ml index 4b5612ede7..d7d569214e 100644 --- a/src/ocaml/parsing/printast.ml +++ b/src/ocaml/parsing/printast.ml @@ -175,7 +175,7 @@ let rec core_type i ppf x = line i ppf "Ptyp_class %a\n" fmt_longident_loc li; list i core_type ppf l | Ptyp_alias (ct, s) -> - line i ppf "Ptyp_alias \"%s\"\n" s; + line i ppf "Ptyp_alias \"%s\"\n" s.txt; core_type i ppf ct; | Ptyp_poly (sl, ct) -> line i ppf "Ptyp_poly%a\n" typevars sl; @@ -183,6 +183,9 @@ let rec core_type i ppf x = | Ptyp_package (s, l) -> line i ppf "Ptyp_package %a\n" fmt_longident_loc s; list i package_with ppf l; + | Ptyp_open (mod_ident, t) -> + line i ppf "Ptyp_open \"%a\"\n" fmt_longident_loc mod_ident; + core_type i ppf t | Ptyp_extension (s, arg) -> line i ppf "Ptyp_extension \"%s\"\n" s.txt; payload i ppf arg @@ -260,15 +263,11 @@ and expression i ppf x = line i ppf "Pexp_let %a\n" fmt_rec_flag rf; list i value_binding ppf l; expression i ppf e; - | Pexp_function l -> + | Pexp_function (params, c, body) -> line i ppf "Pexp_function\n"; - list i case ppf l; - | Pexp_fun (l, eo, p, e) -> - line i ppf "Pexp_fun\n"; - arg_label i ppf l; - option i expression ppf eo; - pattern i ppf p; - expression i ppf e; + list i function_param ppf params; + option i type_constraint ppf c; + function_body i ppf body | Pexp_apply (e, l) -> line i ppf "Pexp_apply\n"; expression i ppf e; @@ -386,6 +385,36 @@ and expression i ppf x = | Pexp_unreachable -> line i ppf "Pexp_unreachable" +and function_param i ppf { pparam_desc = desc; pparam_loc = loc } = + match desc with + | Pparam_val (l, eo, p) -> + line i ppf "Pparam_val %a\n" fmt_location loc; + arg_label (i+1) ppf l; + option (i+1) expression ppf eo; + pattern (i+1) ppf p + | Pparam_newtype ty -> + line i ppf "Pparam_newtype \"%s\" %a\n" ty.txt fmt_location loc + +and function_body i ppf body = + match body with + | Pfunction_body e -> + line i ppf "Pfunction_body\n"; + expression (i+1) ppf e + | Pfunction_cases (cases, loc, attrs) -> + line i ppf "Pfunction_cases %a\n" fmt_location loc; + attributes (i+1) ppf attrs; + list (i+1) case ppf cases + +and type_constraint i ppf constraint_ = + match constraint_ with + | Pconstraint ty -> + line i ppf "Pconstraint\n"; + core_type (i+1) ppf ty + | Pcoerce (ty1, ty2) -> + line i ppf "Pcoerce\n"; + option (i+1) core_type ppf ty1; + core_type (i+1) ppf ty2 + and value_description i ppf x = line i ppf "value_description %a %a\n" fmt_string_loc x.pval_name fmt_location x.pval_loc; diff --git a/src/ocaml/parsing/syntaxerr.ml b/src/ocaml/parsing/syntaxerr.ml index df7b8a0548..8a326c1104 100644 --- a/src/ocaml/parsing/syntaxerr.ml +++ b/src/ocaml/parsing/syntaxerr.ml @@ -15,6 +15,13 @@ (* Auxiliary type for reporting syntax errors *) +type invalid_package_type = + | Parameterized_types + | Constrained_types + | Private_types + | Not_with_type + | Neither_identifier_nor_with_type + type error = Unclosed of Location.t * string * Location.t * string | Expecting of Location.t * string @@ -23,7 +30,7 @@ type error = | Variable_in_scope of Location.t * string | Other of Location.t | Ill_formed_ast of Location.t * string - | Invalid_package_type of Location.t * string + | Invalid_package_type of Location.t * invalid_package_type | Removed_string_set of Location.t exception Error of error diff --git a/src/ocaml/parsing/syntaxerr.mli b/src/ocaml/parsing/syntaxerr.mli index 577d5360cd..a84bc6664c 100644 --- a/src/ocaml/parsing/syntaxerr.mli +++ b/src/ocaml/parsing/syntaxerr.mli @@ -20,6 +20,13 @@ *) +type invalid_package_type = + | Parameterized_types + | Constrained_types + | Private_types + | Not_with_type + | Neither_identifier_nor_with_type + type error = Unclosed of Location.t * string * Location.t * string | Expecting of Location.t * string @@ -28,7 +35,7 @@ type error = | Variable_in_scope of Location.t * string | Other of Location.t | Ill_formed_ast of Location.t * string - | Invalid_package_type of Location.t * string + | Invalid_package_type of Location.t * invalid_package_type | Removed_string_set of Location.t exception Error of error diff --git a/src/ocaml/parsing/unit_info.ml b/src/ocaml/parsing/unit_info.ml new file mode 100644 index 0000000000..b2e081a221 --- /dev/null +++ b/src/ocaml/parsing/unit_info.ml @@ -0,0 +1,119 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Florian Angeletti, projet Cambium, Inria Paris *) +(* *) +(* Copyright 2023 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +type modname = string +type filename = string +type file_prefix = string + +type t = { + source_file: filename; + prefix: file_prefix; + modname: modname; +} + +let source_file (x: t) = x.source_file +let modname (x: t) = x.modname +let prefix (x: t) = x.prefix + +let basename_chop_extensions basename = + match String.index basename '.' with + | dot_pos -> String.sub basename 0 dot_pos + | exception Not_found -> basename + +let modulize s = String.capitalize_ascii s + +(* We re-export the [Misc] definition *) +let normalize = Misc.normalized_unit_filename + +let modname_from_source source_file = + source_file |> Filename.basename |> basename_chop_extensions |> modulize + +let start_char = function + | 'A' .. 'Z' -> true + | _ -> false + +let is_identchar_latin1 = function + | 'A'..'Z' | 'a'..'z' | '_' | '\192'..'\214' | '\216'..'\246' + | '\248'..'\255' | '\'' | '0'..'9' -> true + | _ -> false + +(* Check validity of module name *) +let is_unit_name name = + String.length name > 0 + && start_char name.[0] + && String.for_all is_identchar_latin1 name + +let check_unit_name file = + if not (is_unit_name (modname file)) then + Location.prerr_warning (Location.in_file (source_file file)) + (Warnings.Bad_module_name (modname file)) + +let make ?(check_modname=true) ~source_file prefix = + let modname = modname_from_source prefix in + let p = { modname; prefix; source_file } in + if check_modname then check_unit_name p; + p + +module Artifact = struct + type t = + { + source_file: filename option; + filename: filename; + modname: modname; + } + let source_file x = x.source_file + let filename x = x.filename + let modname x = x.modname + let prefix x = Filename.remove_extension (filename x) + + let from_filename filename = + let modname = modname_from_source filename in + { modname; filename; source_file = None } + +end + +let mk_artifact ext u = + { + Artifact.filename = u.prefix ^ ext; + modname = u.modname; + source_file = Some u.source_file; + } + +let companion_artifact ext x = + { x with Artifact.filename = Artifact.prefix x ^ ext } + +let cmi f = mk_artifact ".cmi" f +let cmo f = mk_artifact ".cmo" f +let cmx f = mk_artifact ".cmx" f +let obj f = mk_artifact Config.ext_obj f +let cmt f = mk_artifact ".cmt" f +let cmti f = mk_artifact ".cmti" f +let annot f = mk_artifact ".annot" f + +let companion_obj f = companion_artifact Config.ext_obj f +let companion_cmi f = companion_artifact ".cmi" f +let companion_cmt f = companion_artifact ".cmt" f + +let mli_from_artifact f = Artifact.prefix f ^ !Config.interface_suffix +let mli_from_source u = + let prefix = Filename.remove_extension (source_file u) in + prefix ^ !Config.interface_suffix + +let is_cmi f = Filename.check_suffix (Artifact.filename f) ".cmi" + +let find_normalized_cmi f = + let filename = modname f ^ ".cmi" in + let filename = Load_path.find_normalized filename in + { Artifact.filename; modname = modname f; source_file = Some f.source_file } diff --git a/src/ocaml/parsing/unit_info.mli b/src/ocaml/parsing/unit_info.mli new file mode 100644 index 0000000000..48acafc06d --- /dev/null +++ b/src/ocaml/parsing/unit_info.mli @@ -0,0 +1,153 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Florian Angeletti, projet Cambium, Inria Paris *) +(* *) +(* Copyright 2023 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** This module centralize the handling of compilation files and their metadata. + + Maybe more importantly, this module provides functions for deriving module + names from strings or filenames. +*) + +(** {1:modname_from_strings Module name convention and computation} *) + +type modname = string +type filename = string +type file_prefix = string + +(** [modulize s] capitalizes the first letter of [s]. *) +val modulize: string -> modname + +(** [normalize s] uncapitalizes the first letter of [s]. *) +val normalize: string -> string + +(** [modname_from_source filename] is [modulize stem] where [stem] is the + basename of the filename [filename] stripped from all its extensions. + For instance, [modname_from_source "/pa.th/x.ml.pp"] is ["X"]. *) +val modname_from_source: filename -> modname + +(** {2:module_name_validation Module name validation function}*) + +(** [is_unit_name ~strict name] is true only if [name] can be used as a + valid module name. *) +val is_unit_name : modname -> bool + + +(** {1:unit_info Metadata for compilation unit} *) + +type t +(** Metadata for a compilation unit: + - the module name associated to the unit + - the filename prefix (dirname + basename with all extensions stripped) + for compilation artifacts + - the input source file + For instance, when calling [ocamlopt dir/x.mli -o target/y.cmi], + - the input source file is [dir/x.mli] + - the module name is [Y] + - the prefix is [target/y] +*) + +(** [source_file u] is the source file of [u]. *) +val source_file: t -> filename + +(** [prefix u] is the filename prefix of the unit. *) +val prefix: t -> file_prefix + +(** [modname u] or [artifact_modname a] is the module name of the unit + or compilation artifact.*) +val modname: t -> modname + +(** [check_unit_name u] prints a warning if the derived module name [modname u] + should not be used as a module name as specified + by {!is_unit_name}[ ~strict:true]. *) +val check_unit_name : t -> unit + +(** [make ~check ~source_file prefix] associates both the + [source_file] and the module name {!modname_from_source}[ target_prefix] to + the prefix filesystem path [prefix]. + + If [check_modname=true], this function emits a warning if the derived module + name is not valid according to {!check_unit_name}. +*) +val make: ?check_modname:bool -> source_file:filename -> file_prefix -> t + +(** {1:artifact_function Build artifacts }*) +module Artifact: sig + type t +(** Metadata for a single compilation artifact: + - the module name associated to the artifact + - the filesystem path + - the input source file if it exists +*) + + (** [source_file a] is the source file of [a] if it exists. *) + val source_file: t -> filename option + + (** [prefix a] is the filename prefix of the compilation artifact. *) + val prefix: t -> file_prefix + + (** [filename u] is the filesystem path for a compilation artifact. *) + val filename: t -> filename + + (** [modname a] is the module name of the compilation artifact.*) + val modname: t -> modname + + (** [from_filename filename] reconstructs the module name + [modname_from_source filename] associated to the artifact [filename]. *) + val from_filename: filename -> t + +end + +(** {1:info_build_artifacts Derived build artifact metadata} *) + +(** Those functions derive a specific [artifact] metadata from an [unit] + metadata.*) +val cmi: t -> Artifact.t +val cmo: t -> Artifact.t +val cmx: t -> Artifact.t +val obj: t -> Artifact.t +val cmt: t -> Artifact.t +val cmti: t -> Artifact.t +val annot: t -> Artifact.t + +(** The functions below change the type of an artifact by updating the + extension of its filename. + Those functions purposefully do not cover all artifact kinds because we want + to track which artifacts are assumed to be bundled together. *) +val companion_cmi: Artifact.t -> Artifact.t +val companion_obj: Artifact.t -> Artifact.t +val companion_cmt: Artifact.t -> Artifact.t + + +(** {1:ml_mli_cmi_interaction Mli and cmi derived from implementation files } *) + +(** The compilation of module implementation changes in presence of mli and cmi + files, the function belows help to handle this. *) + +(** [mli_from_source u] is the interface source filename associated to the unit + [u]. The actual suffix depends on {!Config.interface_suffix}. +*) +val mli_from_source: t -> filename + +(** [mli_from_artifact t] is the name of the interface source file derived from + the artifact [t]. This variant is necessary when handling artifacts derived + from an unknown source files (e.g. packed modules). *) +val mli_from_artifact: Artifact.t -> filename + +(** Check if the artifact is a cmi *) +val is_cmi: Artifact.t -> bool + +(** [find_normalized_cmi u] finds in the load_path a file matching the module + name [modname u]. + @raise Not_found if no such cmi exists *) +val find_normalized_cmi: t -> Artifact.t diff --git a/src/ocaml/preprocess/parser_explain.ml b/src/ocaml/preprocess/parser_explain.ml index ef02f70969..2f5db44a21 100644 --- a/src/ocaml/preprocess/parser_explain.ml +++ b/src/ocaml/preprocess/parser_explain.ml @@ -21,6 +21,7 @@ let nullable (type a) : a MenhirInterpreter.nonterminal -> bool = | N_option_preceded_EQUAL_module_type__ -> true | N_option_preceded_EQUAL_expr__ -> true | N_option_preceded_COLON_core_type__ -> true + | N_option_preceded_COLON_atomic_type__ -> true | N_option_preceded_AS_mkrhs_LIDENT___ -> true | N_option_SEMI_ -> true | N_option_BAR_ -> true @@ -48,4 +49,5 @@ let nullable (type a) : a MenhirInterpreter.nonterminal -> bool = | N_ext -> true | N_class_self_type -> true | N_class_self_pattern -> true + | N_attr_payload -> true | _ -> false diff --git a/src/ocaml/preprocess/parser_printer.ml b/src/ocaml/preprocess/parser_printer.ml index e49be91525..2bfbe32000 100644 --- a/src/ocaml/preprocess/parser_printer.ml +++ b/src/ocaml/preprocess/parser_printer.ml @@ -207,6 +207,7 @@ let print_symbol = function | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_llist_name_tag_) -> "reversed_nonempty_llist_name_tag_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_llist_labeled_simple_expr_) -> "reversed_nonempty_llist_labeled_simple_expr_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_llist_functor_arg_) -> "reversed_nonempty_llist_functor_arg_" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_concat_fun_param_as_list_) -> "reversed_nonempty_concat_fun_param_as_list_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_reversed_llist_preceded_CONSTRAINT_constrain__) -> "reversed_llist_preceded_CONSTRAINT_constrain__" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_reversed_bar_llist_extension_constructor_declaration_) -> "reversed_bar_llist_extension_constructor_declaration_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_reversed_bar_llist_extension_constructor_) -> "reversed_bar_llist_extension_constructor_" @@ -245,6 +246,7 @@ let print_symbol = function | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_option_preceded_EQUAL_module_type__) -> "option_preceded_EQUAL_module_type__" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_option_preceded_EQUAL_expr__) -> "option_preceded_EQUAL_expr__" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_option_preceded_COLON_core_type__) -> "option_preceded_COLON_core_type__" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_option_preceded_COLON_atomic_type__) -> "option_preceded_COLON_atomic_type__" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_option_preceded_AS_mkrhs_LIDENT___) -> "option_preceded_AS_mkrhs_LIDENT___" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_option_SEMI_) -> "option_SEMI_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_option_BAR_) -> "option_BAR_" @@ -252,6 +254,7 @@ let print_symbol = function | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_operator) -> "operator" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_open_description) -> "open_description" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_open_declaration) -> "open_declaration" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_object_type) -> "object_type" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_nonempty_type_kind) -> "nonempty_type_kind" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_nonempty_list_raw_string_) -> "nonempty_list_raw_string_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_nonempty_list_mkrhs_LIDENT__) -> "nonempty_list_mkrhs_LIDENT__" @@ -273,7 +276,7 @@ let print_symbol = function | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_longident_UIDENT_) -> "mk_longident_mod_longident_UIDENT_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_longident_LIDENT_) -> "mk_longident_mod_longident_LIDENT_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident_ident_) -> "mk_longident_mod_ext_longident_ident_" - | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident___anonymous_41_) -> "mk_longident_mod_ext_longident___anonymous_41_" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident___anonymous_43_) -> "mk_longident_mod_ext_longident___anonymous_43_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident_UIDENT_) -> "mk_longident_mod_ext_longident_UIDENT_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident_LIDENT_) -> "mk_longident_mod_ext_longident_LIDENT_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_method_) -> "method_" @@ -324,16 +327,22 @@ let print_symbol = function | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_functor_args) -> "functor_args" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_functor_arg) -> "functor_arg" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_function_type) -> "function_type" - | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_fun_def) -> "fun_def" - | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_fun_binding) -> "fun_binding" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_fun_seq_expr) -> "fun_seq_expr" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_fun_params) -> "fun_params" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_fun_param_as_list) -> "fun_param_as_list" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_fun_expr) -> "fun_expr" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_fun_body) -> "fun_body" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_formal_class_parameters) -> "formal_class_parameters" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_floating_attribute) -> "floating_attribute" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_extension_type) -> "extension_type" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_extension_constructor_rebind_epsilon_) -> "extension_constructor_rebind_epsilon_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_extension_constructor_rebind_BAR_) -> "extension_constructor_rebind_BAR_" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_extension) -> "extension" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_ext) -> "ext" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_expr) -> "expr" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_direction_flag) -> "direction_flag" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_delimited_type_supporting_local_open) -> "delimited_type_supporting_local_open" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_delimited_type) -> "delimited_type" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_core_type) -> "core_type" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_constructor_declarations) -> "constructor_declarations" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_constructor_arguments) -> "constructor_arguments" @@ -356,6 +365,7 @@ let print_symbol = function | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_class_field) -> "class_field" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_class_expr) -> "class_expr" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_attribute) -> "attribute" + | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_attr_payload) -> "attr_payload" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_attr_id) -> "attr_id" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_atomic_type) -> "atomic_type" | MenhirInterpreter.X (MenhirInterpreter.N MenhirInterpreter.N_any_longident) -> "any_longident" @@ -553,6 +563,7 @@ let print_value (type a) : a MenhirInterpreter.symbol -> a -> string = function | MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_llist_name_tag_ -> (fun _ -> "reversed_nonempty_llist_name_tag_") | MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_llist_labeled_simple_expr_ -> (fun _ -> "reversed_nonempty_llist_labeled_simple_expr_") | MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_llist_functor_arg_ -> (fun _ -> "reversed_nonempty_llist_functor_arg_") + | MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_concat_fun_param_as_list_ -> (fun _ -> "reversed_nonempty_concat_fun_param_as_list_") | MenhirInterpreter.N MenhirInterpreter.N_reversed_llist_preceded_CONSTRAINT_constrain__ -> (fun _ -> "reversed_llist_preceded_CONSTRAINT_constrain__") | MenhirInterpreter.N MenhirInterpreter.N_reversed_bar_llist_extension_constructor_declaration_ -> (fun _ -> "reversed_bar_llist_extension_constructor_declaration_") | MenhirInterpreter.N MenhirInterpreter.N_reversed_bar_llist_extension_constructor_ -> (fun _ -> "reversed_bar_llist_extension_constructor_") @@ -591,6 +602,7 @@ let print_value (type a) : a MenhirInterpreter.symbol -> a -> string = function | MenhirInterpreter.N MenhirInterpreter.N_option_preceded_EQUAL_module_type__ -> (fun _ -> "option_preceded_EQUAL_module_type__") | MenhirInterpreter.N MenhirInterpreter.N_option_preceded_EQUAL_expr__ -> (fun _ -> "option_preceded_EQUAL_expr__") | MenhirInterpreter.N MenhirInterpreter.N_option_preceded_COLON_core_type__ -> (fun _ -> "option_preceded_COLON_core_type__") + | MenhirInterpreter.N MenhirInterpreter.N_option_preceded_COLON_atomic_type__ -> (fun _ -> "option_preceded_COLON_atomic_type__") | MenhirInterpreter.N MenhirInterpreter.N_option_preceded_AS_mkrhs_LIDENT___ -> (fun _ -> "option_preceded_AS_mkrhs_LIDENT___") | MenhirInterpreter.N MenhirInterpreter.N_option_SEMI_ -> (fun _ -> "option_SEMI_") | MenhirInterpreter.N MenhirInterpreter.N_option_BAR_ -> (fun _ -> "option_BAR_") @@ -598,6 +610,7 @@ let print_value (type a) : a MenhirInterpreter.symbol -> a -> string = function | MenhirInterpreter.N MenhirInterpreter.N_operator -> (fun _ -> "operator") | MenhirInterpreter.N MenhirInterpreter.N_open_description -> (fun _ -> "open_description") | MenhirInterpreter.N MenhirInterpreter.N_open_declaration -> (fun _ -> "open_declaration") + | MenhirInterpreter.N MenhirInterpreter.N_object_type -> (fun _ -> "object_type") | MenhirInterpreter.N MenhirInterpreter.N_nonempty_type_kind -> (fun _ -> "nonempty_type_kind") | MenhirInterpreter.N MenhirInterpreter.N_nonempty_list_raw_string_ -> (fun _ -> "nonempty_list_raw_string_") | MenhirInterpreter.N MenhirInterpreter.N_nonempty_list_mkrhs_LIDENT__ -> (fun _ -> "nonempty_list_mkrhs_LIDENT__") @@ -619,7 +632,7 @@ let print_value (type a) : a MenhirInterpreter.symbol -> a -> string = function | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_longident_UIDENT_ -> (fun _ -> "mk_longident_mod_longident_UIDENT_") | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_longident_LIDENT_ -> (fun _ -> "mk_longident_mod_longident_LIDENT_") | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident_ident_ -> (fun _ -> "mk_longident_mod_ext_longident_ident_") - | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident___anonymous_41_ -> (fun _ -> "mk_longident_mod_ext_longident___anonymous_41_") + | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident___anonymous_43_ -> (fun _ -> "mk_longident_mod_ext_longident___anonymous_43_") | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident_UIDENT_ -> (fun _ -> "mk_longident_mod_ext_longident_UIDENT_") | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident_LIDENT_ -> (fun _ -> "mk_longident_mod_ext_longident_LIDENT_") | MenhirInterpreter.N MenhirInterpreter.N_method_ -> (fun _ -> "method_") @@ -670,16 +683,22 @@ let print_value (type a) : a MenhirInterpreter.symbol -> a -> string = function | MenhirInterpreter.N MenhirInterpreter.N_functor_args -> (fun _ -> "functor_args") | MenhirInterpreter.N MenhirInterpreter.N_functor_arg -> (fun _ -> "functor_arg") | MenhirInterpreter.N MenhirInterpreter.N_function_type -> (fun _ -> "function_type") - | MenhirInterpreter.N MenhirInterpreter.N_fun_def -> (fun _ -> "fun_def") - | MenhirInterpreter.N MenhirInterpreter.N_fun_binding -> (fun _ -> "fun_binding") + | MenhirInterpreter.N MenhirInterpreter.N_fun_seq_expr -> (fun _ -> "fun_seq_expr") + | MenhirInterpreter.N MenhirInterpreter.N_fun_params -> (fun _ -> "fun_params") + | MenhirInterpreter.N MenhirInterpreter.N_fun_param_as_list -> (fun _ -> "fun_param_as_list") + | MenhirInterpreter.N MenhirInterpreter.N_fun_expr -> (fun _ -> "fun_expr") + | MenhirInterpreter.N MenhirInterpreter.N_fun_body -> (fun _ -> "fun_body") | MenhirInterpreter.N MenhirInterpreter.N_formal_class_parameters -> (fun _ -> "formal_class_parameters") | MenhirInterpreter.N MenhirInterpreter.N_floating_attribute -> (fun _ -> "floating_attribute") + | MenhirInterpreter.N MenhirInterpreter.N_extension_type -> (fun _ -> "extension_type") | MenhirInterpreter.N MenhirInterpreter.N_extension_constructor_rebind_epsilon_ -> (fun _ -> "extension_constructor_rebind_epsilon_") | MenhirInterpreter.N MenhirInterpreter.N_extension_constructor_rebind_BAR_ -> (fun _ -> "extension_constructor_rebind_BAR_") | MenhirInterpreter.N MenhirInterpreter.N_extension -> (fun _ -> "extension") | MenhirInterpreter.N MenhirInterpreter.N_ext -> (fun _ -> "ext") | MenhirInterpreter.N MenhirInterpreter.N_expr -> (fun _ -> "expr") | MenhirInterpreter.N MenhirInterpreter.N_direction_flag -> (fun _ -> "direction_flag") + | MenhirInterpreter.N MenhirInterpreter.N_delimited_type_supporting_local_open -> (fun _ -> "delimited_type_supporting_local_open") + | MenhirInterpreter.N MenhirInterpreter.N_delimited_type -> (fun _ -> "delimited_type") | MenhirInterpreter.N MenhirInterpreter.N_core_type -> (fun _ -> "core_type") | MenhirInterpreter.N MenhirInterpreter.N_constructor_declarations -> (fun _ -> "constructor_declarations") | MenhirInterpreter.N MenhirInterpreter.N_constructor_arguments -> (fun _ -> "constructor_arguments") @@ -702,6 +721,7 @@ let print_value (type a) : a MenhirInterpreter.symbol -> a -> string = function | MenhirInterpreter.N MenhirInterpreter.N_class_field -> (fun _ -> "class_field") | MenhirInterpreter.N MenhirInterpreter.N_class_expr -> (fun _ -> "class_expr") | MenhirInterpreter.N MenhirInterpreter.N_attribute -> (fun _ -> "attribute") + | MenhirInterpreter.N MenhirInterpreter.N_attr_payload -> (fun _ -> "attr_payload") | MenhirInterpreter.N MenhirInterpreter.N_attr_id -> (fun _ -> "attr_id") | MenhirInterpreter.N MenhirInterpreter.N_atomic_type -> (fun _ -> "atomic_type") | MenhirInterpreter.N MenhirInterpreter.N_any_longident -> (fun _ -> "any_longident") diff --git a/src/ocaml/preprocess/parser_raw.ml b/src/ocaml/preprocess/parser_raw.ml index 83dc615ee5..f1b2c3e667 100644 --- a/src/ocaml/preprocess/parser_raw.ml +++ b/src/ocaml/preprocess/parser_raw.ml @@ -17,7 +17,7 @@ module MenhirBasics = struct | VAL | UNDERSCORE | UIDENT of ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) # 23 "src/ocaml/preprocess/parser_raw.ml" ) @@ -30,7 +30,7 @@ module MenhirBasics = struct | THEN | STRUCT | STRING of ( -# 837 "src/ocaml/preprocess/parser_raw.mly" +# 903 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string option) # 36 "src/ocaml/preprocess/parser_raw.ml" ) @@ -43,12 +43,12 @@ module MenhirBasics = struct | RBRACKET | RBRACE | QUOTED_STRING_ITEM of ( -# 842 "src/ocaml/preprocess/parser_raw.mly" +# 908 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string * Location.t * string option) # 49 "src/ocaml/preprocess/parser_raw.ml" ) | QUOTED_STRING_EXPR of ( -# 839 "src/ocaml/preprocess/parser_raw.mly" +# 905 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string * Location.t * string option) # 54 "src/ocaml/preprocess/parser_raw.ml" ) @@ -56,7 +56,7 @@ module MenhirBasics = struct | QUESTION | PRIVATE | PREFIXOP of ( -# 823 "src/ocaml/preprocess/parser_raw.mly" +# 889 "src/ocaml/preprocess/parser_raw.mly" (string) # 62 "src/ocaml/preprocess/parser_raw.ml" ) @@ -66,7 +66,7 @@ module MenhirBasics = struct | PERCENT | OR | OPTLABEL of ( -# 816 "src/ocaml/preprocess/parser_raw.mly" +# 882 "src/ocaml/preprocess/parser_raw.mly" (string) # 72 "src/ocaml/preprocess/parser_raw.ml" ) @@ -85,13 +85,13 @@ module MenhirBasics = struct | MATCH | LPAREN | LIDENT of ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) # 91 "src/ocaml/preprocess/parser_raw.ml" ) | LET_LWT | LETOP of ( -# 781 "src/ocaml/preprocess/parser_raw.mly" +# 847 "src/ocaml/preprocess/parser_raw.mly" (string) # 97 "src/ocaml/preprocess/parser_raw.ml" ) @@ -111,39 +111,39 @@ module MenhirBasics = struct | LBRACE | LAZY | LABEL of ( -# 786 "src/ocaml/preprocess/parser_raw.mly" +# 852 "src/ocaml/preprocess/parser_raw.mly" (string) # 117 "src/ocaml/preprocess/parser_raw.ml" ) | INT of ( -# 785 "src/ocaml/preprocess/parser_raw.mly" +# 851 "src/ocaml/preprocess/parser_raw.mly" (string * char option) # 122 "src/ocaml/preprocess/parser_raw.ml" ) | INITIALIZER | INHERIT | INFIXOP4 of ( -# 779 "src/ocaml/preprocess/parser_raw.mly" +# 845 "src/ocaml/preprocess/parser_raw.mly" (string) # 129 "src/ocaml/preprocess/parser_raw.ml" ) | INFIXOP3 of ( -# 778 "src/ocaml/preprocess/parser_raw.mly" +# 844 "src/ocaml/preprocess/parser_raw.mly" (string) # 134 "src/ocaml/preprocess/parser_raw.ml" ) | INFIXOP2 of ( -# 777 "src/ocaml/preprocess/parser_raw.mly" +# 843 "src/ocaml/preprocess/parser_raw.mly" (string) # 139 "src/ocaml/preprocess/parser_raw.ml" ) | INFIXOP1 of ( -# 776 "src/ocaml/preprocess/parser_raw.mly" +# 842 "src/ocaml/preprocess/parser_raw.mly" (string) # 144 "src/ocaml/preprocess/parser_raw.ml" ) | INFIXOP0 of ( -# 775 "src/ocaml/preprocess/parser_raw.mly" +# 841 "src/ocaml/preprocess/parser_raw.mly" (string) # 149 "src/ocaml/preprocess/parser_raw.ml" ) @@ -151,7 +151,7 @@ module MenhirBasics = struct | IN | IF | HASHOP of ( -# 834 "src/ocaml/preprocess/parser_raw.mly" +# 900 "src/ocaml/preprocess/parser_raw.mly" (string) # 157 "src/ocaml/preprocess/parser_raw.ml" ) @@ -166,7 +166,7 @@ module MenhirBasics = struct | FOR_LWT | FOR | FLOAT of ( -# 764 "src/ocaml/preprocess/parser_raw.mly" +# 830 "src/ocaml/preprocess/parser_raw.mly" (string * char option) # 172 "src/ocaml/preprocess/parser_raw.ml" ) @@ -182,7 +182,7 @@ module MenhirBasics = struct | DOWNTO | DOTTILDE | DOTOP of ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) # 188 "src/ocaml/preprocess/parser_raw.ml" ) @@ -191,14 +191,14 @@ module MenhirBasics = struct | DOT | DONE | DOCSTRING of ( -# 859 "src/ocaml/preprocess/parser_raw.mly" +# 925 "src/ocaml/preprocess/parser_raw.mly" (Docstrings.docstring) # 197 "src/ocaml/preprocess/parser_raw.ml" ) | DO | CONSTRAINT | COMMENT of ( -# 858 "src/ocaml/preprocess/parser_raw.mly" +# 924 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t) # 204 "src/ocaml/preprocess/parser_raw.ml" ) @@ -209,7 +209,7 @@ module MenhirBasics = struct | COLON | CLASS | CHAR of ( -# 744 "src/ocaml/preprocess/parser_raw.mly" +# 810 "src/ocaml/preprocess/parser_raw.mly" (char) # 215 "src/ocaml/preprocess/parser_raw.ml" ) @@ -222,7 +222,7 @@ module MenhirBasics = struct | ASSERT | AS | ANDOP of ( -# 782 "src/ocaml/preprocess/parser_raw.mly" +# 848 "src/ocaml/preprocess/parser_raw.mly" (string) # 228 "src/ocaml/preprocess/parser_raw.ml" ) @@ -242,6 +242,9 @@ let _eRR = [@@@ocaml.warning "-9"] +[@@@ocaml.warning "-60"] module Str = Ast_helper.Str (* For ocamldep *) +[@@@ocaml.warning "+60"] + open Asttypes open Longident open Parsetree @@ -383,6 +386,10 @@ let mkuplus ~oploc name arg = | _ -> Pexp_apply(mkoperator ~loc:oploc ("~" ^ name), [Nolabel, arg]) +let mk_attr ~loc name payload = + Builtin_attributes.(register_attr Parser name); + Attr.mk ~loc name payload + (* TODO define an abstraction boundary between locations-as-pairs and locations-as-Location.t; it should be clear when we move from one world to the other *) @@ -425,11 +432,13 @@ let rec mktailpat nilloc = let open Location in function let mkstrexp e attrs = { pstr_desc = Pstr_eval (e, attrs); pstr_loc = e.pexp_loc } -let mkexp_constraint ~loc e (t1, t2) = - match t1, t2 with - | Some t, None -> mkexp ~loc (Pexp_constraint(e, t)) - | _, Some t -> mkexp ~loc (Pexp_coerce(e, t1, t)) - | None, None -> assert false +let mkexp_desc_constraint e t = + match t with + | Pconstraint t -> Pexp_constraint(e, t) + | Pcoerce(t1, t2) -> Pexp_coerce(e, t1, t2) + +let mkexp_constraint ~loc e t = + mkexp ~loc (mkexp_desc_constraint e t) let mkexp_opt_constraint ~loc e = function | None -> e @@ -813,6 +822,64 @@ let class_of_let_bindings ~loc lbs body = assert (lbs.lbs_extension = None); mkclass ~loc (Pcl_let (lbs.lbs_rec, List.rev bindings, body)) +(* If all the parameters are [Pparam_newtype x], then return [Some xs] where + [xs] is the corresponding list of values [x]. This function is optimized for + the common case, where a list of parameters contains at least one value + parameter. +*) +let all_params_as_newtypes = + let is_newtype { pparam_desc; _ } = + match pparam_desc with + | Pparam_newtype _ -> true + | Pparam_val _ -> false + in + let as_newtype { pparam_desc; pparam_loc } = + match pparam_desc with + | Pparam_newtype x -> Some (x, pparam_loc) + | Pparam_val _ -> None + in + fun params -> + if List.for_all is_newtype params + then Some (List.filter_map as_newtype params) + else None + +(* Given a construct [fun (type a b c) : t -> e], we construct + [Pexp_newtype(a, Pexp_newtype(b, Pexp_newtype(c, Pexp_constraint(e, t))))] + rather than a [Pexp_function]. +*) +let mkghost_newtype_function_body newtypes body_constraint body = + let wrapped_body = + match body_constraint with + | None -> body + | Some body_constraint -> + let loc = { body.pexp_loc with loc_ghost = true } in + Exp.mk (mkexp_desc_constraint body body_constraint) ~loc + in + let expr = + List.fold_right + (fun (newtype, newtype_loc) e -> + (* Mints a ghost location that approximates the newtype's "extent" as + being from the start of the newtype param until the end of the + function body. + *) + let loc = (newtype_loc.Location.loc_start, body.pexp_loc.loc_end) in + ghexp (Pexp_newtype (newtype, e)) ~loc) + newtypes + wrapped_body + in + expr.pexp_desc + +let mkfunction params body_constraint body = + match body with + | Pfunction_cases _ -> Pexp_function (params, body_constraint, body) + | Pfunction_body body_exp -> + (* If all the params are newtypes, then we don't create a function node; + we create nested newtype nodes. *) + match all_params_as_newtypes params with + | None -> Pexp_function (params, body_constraint, body) + | Some newtypes -> + mkghost_newtype_function_body newtypes body_constraint body_exp + (* Alternatively, we could keep the generic module type in the Parsetree and extract the package type during type-checking. In that case, the assertions below should be turned into explicit checks. *) @@ -824,11 +891,11 @@ let package_type_of_module_type pmty = | Pwith_type (lid, ptyp) -> let loc = ptyp.ptype_loc in if ptyp.ptype_params <> [] then - err loc "parametrized types are not supported"; + err loc Syntaxerr.Parameterized_types; if ptyp.ptype_cstrs <> [] then - err loc "constrained types are not supported"; + err loc Syntaxerr.Constrained_types; if ptyp.ptype_private <> Public then - err loc "private types are not supported"; + err loc Syntaxerr.Private_types; (* restrictions below are checked by the 'with_constraint' rule *) (* assert (ptyp.ptype_kind = Ptype_abstract); *) @@ -838,7 +905,7 @@ let package_type_of_module_type pmty = | None -> None end | _ -> - err pmty.pmty_loc "only 'with type t =' constraints are supported"; + err pmty.pmty_loc Not_with_type; None in match pmty with @@ -846,8 +913,7 @@ let package_type_of_module_type pmty = | {pmty_desc = Pmty_with({pmty_desc = Pmty_ident lid}, cstrs)} -> (lid, List.filter_map map_cstr cstrs, pmty.pmty_attributes) | _ -> - err pmty.pmty_loc - "only module type identifier and 'with type' constraints are supported" + err pmty.pmty_loc Neither_identifier_nor_with_type ; (Location.mkloc (Lident "_") pmty.pmty_loc, [], []) let mk_directive_arg ~loc k = @@ -900,7 +966,7 @@ let expr_of_lwt_bindings ~loc lbs body = (lbs.lbs_extension, [])) -# 904 "src/ocaml/preprocess/parser_raw.ml" +# 970 "src/ocaml/preprocess/parser_raw.ml" module Tables = struct @@ -1446,22 +1512,22 @@ module Tables = struct Obj.repr () and default_reduction = - (16, "\000\000\000\000\000\000\002\222\002\221\002\220\002\219\002\218\002\173\002\217\002\216\002\215\002\214\002\213\002\212\002\211\002\210\002\209\002\208\002\207\002\206\002\205\002\204\002\203\002\202\002\201\002\200\002\199\002\172\002\198\002\197\002\196\002\195\002\194\002\193\002\192\002\191\002\190\002\189\002\188\002\187\002\186\002\185\002\184\002\183\002\182\002\181\002\180\002\179\002\178\002\177\002\176\002\175\002\174\000\000\000\000\000,\000\189\000\000\000\000\000\000\000\000\000\000\000\000\002\142\001[\000\000\000\000\000\000\000\000\000\000\000\000\000h\000c\000\191\000\000\000\000\000\000\000\000\000\000\002\160\000\000\002g\002h\000\000\002e\002f\000\000\001\179\000f\001\158\001\176\001\175\000\000\001\180\001\184\000\000\000\000\000\000\001q\001p\000\000\002\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\174\001\178\001\177\001\159\001\182\001\173\001\172\001\171\001\170\001\169\001\167\001\183\001\181\000\000\000\000\000\000\000\226\000\000\000\000\001\162\000\000\000\000\000\000\001\164\000\000\000\000\000\000\001\166\001\188\001\185\001\168\001\160\001\186\001\187\000\000\003 \003!\000\000\000\000\000\026\001O\000\000\000\222\000\223\000\000\000\000\000\000\001\210\001\209\000\000\000\000\000\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001o\000\000\000\000\000\000\000\000\000\000\003\029\000\000\003\024\000\000\000\000\003\026\000\000\003\028\000\000\003\025\003\027\000\000\003\019\000\000\003\018\003\014\0023\000\000\003\017\000\000\0024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001M\000\000\000\000\000\000\000\000\000\000\000\000\000\229\000\017\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Y\000\000\000\000\001\\\001Z\001a\000C\002|\000\000\001\028\002\248\002\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\000\000\000\000\000e\000\000\000\237\000\000\002i\000\000\000\000\000\000\001\192\000\000\000\000\000'\000\000\000\000\000\000\000\000\000\000\000\000\001`\000\000\001P\001_\000\000\001N\000`\000 \000\000\000\000\001\135\000\027\000\000\000\000\000\000\000\000\003\r\000*\000\000\000\000\000!\000\028\000\000\000\000\000\000\000\204\000\000\000\000\000\000\000\206\002=\002/\000\000\000$\000\000\0020\000\000\000\000\001\189\000\000\000\000\000\000\000\018\000\000\000\000\000\000\000\019\002\249\000\000\002\250\000\000\000w\000\000\000\000\000#\000\000\000\000\000\000\000%\000\000\000&\000\000\000(\000\000\000\000\000)\002%\002$\000\000\000\000\000\000\000\000\000\000\000\000\000a\000\000\002\165\000d\000g\000b\002\154\003\"\002\155\001\243\002\157\000\000\000\000\002\162\002d\002\164\000\000\000\000\000\000\002\168\000\000\000\000\000\000\001\239\001\230\000\000\000\000\000\000\000\000\000\000\001\229\000\000\001\242\002\171\000\000\000\000\000\000\000\000\001\137\000\000\000\000\001\241\002\163\000o\000\000\000\000\000n\000\000\002\156\000\000\000\000\000\000\000\000\002\170\000\000\000\000\000\000\001\231\001\240\001\234\000\000\000m\000\000\002\169\000\000\002\167\000\000\002j\000\000\000\000\002G\002\166\000\000\000\000\000\000\000\000\001\194\0017\0018\002l\000\000\002k\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\248\000\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\000\000\000\000\000\000\000\000\000\246\001\250\000\247\000\000\000\000\000\000\000\000\000\000\000\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\207\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002!\000\000\000\000\001x\000\000\000\000\000\000\000\000\000\000\000\000\0039\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\016\000\000\000\000\000\000\000\000\000\000\001w\000\000\000\000\000\000\001X\001\127\001W\001|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002-\000\000\000\000\002.\002 \000\000\000\000\001v\000\000\000\208\000\000\000\000\001i\000\000\000\000\001m\000\000\001\212\000\000\000\000\001\211\001l\001j\000\000\001n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\128\001]\002\133\002\131\000\000\000\000\000\000\002\143\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\240\000\000\000\242\000\000\000\000\000\000\002\139\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\003#\002\141\002\130\002\129\000\000\000\000\000z\001:\000\000\000\000\000\173\000\000\000\000\000\000\000\000\000\000\000\187\000\000\000\000\000\000\000\172\000\000\000\000\000\000\002N\002M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\003\000\000\000\000\001\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\247\001\245\001\246\000\000\000\000\000\000\000\252\000\000\000\000\000\000\000\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\001\"\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\000\000\000\001\024\000\000\001d\002\241\000\000\000\000\002\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002'\000\000\000\000\000\000\000\000\000\000\001\139\000\000\002\006\000\000\000\000\000\000\000\000\000i\000\000\000\000\000j\000\000\000\000\000\000\000\000\001\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\231\000\000\000\000\000s\000\000\000\234\000\232\000\000\000\000\000\000\000\211\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002O\000k\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\150\001\146\000\000\000\000\000\000\000\216\000\000\000\000\002\020\002\030\000\000\000\219\002\018\002\019\000\000\000\000\000\000\000\000\000\000\001\153\001\149\001\145\000\000\000\000\000\217\000\000\000\000\001\152\001\148\001\144\001\142\002\030\000\000\000\221\000\000\000\000\002\b\000\000\000\000\002X\002\029\002\027\002\028\000\000\000\000\000\000\002\030\000\000\000\218\002\030\000\000\000\220\000\000\000\000\000\000\000\000\002W\000\000\000\000\000\000\000\000\000\000\000\000\001\157\000\000\000\000\000\000\001\156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\000\000\000\000\000\001r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\026\002]\000\000\000\000\000\000\002[\000\000\000\000\000\000\002Z\000\000\001f\000\000\000\000\000\000\000\000\002a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003+\000\000\000\000\000\000\000\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000G\000\000\000\000\000\000\000\000\001\134\000\000\001\133\000\000\000\000\000\000\000\000\000J\000\000\000\000\000\000\002\r\000\000\002\012\000\000\000\000\000\000\000\000\000K\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000P\000\000\000\000\000\000\000Q\000O\000\000\000S\000\000\000\000\000\000\000\000\000\000\000I\000\000\000\000\000\000\000\000\000\000\000\000\000L\000\000\000R\000\000\000M\000N\000\000\001+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\022\000_\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\\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\020\002b\002S\000\000\002Y\002T\002`\002_\002^\002\\\001%\000\000\002Q\000\000\000\000\000\000\000\000\000\000\002\030\000\000\000\000\001\030\002U\000\000\000\000\000\000\000\000\000\000\000\000\002\030\000\000\000\000\001 \002V\002R\002c\001$\001\253\002P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003&\000\000\000\000\003(\000\000\0008\000\000\000\000\003.\000\000\003-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003%\000\000\000\000\003'\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001L\000\000\000\000\001J\001H\000\251\000\000\000\000\000\000\000\198\000\197\002\226\000\000\0009\000\000\000\000\0031\000\000\0030\000\000\000\000\000\000\001F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001K\000\000\000\000\001I\001G\000\000\000\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\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000X\000\000\000\000\000\000\000\000\000\000\000\000\0005\000\000\000\000\000\000\000\000\000\000\002#\002\"\000W\000\000\0003\001\b\000\000\000B\000/\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000\000\000V\000\000\000\000\000Y\000\000\000\000\001\196\000\000\0007\000\000\000\000\000\000\0006\000\000\000\000\000\000\000:\000\000\000Z\000\000\000<\000=\000\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\001\018\002\244\002\235\000\000\000\000\000\000\000\000\000\000\000\000\001\004\002\239\002\223\002\234\002\243\002\242\000\000\001;\001)\000\000\001\005\000\000\002\232\000\000\002\236\002\233\002\245\001\252\000\000\000\000\002\229\000\000\000\194\000\000\002\228\000\000\000\000\000\228\000\000\002\005\000\020\000\000\000\000\000\000\002s\000\000\000\000\002r\000\000\000\000\000\000\000\000\002u\000\000\000\000\002A\000\000\000\000\002y\000\000\000\000\002w\002\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\171\000\000\002t\000\000\000\000\002x\000\000\000\000\002v\001\r\000\000\000\000\001\014\000\000\000\000\000\174\000\000\001\016\001\015\000\000\000\000\002\137\000\000\002\149\000\000\002\148\000\000\002\152\000\000\002\151\000\000\000\000\002\138\000\000\000\000\000\000\002\017\000\000\001\208\000\000\000\000\000\000\002J\002\016\000\000\002\145\000\000\000\000\000\000\001^\000\000\000x\000y\000\000\000\000\000\000\000\000\000\144\000\000\000\000\000\000\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\201\000\202\000\138\000\000\000\137\000\000\000\000\001=\000\000\001>\001<\002)\000\000\000\000\002*\002(\000\000\000\000\000\000\000\000\000\000\002{\000\000\002z\000\000\000\000\002m\000\000\000\000\002\144\000\000\000\000\000\000\002D\002\135\000\000\002\134\000\000\002\150\000\135\000\000\000\000\000\000\000\000\000\134\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\002\225\002\227\001\011\001\206\000\000\000\244\000\245\000\000\000\000\000\000\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\255\000\254\000\000\0019\000\000\002\147\000\000\002\146\002\132\000\000\000\000\000\000\000\000\002}\000\000\000\000\002~\000\000\002o\000\000\002p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\213\000\000\000\000\001\216\000\000\000\000\001\214\000\000\000\000\001\215\000\000\001\155\000\000\000\000\000\000\001\154\000\000\000\000\001(\001'\000\000\000\190\000\000\000\000\000\000\000\000\001E\001?\000\000\000\000\001@\000\031\000\000\000\030\000\000\000\000\000\205\000\000\000\000\000\000\000\"\000\029\000\000\000\000\000\000\000\023\000\000\000\000\000\000\000\000\001\151\001\147\000\000\001\143\003\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\000\002\238\002\025\002\026\002\021\002\023\002\022\002\024\000\000\000\000\000\000\000\193\000\000\000\000\000\000\000\000\000\000\000\000\002\237\000\000\001g\000\000\000\000\000\024\000\000\003)\000\000\001s\000\000\002\159\000\000\000D\000\000\000\000\000E\000\000\000\000\002\127\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\000\000\000~\000\000\000\000\000\000\000\143\000\000\000-\000\000\000\000\000\000\000\000\000\128\000\000\000\224\000\001\000\000\000\000\000\227\000\002\000\000\000\000\000\000\001R\001S\000\003\000\000\000\000\000\000\000\000\001U\001V\001T\000\021\001Q\000\022\000\000\001\217\000\000\000\004\000\000\001\218\000\000\000\005\000\000\001\219\000\000\000\000\001\220\000\006\000\000\000\007\000\000\001\221\000\000\000\b\000\000\001\222\000\000\000\t\000\000\001\223\000\000\000\n\000\000\001\224\000\000\000\011\000\000\001\225\000\000\000\000\001\226\000\012\000\000\000\000\001\227\000\r\000\000\000\000\000\000\000\000\000\000\003\001\002\252\002\253\003\000\002\254\000\000\003\005\000\014\000\000\003\004\000\000\001/\000\000\000\000\003\002\000\000\003\003\000\000\000\000\000\000\000\000\0013\0014\000\000\000\000\0012\0011\000\015\000\000\000\000\000\000\003\031\000\000\003\030") + (16, "\000\000\000\000\000\000\002\233\002\232\002\231\002\230\002\229\002\184\002\228\002\227\002\226\002\225\002\224\002\223\002\222\002\221\002\220\002\219\002\218\002\217\002\216\002\215\002\214\002\213\002\212\002\211\002\210\002\183\002\209\002\208\002\207\002\206\002\205\002\204\002\203\002\202\002\201\002\200\002\199\002\198\002\197\002\196\002\195\002\194\002\193\002\192\002\191\002\190\002\189\002\188\002\187\002\186\002\185\000\000\000\000\000\"\000\137\000\000\000\000\000\000\000\000\000\000\000\000\002\153\001b\000\000\000\000\000\000\000\000\000\000\000\000\000_\000Z\000\139\000\000\000\000\000\000\000\000\000\000\002\171\000\000\002r\002s\000\000\002p\002q\000\000\001\188\000]\001\167\001\185\001\184\000\000\001\189\001\193\000\000\000\000\000\000\001x\001w\000\000\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\183\001\187\001\186\001\168\001\191\001\182\001\181\001\180\001\179\001\178\001\176\001\192\001\190\000\000\000\000\000\000\000\233\000\000\000\000\001\171\000\000\000\000\000\000\001\173\000\000\000\000\000\000\001\175\001\197\001\194\001\177\001\169\001\195\001\196\000\000\003*\003+\000\000\000\000\000 \001V\000\000\000\229\000\230\000\000\000\000\000\000\001\221\001\220\000\000\000\000\000\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\000\000\000\000\000\000\000\000\000\000\003'\000\000\003\"\000\000\000\000\003$\000\000\003&\000\000\003#\003%\000\000\003\029\000\000\003\028\003\024\002@\000\000\003\027\000\000\002A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001T\000\000\000\000\000\000\000\000\000\000\000\000\000\236\000\017\000\016\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\001c\001a\001h\000:\002\135\000\000\001#\003\002\003\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\002\026\000\000\000\000\000\000\000\\\000\000\000\244\000\000\002t\000\000\000\000\000\000\001\201\000\000\000\000\000x\000\000\000\000\000\000\000\000\000\000\000\000\001g\000\000\001W\001f\000\000\001U\000W\000\027\000\000\000\000\001\142\000\024\000\000\000\000\000\000\000\000\000o\000\000\000\000\000\000\000\000\000\000\000\000\003\023\000\211\000p\000\142\000q\000\023\000\000\000\000\000\000\000\000\000\028\000\025\000\018\000\000\000r\000n\000\000\000\000\000\000\000\019\000\030\000\000\000\213\002J\002<\000\000\000u\000\000\002=\000\000\000\000\001\198\000\000\000\000\000\000\000\000\003\003\000\000\003\004\000\000\000\000\000t\000\000\000\000\000\000\000v\000\000\000w\000\000\000y\000\000\000\000\000z\0022\0021\000\000\000\000\000\000\000\000\000\000\000\000\000X\000\000\002\176\000[\000^\000Y\002\165\003,\002\166\001\254\002\168\000\000\000\000\002\173\002o\002\175\000\000\000\000\000\000\002\179\000\000\000\000\000\000\001\250\001\241\000\000\000\000\000\000\000\000\000\000\001\240\000\000\001\253\002\182\000\000\000\000\000\000\000\000\001\144\000\000\000\000\001\252\002\174\000f\000\000\000\000\000e\000\000\002\167\000\000\000\000\000\000\000\000\002\181\000\000\000\000\000\000\001\242\001\251\001\245\000\000\000d\000\000\002\180\000\000\002\178\000\000\002u\000\000\000\000\002T\002\177\000\000\000\000\000\000\000\000\001\203\001>\001?\002w\000\000\002v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\000\000\000\000\000\000\000\000\253\002\005\000\254\000\000\000\000\000\000\000\203\000\000\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002.\000\000\000\000\001\127\000\000\000\000\000\000\000\000\000\000\000\000\003C\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\000\001_\001\134\001^\001\131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002:\000\000\000\000\002;\002-\000\000\000\000\001}\000\000\000\215\000\000\000\000\001p\000\000\000\000\001t\000\000\001\223\000\000\000\000\001\222\001s\001q\000\000\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\000\000\000\204\002,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0027\0025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\139\001d\002\144\002\142\000\000\000\000\000\000\002\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\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\248\000\247\000\000\000\249\000\000\000\000\000\000\002\150\000\000\000\000\000\000\002|\000\000\000\000\000\000\000\000\003-\002\152\002\141\002\140\000\000\000\000\000}\001A\000\000\000\000\000\188\002X\000\000\000\000\000\000\000\000\000\173\000\000\000\000\000\000\000\187\000\000\000\172\000\000\000\171\000\000\000\177\000\000\000\181\000\000\000\175\000\000\000\174\000\000\000\179\000\000\000\170\000\000\000\169\000\000\000\168\000\000\000\167\000\000\000\166\000\000\000\180\000\000\000\178\000\000\000\000\000\000\002G\000\000\000\190\000\000\000\182\000\000\000\183\000\000\000\184\000\202\000\176\000\000\000\000\000\000\000\209\000\000\000\208\000\000\000\000\000\000\000\000\000\000\000\000\001\n\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\002\002\000\002\001\000\000\000\000\000\000\001\003\000\000\000\000\000\000\000\000\000\000\000\000\002\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001)\001\132\000\000\000\000\000\000\000\000\000\000\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\031\000\000\001k\002\251\000\000\000\000\002\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0024\000\000\000\000\000\000\000\000\000\000\001\146\000\000\002\017\000\000\000\000\000\000\000\000\000`\000\000\000\000\000a\000\000\000\000\000\000\000\000\001\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\238\000\000\000\000\000j\000\000\000\241\000\239\000\000\000\000\000\000\000\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002Z\000b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\157\001\153\000\000\000\000\000\000\000\223\000\000\000\000\002\031\002)\000\000\000\226\002\029\002\030\000\000\000\000\000\000\000\000\000\000\001\160\001\156\001\152\000\000\000\000\000\224\000\000\000\000\001\159\001\155\001\151\001\149\002)\000\000\000\228\000\000\000\000\002\019\000\000\000\000\002c\002(\002&\002'\000\000\000\000\000\000\002)\000\000\000\225\002)\000\000\000\227\000\000\000\000\000\000\000\000\002b\000\000\000\000\000\000\000\000\000\000\000\000\001\166\000\000\000\000\000\000\001\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\133\000\000\000\000\000\000\000\000\000\000\001y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\002h\000\000\000\000\000\000\002f\000\000\000\000\000\000\002e\000\000\001m\000\000\000\000\000\000\000\000\002l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000>\000\000\000\000\000\000\000\000\001\141\000\000\001\140\000\000\000\000\000\000\000\000\000A\000\000\000\000\000\000\002\024\000\000\002\023\000\000\000\000\000\000\000\000\000B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000G\000\000\000\000\000\000\000H\000F\000\000\000J\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000C\000\000\000I\000\000\000D\000E\000\000\0012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000S\000\000\000U\000T\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\027\002m\002^\000\000\002d\002_\002k\002j\002i\002g\001,\000\000\002\\\000\000\000\000\000\000\000\000\000\000\002)\000\000\000\000\001%\002`\000\000\000\000\000\000\000\000\000\000\000\000\002)\000\000\000\000\001'\002a\002]\002n\001+\002\b\002[\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0030\000\000\000\000\0032\000\000\000/\000\000\000\000\0038\000\000\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003/\000\000\000\000\0031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001S\000\000\000\000\001Q\001O\000\000\001\219\000\000\000\000\000\147\002\237\002+\000\000\0000\000\000\000\000\003;\000\000\003:\000\000\000\000\000\000\001M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\000\000\001P\001N\000\000\000\000\000\000\0002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000O\000\000\000\000\000\000\000\000\000\000\000\000\000,\000\000\000\000\000\000\000\000\000\000\0020\002/\000N\000\000\000*\001\015\000\000\0009\000&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\r\000\000\000M\000\000\000\000\000P\000\000\000\000\001\205\000\000\000.\000\000\000\000\000\000\000-\000\000\000\000\000\000\0001\000\000\000Q\000\000\0003\0004\000\000\0014\000\000\000\000\000\000\000\000\000\000\000\000\0007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\025\002\254\002\245\000\000\000\000\000\000\000\000\000\000\000\000\001\011\002\249\002\234\002\244\002\253\002\252\000\000\001B\0010\000\000\001\012\000\000\002\242\000\000\002\246\002\243\002\255\002\007\000\000\000\000\002\239\000#\000\000\002\238\000\000\000\000\000\143\000\000\000\235\000\000\002\016\000\020\002F\000\000\000\000\002~\000\000\000\000\002}\000\000\000\000\000\000\000\000\002\128\000\000\000\000\002N\000\000\000\000\002\132\000\000\000\000\002\130\002\147\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\186\000\000\002\127\000\000\000\000\002\131\000\000\000\000\002\129\001\020\000\000\000\000\001\021\000\000\000\000\000\189\000\000\001\023\001\022\000\000\000\000\002\148\000\000\002\160\000\000\002\159\000\000\002\163\000\000\002\162\000\000\000\000\002\149\000\000\000\000\000\000\002\028\000\000\000\000\000\000\000\000\002W\002\027\000\000\002\156\000\000\000\000\000\000\001e\000\000\000{\000|\000\000\000\000\000\000\000\000\000\159\000\000\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\153\000\000\000\000\001D\000\000\001E\001C\0026\000\000\000\000\000\000\000\000\000\000\000\000\002\134\000\000\002\133\000\000\000\000\002x\000\000\000\000\002\155\000\000\000\000\000\000\002Q\002\146\000\000\002\145\000\000\002\161\000\152\000\000\000\000\000\000\000\000\000\151\000\000\000\000\000\000\000\000\000\000\000\000\000\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\150\002\236\001\018\001\217\000\000\000\251\000\252\000\000\000\000\000\000\000\000\000\000\000\000\001\b\000\000\000\000\000\000\000\000\001\007\000\000\000\000\001\006\001\005\000\000\001@\000\000\002\158\000\000\002\157\002\143\000\000\000\000\000\000\000\000\002\136\000\000\000\000\002\137\000\000\002z\000\000\002{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\224\000\000\000\000\001\227\000\000\000\000\001\225\000\000\000\000\001\226\000\000\001\164\000\000\000\000\000\000\001\163\000\000\000\000\001/\001.\000\000\000\138\000\000\000\000\000\000\000\000\001L\001F\000\000\000\000\001G\001\162\000\000\001\161\000\000\000\000\000\212\000\000\000\000\000\000\000\029\000\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\158\001\154\000\000\001\150\003\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\140\000\000\002\248\002$\002%\002 \002\"\002!\002#\000\000\000\000\000\000\000\141\000\000\000\000\000\000\000\000\000\000\000\000\002\247\000\000\001n\000\000\000\000\000s\000\000\0033\000\000\001z\000\000\002\170\000\000\000;\000\000\000\000\000<\000\000\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\130\000\000\000\129\000\000\000\000\000\000\000\158\000\000\000$\000\000\000\000\000\000\000\000\000\131\000\000\000\231\000\001\000\000\000\000\000\234\000\002\000\000\000\000\000\000\001Y\001Z\000\003\000\000\000\000\000\000\000\000\001\\\001]\001[\000\021\001X\000\022\000\000\001\228\000\000\000\004\000\000\001\229\000\000\000\005\000\000\001\230\000\000\000\000\001\231\000\006\000\000\000\007\000\000\001\232\000\000\000\b\000\000\001\233\000\000\000\t\000\000\001\234\000\000\000\n\000\000\001\235\000\000\000\011\000\000\001\236\000\000\000\000\001\237\000\012\000\000\000\000\001\238\000\r\000\000\000\000\000\000\000\000\000\000\003\011\003\006\003\007\003\n\003\b\000\000\003\015\000\014\000\000\003\014\000\000\0016\000\000\000\000\003\012\000\000\003\r\000\000\000\000\000\000\000\000\001:\001;\000\000\000\000\0019\0018\000\015\000\000\000\000\000\000\003)\000\000\003(") and error = - (133, "3\248H1b\171\1273=\001@}\200\160\001\199\001\141\194\000\139\133\027\248\147\232\002\003\232\005\000\0068\023\183d@\130\254*@\0010p:q\193`Ph\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\223\235f\245\155\175\252\205\255%C\247\018\162\015<\011\219\178 A\127\021 \000\1528\0298\224\176(4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004X(\223\196\159@\016\031@(\0001\192\189\187\"\004\023\241R\000\t\131\129\211\142\011\002\131C?\132\139V*\183\2433\208\020\007\220\n\000\128 >\128P\000c\128\198\225\000E\130\141\252I\244\001\001\244\002\128\003\028\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004\\(\223\196\159@\016\031@(\0001\192cp\128\"\193F\254$\250\000\128\250\001@\001\142\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\024\220 \b\184Q\191\137>\128 >\128P\000c\128\198\225\000E\130\141\252I\244\001\001\244\002\128\003\028\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\016\128\"\001@0$r\000\000\n\001@\001\140\000 \000\002\001\000\t\002\020\012\000\000\000@\b\000\000\001\000\000\016\000\000H\016\160`\000\000\002\000@\000\000\b\000\000\128\000\002@\132\003\000\000\000\016\002\000\000\0001\b\002\004\000#\002E\160\002\000\168\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\012B?\001cJE\167\198 \172\b\001\146\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\128\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\016\000\000\000@\000\000\000\000\000\000\000\000\012\000\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\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\002\002\000\001\003\002\000\000\000\016\000\000\000\000\000B@\n\160\002\012\021!\192\001\016\000\236\b\025\000 \018\000A\000\016@\001\n\000\b\000\006 \000\b\000\000\144\002\b\000\130\000\b@\000@\0001\000\000@\000\000\000\000\000 \0000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\004\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\000\128\007\224\012\t\000\000\248\132\000\129\000 Q`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\128\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\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\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\128Y\208\004\025\026C\129\131\"\001\216\017\"\017@\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\001\128\000\028\004\b\024\\ \000\016\000\000\000\000\000\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\001\000 \0160 \128\000\001\000\000\000\000\000\000\b\001\001\000\000\129\129\004\000\000\b\000\000\000\000\000\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\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\001\128\128\016\000\000\016\016@\000\000\128\000\000\000\000\000\012\004\000\128\000\000\128\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000g\240\144b\197V\254f\250\002\128\251\137@\003\142\003?\132\131\022*\183\2433\208\020\007\220J\000\028p\000\192\000\004\152 \140\000 \004\000\000\000\000\000\002\000\006\000\000$\129\004`\001\000 \000\000\000\000\000\016\0000\000\001$\b#\000\000\001\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000@\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\018@\0020\000\000\016\000\000\000\000\000\b\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000$\128\004\000\000\000 \000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\b \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\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\016\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\018@\002\000\000\000\016\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\t\000\"\130\b \020\134\000\004@\003\176\002\004\000\1281\000\003\192\128\003\011\133\000\002\000 \002\000\001\000\002@\b\160\003\b\021!\192\001\016\000\204\b\131\b \012@\000\224 \000\194\225@\000\128\b\000\128\000@\000`\000\135\001\002\006\023\b\000\004\000\000\000\001\000\000\133\128]\192\004\025\026C\129\130\"\001\216\001f\017`\024\000\001\128\000\001\133\194\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\006\000\000`\000\000ap\128\000D\000\000@\000\000\000\016\000\128\000\000\001\000\000\000\002 \000\000\000@\000\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\002\246\236\136\016_\197H\000&\014\007N8,\n\r\012\254\018-X\170\223\204\207@P\031p(\000\241\192g\240\145b\197V\254fz\002\128\251\153@\003\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\016\002\002\000\002\002\b\000\000\016\000\000\000\000\128\001\128\128\016\016\000\016\016@\000\000\128\000\000\000\000\000\012\004\000\128\000\000\128\130\000\000\004\000\000\000\000\000\000` \004\000\000\004\004\000\000\000 \000\000\000\000\000\007\001\000 \000\000 \000\000\001\000\000\000\000\000\003\027\132\001\022\n7\241'\208\004\007\208\n\000\012p\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\002\000\000\000@\000 \001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\001\000\b\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\001\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\191\214\239\2517\223\251\255\254N\143\238e\132\014y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\220 \b\184Q\191\137>\128 >\128P\000c\128\198\225\000E\130\141\252I\244\001\001\244\002\128\003\028\0067\b\002,\020o\226G\160\b\015\160\020\000\024\2241\184@\017p\163\127\018}\000@}\000\160\000\199\001\141\194\000\139\005\027\248\147\232\002\003\232\005\000\0068\012n\016\004X(\223\196\143@\016\031@(\0001\192cp\196#\241V\254\164z|\194\250A\192\025\174\176\024\132!\016\n\001\129#\144\000\000P\n\000\012`\024\220 \b\176Q\191\137\030\128 >\128P\000s\129\015=\187\215\250\190w\207\239\254\220\031\191\182\255\249\2307\b\002,\020o\226G\160\b\015\160\020\000\024\224\001\136A\0160\001\024\018m\000\016\005\000\000\000\130\000\012B\b\129\000\b\192\147h\000\128(\000\000\004\016\000b\016D\b\000F\004\139@\004\001@\000\000 \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\132\001\002\000\017\129\"\208\001\000P\000\000\b \000\196 \b\016\000\140\t\022\128\b\002\160\000\000Q\000\006!\002@\128\004`H\180\000@\021\000\000\002\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\000\000\000\000\000\000\000\002\000\000 \000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\006\000\000p\016\000ap\128\000@\000\000\000\000(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\002\000\012\000\004\224 \000\194\225\000\000\128\000\000\000\000P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\0008\b\0000\184@\000 \000\000\000\000\004\000\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\160\000@\000\000\000\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\224 \000\194\225\000\000\128\000\000\000\000\016\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000! \007p\001\006B\144\224`\136\128v\000X\132X\006\000\000p\016\000ap\128\000@\000\000\000\000\000\bH\005\220\000A\144\1648\024\" \029\128\022!\022\001\128\000\024\000\000\024\\ \000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128]\192\004\025\026C\129\130\"\001\216\001b\017`\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\003\000\000\003\011\132\000\002\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128]\192\004\025\026C\129\130\"\001\216\001b\017`\024\000\001\128\000\001\133\194\000\001\000\000\000\000\000\000!`\023p\001\006F\144\224`\136\128v\000X\132X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\0008\b\0000\184@\000 \000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\128\000\000 \000\000\128\000\000\000\004\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\000\000\004\000\000\000\000\002\000\000\b\000\000\000\000@\128`\000\007\001\000\006\023\b\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\b\000\000\000\000\004\000\000\016\000\000\000\000\137\000\000\000\004\000\000\000\000\000\000\000\000\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\000\000\000\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\000\000\000\002\000\000\b\000\000\000\000D\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\128\000\002\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000! \007p\001\006B\144\224`\136\128v\000X\132P\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\016\000\000\000 \000\000\000\000\000\000\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\b\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\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\002\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000 \000\000\000\016\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\128\000\000\000\0001\b\002\004\000#\002E\160\002\000\168\000\000\016@\001\136@\0160\001\024\018i\000\016\005\000\000\000\130\000\012B\000\129\000\b\192\147H\000\128(\000\000\004\016\000b\016\004\b\000F\004\138@\004\001@\000\000 \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000&)\027P\144\020`I\172\002@\020\160@\218\170\000\000\b\000\004\000 \000\000 \000\000\128\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\020\141\168H\n0$\222\001 \n\208\016mU\000\b\000\000\000\000\001\000\"\128\000\000\000\000\000\000\000\000\196!\b\016\000\140\t\022\128\b\002\160\000\002A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\b\002\006\000#\002M\160\002\000\168\000\000\016@\001\136@\016 \001\024\018m\000\016\005@\000\000\130\000\012B\000\129\000\b\192\145h\000\128*\000\000\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000l\000\000@\000\004\000\b\000\002\128\002b\136\000\196 \b\016\000\140\t\022\128\b\002\160\000\000A\000 \000\027\000\000\016\000\001\000\002\000\000\160\000\152\162\0001\b\002\004\000#\002E\160\002\000\168\000\000\016@\b\000\006\192\000\004\000\000@\000\128\000(\000&(\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002b\017\180\b\001F\004\155@$\001Z\000\t\170\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\004\196#h\016\002\140\t6\128H\002\180\000\019U@\007!\136G\224,iH\180\248\196\021\129\0002Y`\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\b\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003\016\128 @\0020$R\000 \n\000\000\001\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\128\000\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\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\t\130 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\132\001\002\000\017\129\"\208\001\000T\000\000\b \004\000\003`\000\002\000\000 \000@\000\020\000\019\020@\006\000\000p\016\000ap\128\000@\000\000\000\000\000\000\000\000@\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012B\000\129\000\b\192\145h\000\128*\000\000\004\016\002\000\001\176\000\001\000\000\016\000 \000\n\000\t\138 \000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\001 D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\016\129 @\0020$Z\000 \n\128\000\001\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\144\000\000\000\000\b\000\000\000\000\000\004\133\016\001\136@\144 \001\024\018-\000\016\005@\000\000\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\128\000\000\000\000\128\000\000\000\000\000H\017\000\000\000D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000 \000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\229$Z\019\004\142\153\245\128\200\002\246\000\027\197P\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\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000 \000\002\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\b\000\000\000\000\000\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\001\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000 \000\000\000\001\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000b\016\004\b\000F\004\139@\004\001@\000\000 \128\003\020\128(H\0020$\214\001 \n@\000M\021\128\016\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006!\000@\128\004`H\180\000@\021\000\000\002\b\000\000\000@\000\000\000\000\b\000\000\000\004\000\004\193\016\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\b\000\000\000\000\000\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\0009\012B?\001cJE\167\198 \172\b\001\146\203\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000b\144\005\t\000F\004\138\192\004\001H\000\004\160\128\003\016\128 @\0020$R\000 \n\000\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\006!\004@\200$`I\180\000@\021\000\000\002\b\0000\016\002\002\000\002\002\b\000\000\016\000\000\000\000\128\001\128\128\016\016\000\016\016@\000\000\128\000\000\000\000\000\012\004\000\128\000\000\128\130\000\000\004\000\000\000\000\000\000` \004\000\000\004\004\000\000\000 \000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\192\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\128\016\016\000\b\024\016\000\000\000\128\000\000\000\000\000\004\000\144\128\000@\192\128\000\000\004\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\001\000 \000\0160 \000\000\001\000\000\000\000\000\000\000\000\000\000\000\001\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016@\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\004\000\128\128\000@\192\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\021@\004\024\nC\128\002 \001\216\000\"\000@\004\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\192\000\004\144\000\140\000\000\004\000\000\000\000\000\002\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\000\000\000\004\000\001\000\000\001\128\000\030\004\000\024\\ \000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\132\128\021@\004\024\nC\128\002 \001\216\000\"\001@\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\000! \005P\001\006\002\144\224\000\136\000v\000H\128Q\t\000*\128\b0\020\135\000\004@\003\176\002D\000\1280\000\003\128\128\003\011\132\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000 \000\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\016\144\002\168\000\131\001Hp\000D\000;\000$@\b\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\000\000\000\000\000@\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000 \000\000\016\002\002\000\001\003\002\000\000\000\016\000\000\000\000\000B@\n\160\002\012\005!\192\001\016\000\236\000\017\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\000\000\000\000\000\002\000\000\000\001\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\004$\000\170\000 \193R\028\000\017\000\014\192\129\144\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\128\000@\192\128\000\000\004\000\000\000\000\000\016\144\002\168\000\131\001Hp\000D\000;\000\004@\b\001\000 \000\0160 \000\000\001\000\000\000\000\000\004$\000\170\000 \192R\028\000\017\000\014\192\001\016\002\000\000\000\000\000\000\000\000\000\000\000\000\016\004\004\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\001T\000A\130\1648\000\"\000\029\129\002 \004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\144\002\168\000\131\005Hp\000D\000;\002\004@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004$\000\170\000 \192R\028\000\017\000\014\192\001\016\002\000 \000\000\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\000B@\n\160\002\012\005!\192\001\016\000\236\000\017\000\"\000\000\016\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\000\000\128\000\004\000\000\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\006\002\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\000B@\n\160\002\012\021!\192\001\144\000\236\000\019\000 \028\004\016\128\000\000\128\128\000\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\004\000\000\000 \000\128\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\001\000\000\b\000\000\016\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\144\002\168\000\131\005Hp\000d\000;\002\004\192\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\004\000\b\000\000\000\000\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\198\225\002E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\004\000 \000\000\000\001\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000b\016\004@(\006\004\142@\000\001@(\0001\128\128\000\b\128\000\000\000\000\000\000`\000@\144$\000\000\024\132\001\016\n\001\129#\144\000\000P\n\000\012`\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\006!\000DB\128`I\228\000\000\020\002\128\003\024\0001\b\002 \020\003\002O \000\000\160\020\000\024\192\001\136@\017\000\160\024\0189\000\000\005\000\160\000\198\001\141\194\000\139\133\027\248\147\232\002\003\232%\000\0068\012n\016\004X(\223\196\159@\016\031A(\0001\192cp\128\"\193F\254$z\000\128\250\t@\001\142\003\027\132\001\023\n7\241'\208\004\007\208\n\000\012p\024\220 \b\176Q\191\137>\128 >\128P\000c\128\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\0001\b\002\006\000#\002M\160\002\000\168\000\000\017@\001\136@\016 \001\024\018m\000\016\005@\000\000\138\000\012B\000\129\000\b\192\145h\000\128*\000\000\004P\000b\016\004\b\000F\004\139@\004\001P\000\000 \128\016\000\000\000\000\b\000\000\128\000\000\000\000\000H\017\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\197 \n\026\000\140\t5\128\b\002\128\000\000A\000\006)\000P\144\004`I\172\000@\020\000\000\002\b\0001H\002\132\128#\002E`\002\000\160\000\000\016@\001\200b\017\248\011\026R->1\005`@\012\150X\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003\020\128(H\n0$V\000 \n\000\000\005\004\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\196 \b\024\000\140\t6\128\b\002\160\000\000A\000\006!\000@\128\004`I\180\000@\021\000\000\002\b\0001\b\002\004\000#\002E\160\002\000\168\000\000\016@\000\000\000\000\000\000\000\000@\000\128\000 \000$\b\129\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000b\016\004\012\000F\004\155@\004\001P\000\000 \128\003\016\128 @\0020$\218\000 \n\128\000\001\004\000\024\132\001\002\000\017\129\"\208\001\000T\000\000\b \000\000\000\000\000\000\000\000 \000\000\000\016\000\018\004@\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\0001\b\002 \020\003\002G \000\000\160\020\000\024\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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<\246\239_\234\249\215?\191\251p~\254\219\255\239\128@\000\000\000\000\012\001\028\000\000\000\000\000\000\000\000\198\225\136G\226\173\253H\244\249\133\244\131\1283]`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\184B\017`\163\127\018=\000@}\000\160\000\199\001\141\194\016\139\005\027\248\145\232\002\003\232\005\000\0068\000` \004\004\000\004\004\016\000\000 \000\000\000\000\000\003\001\000 \000\000 \128\000\001\000\000\000\000\000\000\024\b\001\000\000\001\001\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000 \000\000\000\000\000\001\000\000\002\000@@\000 `@\000\000\002\000\000\000\000\000\b\000\000@\000\000\128\000\b\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\141\194\016\139\005\027\248\145\232\002\003\232\005\000\0068\012n\016\132X(\223\196\143@\016\031@(\0001\192\003\016\132 @\0020$Z\000 \n\000\000\001\004\000\000\000\000\000\000\000\000\004\000\000\000\002\000\002`\136\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\001\136@\017\016\160\024\018y\000\000\005\000\160\000\198\000\012B\000\136\005\000\192\147\200\000\000(\005\000\0060\000b\016\004@(\006\004\142@\000\001@(\0001\128\132\138]\193\244\031\n\195\129\255n\005\222\155~p\240\024\132\001\016\n\001\129#\144\000\000P\n\000\012`!\231\183z\255W\206\185\253\255\219\131\247\246\223\255|\000\000\000\000\000\000@\000\160\000\000\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\2241\184@\017`\163\127\018=\000@}\000\160\000\199\002\030{w\175\245|\235\159\223\253\184?\127m\255\243\192\000\000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\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\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\025\000\000\000\000\001\000\000\000\000\128\000\000\000\0000\000\003\128\128\003\011\132\000\002\000\000\000\000\000\000\000\000\006@\000\000\000\000@\000\000\000 \000\016\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\001\144\000\000\000\000\016\000\000\000\b\000\000\000\000\000\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\001\136@\017\000\160\024\0189\000\000\005\000\160\000\198\002\030{w\175\245|\235\159\223\253\184?\127m\255\247\192\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\000\000\000\000\b\000\000\000\000\001\128\002\128\000\000\000\000\000\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000BE.\224\250\015\133a\192\255\151\002\239\005\1918y\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\016\243\219\189\127\171\231\\\254\255\237\193\251\251o\255\158\132\138]\193\244\031\n\195\129\255n\005\222\155~p\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000!\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\002\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\002\018)w\007\208|+\014\007\252\184\023x-\249\195\204n\016\004X(\223\196\143@\016\031@(\0001\192\132\138]\193\244\031\n\195\129\255.\005\222\011~p\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000!\231\183z\255W\206\185\253\255\219\131\247\246\223\255=\t\020\187\131\232>\021\135\003\254\220\011\1896\252\225\2307\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\159\235w\143\213\127\251\159\239\254\187\255}-\255\251\215\183d@\130\254*@\0010p:q\193`Phcp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\002\018)w\007\208|+\014\007\252\184\023x-\249\195\204n\016\004X(\223\196\143@\016\031@(\0001\192\132\138]\193\244\031\n\195\129\255.\005\222\011~p\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p!\"\151p}\007\194\176\224\127\203\129w\130\223\156<\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\002\018)w\007\208|+\014\007\252\184\023x-\249\195\204n\016\004X(\223\196\143@\016\031@(\0001\192\132\138]\193\244\031\n\195\129\255.\005\222\011~p\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p!\"\151p}\007\194\176\224\127\203\129w\130\223\156<\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\002\018)w\007\208|+\014\007\252\184\023x-\249\195\204n\016\004X(\223\196\143@\016\031@(\0001\192\132\138]\193\244\031\n\195\129\255.\005\222\011~p\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p!\"\151p}\007\194\176\224\127\203\129w\130\223\156<\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\002\018)w\007\208|+\014\007\252\184\023x-\249\195\204n\016\004X(\223\196\143@\016\031@(\0001\192\132\138]\193\244\031\n\195\129\255.\005\222\011~p\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p!\"\151p}\007\194\176\224\127\203\129w\130\223\156<\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\002\018)w\007\208|+\014\007\252\184\023x-\249\195\204n\016\004X(\223\196\143@\016\031@(\0001\192\132\138]\193\244\031\n\195\129\255.\005\222\011~p\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p!\"\151p}\007\194\176\224\127\203\129w\130\223\156<\006!\000@\128\004`I\180\000@\020\000\000\002\b\0001\b\002\004\000#\002E\160\002\000\160\000\000\016@\000\000\000\000\000\000\000\000@\000\000\000 \000&\b\128\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\b\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\016\000\018\004@\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\136@\016 \001\024\018-\000\016\005@\000\000\130\000\000\000\000\000\000\000\000\002\000\000\000\001\000\001 D\000b\016\004\b\000F\004\139@\004\001P\000\000 \128\000\000\000\000\000\000\000\000\128\000\000\000@\000H\017\000\024\132\001\002\000\017\129\"\208\001\000T\000\000\b \000\000\000\000\000\000\000\000 \000\000\000\016\000\018\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\016\000\000\000\b\000\t\002 \003\016\128 @\0020$Z\000 \n\128\000\001\004\000\000\000\000\000\000\000\000\004\000\000\000\002\000\002@\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \020\134\000\006@\0030\000\004\000\139\219\178 A\127\021 \000\1528\0298\224\176(43\248H\181b\171\1273=\001@}\192\160\003\199\000\012B\000\129\000\b\192\145h\000\128*\000\000\004\016\002\000\000 \000\000\000\000\016\000\000\000\000\000\t\002 cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\224\000\128\b\000\000\000 \000\000\000\000\000\000\000\000\002\000\000\000@\000 \001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\001\000\b\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\018\000E\000\016@)\012\000\b\128\007`\000\b\000\000 \004\004\000\002\006\004\000\000\000 \000\000\000\000\000\132\128\017@\004\024\nC\128\002 \001\152\000\002\000\000$\000\138\000 \128R\024\000\017\000\012\192\000\016\000\001 \004P\001\004B\144\192`\200\000f\000@\128\016\000\000\000\000\000\000\000\000\000\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\128\001\000\000\000\000\000@\000\000\000\000\000\000\000\000\012\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000`\000\000\000\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\000\024\b\001\000\000\001\001\000\000\000\b\000\000\000\000\000\001 \004P\001\004\n\144\224\000\200\000f\000\000\128\016\002\000@@\000 `@\000\000\002\000\000\000\000\000\b\000\000\000\000\000\128\000\b\000\000\000\004\000\000\000\000\001\128\128\016\000\000\016\016\000\000\000\128\000\000\000\000\000\018\000E\000\016@\169\014\000\012\128\006`\000\b\001\000\144\002(\000\130\001H`\000D\0003\000\000@\b\004\128\017@\004\016\nB\000\002 \001\152\000\002\000@\024\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\128\000\b\000\000H\001\020\000A\000\1640\000\"\000\025\128\000 \004\002@\b\160\002\b\005!\000\001\016\000\204\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\004\000\000\000\000\000\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\016\000\001\000\000\t\000\"\128\b \020\134\000\004@\0030\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000^\221\145\002\011\248\169\000\004\193\192\233\199\005\129A\161\159\194E\171\021[\249\153\232\n\003\238\005\000\0308\023\183d@\130\254*@\0010p:q\193`Phg\240\145j\197V\254fz\002\128\251\129@\007\142\000\024\b\001\001\000\001\001\004\000\000\b\000\000\000\000\000\000\192@\b\000\000\b\b \000\000@\000\000\000\000\000\006\002\000@\000\000@@\000\000\002\000\000\000\000\000\000H\001\020\000A\002\1648\000\"\000\025\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\192\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\000\016\000\000\000\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\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\144\002(\000\130!Hp0D\000;\000 @\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 $P\001\004\002\144\192\000\136\000f\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000A\000\1640\000\"\000\025\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000E\000\016D)\014\006\b\128\007`\004\b\000\000\"\000\000\004\000\004\000\024\000\000\000@\000\000\000\000\001\016\000\000\000\000 \000\192\000\000\002\000\000\000\000\000\b\128\000\000\000\001\000\002\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000@\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\194\001Hp\000D\000;\000\000\192\000\003\000\0000\000\0000\184P\000 \000\000\000\000\000\000\000\000\000\000\001\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\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\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000@\000\000\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\000\000\b\128\000\000\000\000\128\000\002\000\000\000\000\001\000\000\000D\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\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\004@\000\000\000\000@\000\001\000\000\000\000\000\128\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\000\000\000\000\000\000\000\000\000\000\128\000 \016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\003\000\000\003\011\132\000\002\000\000\000\000\000\000\002\192(\160\002\012\r!\192\001\144\000\204\000\129\b \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\176\n(\000\130\003Hp\000d\0003\000 B\b\001\016\000\000\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\001 \004P\001\004\002\144\224\000\136\000f\004\000\132\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\000\000\000\000\000\000\128\000\002@\b\160\002\b\005!\192\001\016\000\204\000\001\000\000\018\000E\000\016@)\012\000\b\128\006`\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\0000\000\0000\184P\000 \000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\128\000\000\000\192\000\012\000\000\012.\020\000\b\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\003\000\000\003\011\132\000\002\000\000\000\000\000\000\002\192\b\160\002\b\r!\192\001\144\000\204\000\129\b \022\001E\000\016`i\014\000\012\128\006`\004\bA\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\0000\000\0000\184@\000 \000\000\000\000\000\000,\000\138\000 \128\210\028\000\025\000\012\192\b\016\130\001`\020P\001\006\006\144\224\000\200\000f\000@\132\016\t\000\"\128\b \020\135\000\004@\0030\000\004\000\000H\001\020\000A\000\1640\000\"\000\025\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\240\002/\001\130\006\031H\000D\0000\000\000@\000\003\000\000\018`\1300\000\128\016\000\000\000\000\000\b\000\024\000\000\146\004\017\128\004\000\128\000\000\000\000\000@\000\192\000\004\144 \140\000\000\004\000\000\000\000\000\002\000\006\000\000$\128\004`\000\000 \000\000\000\000\000\016\000\016\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\002@\b\160\130\b\000!\128\001\000\000\236\000\137\000 \012@\000\240 \000\194\225@\000\128\b\000\128\000@\000`\000'\001\000\006\023\b\000\004\000\000\000\000\002\128\000\000\000\000\000 \016\000\000\000\000\000\000\000\000\000\000\000\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\000Y\001\020\000A\002\1644\000\"\0009\128\016 \004\002@\b\160\003\b\005!\192\001\016\000\204\000\131\b \018\000E\000\016@)\014\000\b\128\006`\004\bA\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\017@\004\016\nC\000\002 \001\152\001\002\016@\b\128\000\000\000\001\000\002\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000A\000\0040\000 \000\025\128\016 \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\004\128\017@\004\016\nC\128\002 \001\216\001\002\000@\b\128\000 \000\001\000\002\128\000\000\016\001\000\000\128\000D\000\000\000\000\b\000\020\000\000\000\128\b\000\004\000\000\000\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\017@\006\016\nC\128\002 \001\152\001\006\016@$\000\138\000 \128R\028\000\017\000\012\192\b\016\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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 \004P\001\004\002\144\192\000\136\000f\000@\128\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\002\000\000\016\000 \000\000\001\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\"\000\000\000\000\004\000\b\000\000\000@\000\000\002\000\004\128\017@\004\016\000C\000\002\000\001\152\000\002\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\018\000E\004\016@\001\012\000\b\000\007`\004H\001\000b\000\007\129\000\006\023\n\000\004\000@\004\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\138\000 \128\002\024\000\016\000\012\192\b\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000A\000\1640\000\"\000\025\128\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\"\000\000\128\000\004\000\b\000\000\000@\000\000\002\000\001\016\000\000\000\000 \000@\000\000\002\000\000\000\016\000$\000\138\000 \128\002\024\000\016\000\012\192\000\016\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \000\132\000\004\000\0030\000\004\000\000\016\000\000\002\000\000\000\b\000\000\000\000\000\000\000\128\000\128\000\000\016\000\000\000@\000\000\000\000\000\000\000\000\004\000\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\000\004\128\017@\004\016 C\000\002\000\001\152\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000A\002\0040\000 \000\025\129\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\000\b\000\128\000\000\002\000\000\000\000\000\000\000\000\000 \000\000\004\000\002\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000\016\000\128\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\001 \004P\001\004\000\016\192\000\128\000v\000\004\128\000\002\000@@\000 `@\000\000\002\000\000\000\000\000\bH\001\020\000A\128\0048\000 \000\025\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\000\b\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\000\000\000\000\000\000 \000\000\000\000\000@\000\020\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \004P\001\004\b\016\192\000\128\000f\004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\004\000\128\128\000@\192\128\000\000\004\000\000\000\000\000\016\144\002(\000\131\000\bp\000@\0003\000\000@\b\004\128\017@\004\016\000B\000\002\000\001\152\000\002\000@\024\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\016\002\002\000\001\003\002\000\000\000\016\000\000\000\000\000B@\b\160\002\012\000!\192\001\000\000\204\000\001\000 \018\000E\000\016@\001\b\000\b\000\006`\000\b\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\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\t\000\"\128\b \000\134\000\004\000\0030 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\016\016\000\b\024\016\000\000\000\128\000\000\000\000\002\018\000E\000\016`\001\014\000\b\000\006`\000\b\000\000\144\002(\000\130\000\b`\000@\0003\000\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\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000@@@ `A\000\000\002\000\000\000\000\000\000\016\002\002\000\001\003\002\b\000\000\016\000\000\000\000\000\000\128\016\016\000\b\024\016\000\000\000\128\000\000\000\000\002\018\000E\000\016`\001\014\000\b\000\006`\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000 \000 \000\192\000\000\002\000\000\000\000\000\b\128\000\000\000\001\000\006\000\000\000\016\000\000\000\000\000D\000\000\000\000\b\000\016\000\000\000\128\000\000\000\000\t\000\"\128\012 \000\135\000\004\000\0030\000\012\000\000\136\000\000\002\000\001\000\012\000\000\000\000\000\000\000\000\004\000\000\000\016\000\b\000`\000\000\000\000\000\000\000\000 \000\000\000\000\000@\003\000\000\000\000\000\000\000\000\001\000\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\002\000\000\000\000\000\000\000\000\000\128\000\004\144\000\128\000\000\004\000\000\000\000\000\002\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\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 \000\004\000 \002D\b\000\000\000\000\000\000\000\000\004\000\000@\000\001 B\128\128\000\000\b\001\000\000\000 \000\002\000\000\t\002\016\004\000\000\000@\b\000\000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\b\000\000\000\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\002\000\000 \000\000\128!\000@\000\000\004\000\128\000\000 \000\000\000\000\128@\002\000\000\000\000\000\000\000\000\001\000\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\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\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\002\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\128\000\b\000\000 \bp\016\000\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\128\004\000\000\000\000\000\000\000\000\002\000\000\001\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000 \000\000\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\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\004\000\000\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\000\001\000\000\016\000\000@\016\192 \000\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\002\000\016\001\"\012\000\000\000\000\000\000\000\000\000\128\000\016\000\128\t\016 \000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\016\000\000\000\000\000\000\001\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\b\000\000\000\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\000\000\002\000\000@\002\000$@\128\000\000\000\000\000\000\000\0000\000\003\128\128\003\011\132\000\002\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000 \000\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\003\000\0008\b\0000\184@\000 \000\000\000\000\000\000\000\000\b\000\000\000\000\004\000\000\000\000\000\002\000\000\000\000\000@\000\000\000\000 \000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\n\160\002\b\133!\192A\016\000\236\000\129\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\016\000\000\000\b\000\001\000\b\000\145\002\000\000\000\000\000\000\000\000\001 \005P\001\004B\144\224 \136\000v\000@\128\016\b\000\000\128\000\002\000\135\001\000\000\000\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\028\004\000\024\\`\000\016\000\000\000\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\b\000\000\000\000\003\000\0008\b\0000\184@\000 \000\000\000\000\000\000 \000\002\000\000\b\002\028\012\000\000\000@\b\000\000\001\000\000\016\000\000@\016\192 \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\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\004\001\012\002\000\000\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\002\000\000\b\002\016\004\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \020\135\000\004@\0030\000\004\000\128H\001\020\000A\000\164 \000\"\000\025\128\000 \004\004\000\000\000\000\000\b\000`\000\000\000\000\000\000\000\000 \000\000\000\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000@\000\b\000@\004\136\016\000\000\000\000\000\000\000\000\t\000\"\128\b \020\135\000\004@\0030\000\004\000\128H\001\020\000A\000\164 \000\"\000\025\128\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\001\000\000\000\000\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000\000\000\016\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\002\000\000\000\000\000\000\000\000\000\000\000\000\000\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\b\000\0000\000\003\128\144\003+\132\000\002\000\000\000\000\000\000\002\192*\160\002\012\b!\192\001\016\000\236\000\003\000 \012\000\000\192\000\000\194\225\000\000\128\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\0008\t\0002\184@\000 \000\000\000\000\000\000\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\160\000\000\000@\000\000\000\000 \000\000\000\000\000\016\004\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\003\128\144\003+\132\000\002\000\000\000\000\000\000\001\128\000\024\000\000\024\\ \000\016\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000`\000\007\001 \006W\b\000\004\000\000\000\000\000\000\005\128U@\004\024\016C\128\002 \001\216\000\002\000@,\002\170\000 \192\130\028\000\017\000\014\192\000\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000*\128\b \000\135\000\004\000\003\176\000\004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000E\000\016@\001\012\000\b\000\006`\000\b\001\000\144\002(\000\130\000\b@\000@\0003\000\000@\b\b\000\000\000\000\000\016\000\192\000\000\000\000\000\000\000\000@\000\000\000\000\000\128\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\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\128\000\028\004\128\025\\ \000\016\000\000\000\000\000\000\018\000E\000\016@\001\012\000\b\000\006`\000\b\001\000\144\002(\000\130\000\b@\000@\0003\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \000\132\000\004\000\0030\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\t\000\"\128\b \000\134\000\004\000\0030\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\b\160\002\b\000!\000\001\000\000\204\000\001\000 \b\000\000I\000\b\192\002\000@\000\000\000\000\000 \000@\000\002H\000F\000\000\002\000\000\000\000\000\001\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000$\000\138\000 \128R\024\000\017\000\014\192\b\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \020\134\000\004@\0030\002\004\000\128H\001\020\000A\000\164 \000\"\000\025\128\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\144\002(\000\130\000\b@\000@\0003\000\000@\b\002\000\000\018@\0020\000\128\016\000\000\000\000\000\b\000\016\000\000\146\000\017\128\000\000\128\000\000\000\000\000@\000\000\000\000\000\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\0001\000\003\192\128\003\011\133\000\002\000 \002\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000E\000\016@\001\012\000\b\000\006`\004\b\001\000\144\002(\000\130\000\b@\000@\0003\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\000\000\000\000\000\000\000\000\b\128\000\000 \000\016\000\192\000\000\000\000\000\000\000\000@\000\000\000\000\000\128\006\000\000\000\000\000\000\000\000\002\000\000\000\000\000\004\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\001\138@\020$\001\024\018+\000\016\005 \000\002\130\000\004\000\000\128\004\000\200\129\000\000\001\000\000\000\000\000\000\128\000\b\000\000$\bP0\000\000\001\000 \000\000\004\000\000@\000\001 B\001\128\000\000\b\001\000\000\000 \000\002\000\000\b\002\016\012\000\000\000@\b\000\000\002\000\000\000\000\b\004\000 \000\000\000\000\000\000\002\000\000\000\000\000\000@ \001\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\144\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\004\000\000\016\0040\024\000\000\000\128\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\128@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\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\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\016\000\001\000\000\004\001\014\006\000\000\000 \004\000\000\000\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$\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\016\000\000@\002\000\000\000\000\000\000\000 \000\000\000\000\128\000\002\000\016\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\197 \n\018\000\140\t\021\128\b\002\144\000\001A\000\007\000\000p\016\000ap\128\000@\000\000\000\000\000\000\000\000\000\000\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\b\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\b\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000b\144\005\t\000F\004\138\192\004\001H\000\004\160\128\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\128!\128\192\000\000\004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\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\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\002\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\024\164\001B@\017\129\"\176\001\000R\000\000( \000\224\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\000\000\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\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\001\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\184@\017`\163\127\018}\000@}\000\160\000\199\001\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\128\000\b\000\000 \b`0\000\000\001\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\000\b\001\145\006\000\000\002\000\000\000\000@\000@\000\b\000@\012\1360\000\000\016\000\000\000\000\000\002\000\000@\002\000d@\128\000\000\128\000\000\000\000\000\016\000\002\000\016\003\"\004\000\000\004\000\000\000\000\000\001\136A\0162\001\024\018m\000\016\005\000\000\000\130\002\246\236\136\016_\197H\000&\014\007N8,\n\r\000b\016D\b\000F\004\155@\004\001@\000\000 \128\003\016\130 @\0020$Z\000 \n\000\000\001\004\000\024\132\001\002\000\017\129\"\208\001\000P\000\000\b \000\000\000\000\000\000\000\000@\000@\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\128\000\128\000\000\000\000\000\000@\000\000\000\000\000\000\000\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\002\000\000\000\001\000\000 \001\0002 @\000\000@\000\000\000\000\000\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\016\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\000\000\000\000\000\000\000\000\001\138@\020$\001\024\018k\000\016\005\000\000\000\130\000\012R\000\161 \b\192\145X\000\128(\000\000\004\016\000b\144\005\t\001F\004\138\192\004\001@\000\000 \128\001\000\000 \001\0002 @\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\002\000@\000\b\000@\012\136\016\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000yIV\160\213\019\166\127x\"\000\185\148\016x\212\001\136@\017\000\160\024\0189\000\000\005\000\160\000\198\002\030{w\175\245|\235\159\223\253\184?\127m\255\247\208\243\219\189\127\171\231\\\254\255\237\193\251\251o\255\190\007\148\149j\rQ:g\247\130 \011\153A\007\141@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001T\000A\016\1648\024\"\000\025\128\016`\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002\168\000\130!Hp0D\0003\000 \192(\000\000\000\000\000\000\000\000\000\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 \005P\001\004B\144\224`\136\000f\000A\128P\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\001\000\000\000\000\128\000\016\000\128\025\016 \000\000 \000\000\000\000\000\018\000U\000\016D)\014\006\b\128\006`\004\024\005\000b\016D\b\000F\004\139@\004\001@\000\000 \128\003\016\128 @\0020$Z\000 \n\000\000\001\004\000\000\000\000\000\000\000\000\b\000\b\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\b\000\000\000\000\001\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\028\004\128\025\\ \000\016\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\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\000@\000\001\000C\129\128\000\000\b\001\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\002\000\134\003\000\000\000\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\016\000\128\025\016 \000\000 \000\000\000\000\000\016\000\001\000\000\004\001\014\006\000\000\000 \004\000\004\000\128\000\b\000\000 \b`0\000\000\001\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\001\192@\001\133\198\000\001\000\000\000\000\000\000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\b\000\000\128\000\002\000\134\003\000\000\000\016\002\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000 \b`0\000\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\000\000\000\000\000\001\000\000\016\000\000@\016\128`\000\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000A\000\1648\000\"\000\025\128\000 \004\001\128\000\028\004\128\025\\ \000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\004\000 \006D\b\000\000\b\000\000\000\000\000\004\128\017@\004\016\nC\128\002 \001\152\000\002\000@\024\164\001B@\017\129\"\176\001\000R\000\000( \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \020\134\000\004@\0030\000\004\000\128H\001\020\000A\000\164 \000\"\000\025\128\000 \004\004\000\000\000\000\000\b\000`\000\000\000\000\000\000\000\000 \000\000\000\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\024\164\001B@\017\129\"\176\001\000R\000\000( \001 \004P\001\004\002\144\192\000\136\000f\000\000\128\016\t\000\"\128\b \020\132\000\004@\0030\000\004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\001H@\000@\0003\000\000@\000\003\016\130 `\0020$\218\000 \n\000\000\001\004\000\024\132\017\002\000\017\129&\208\001\000P\000\000\b \000\196 \136\016\000\140\t\022\128\b\002\128\000\000A\000\006!\000@\128\004`H\180\000@\020\000\000\002\b\000H\001\020\000A\000\1640\0002\000\025\128\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\t\000\"\128\b \020\132\000\004@\0030\000\004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000E\000\016@)\b\000\b\128\006`\000\b\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\017@\004\016\nC\000\002 \001\152\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \004P\001\004\002\144\128\000\136\000f\000\000\128\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\001H`\000@\0003\000\000@\000\004\128\017@\004\016\nB\000\002\000\001\152\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000A\000\164 \0002\000\025\128\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000E\000\016@)\b\000\012\128\006`\000\b\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\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\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\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\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\001 \000\000\000\000\000\000\000\000\002\000\005\000\000\000\000\000\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000M\129\240\006\000\128\128|\002\000@\000X`3\027\132-\022\n7\241#\208\004\007\208\n\000\014p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\016\000\000\000\000\000\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\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\020\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000C\207n\245\254\175\157\243\251\255\183\007\239\237\191\254y\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\016\145K\184>\131\225Xp?\229\192\187\193o\206\030cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000!\231\183z\255W\206\249\253\255\219\131\247\246\223\255<\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\016\243\219\189\127\171\231|\254\255\237\193\251\251o\255\158cp\128\"\193F\254$z\000\128\250\001@\001\142\004$R\238\015\160\248V\028\015\249p.\240[\243\135\128@\000\000\000\000\012\000\020\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000C\207n\245\254\175\157\243\251\255\183\007\239\237\191\254y\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\016\145K\184>\131\225Xp?\229\192\187\193o\206\030cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000!\231\183z\255W\206\249\253\255\219\131\247\246\223\255<\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\016\243\219\189\127\171\231|\254\255\237\193\251\251o\255\158cp\128\"\193F\254$z\000\128\250\001@\001\142\004$R\238\015\160\248V\028\015\249p.\240[\243\135\128\000\000\000\000\000\000\000\000\000\000\000\000$\000\000\000\000\000\000\000\000\000@\000\160\000\000\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\002\030{w\175\245|\239\159\223\253\184?\127m\255\243\204n\016\004X(\223\196\143@\016\031@(\0001\192\132\138]\193\244\031\n\195\129\255.\005\222\011~p\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\001\015=\187\215\250\190w\207\239\254\220\031\191\182\255\249\2307\b\002,\020o\226G\160\b\015\160\020\000\024\224BE.\224\250\015\133a\192\255\151\002\239\005\1918y\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\135\158\221\235\253_;\231\247\255n\015\223\219\127\252\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p!\"\151p}\007\194\176\224\127\203\129w\130\223\156=\015=\187\215\250\190w\207\239\254\220\031\191\182\255\249\2307\b\002,\020o\226G\160\b\015\160\020\000\024\224BE.\224\250\015\133a\192\255\151\002\239\005\1918z\030{w\175\245|\235\159\223\252\184?}-\255\243\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\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\000\000\000\000\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\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\000\000\000\000\000\000\000\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\000\000\002\000\002@\136\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\b1\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000b\016\004\b\000F\004\139@\004\001@\000\000 \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196!\b\128P\012\t\028\128\000\002\128P\000c\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\132\t\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\016\128\"\001@0$r\000\000\n\001@\001\140\004\000\000\000\000\000\000\000\000\000\003\000\000\004\128\000\000\000@\000\000\000\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\136\000\000\000\000\000\000\000\000\004\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\000\000\000\000\000\001\000\000\000\000\000\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\128\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\0000\000\000H\000\000\000\004\000\000\000\000\000\192\017\192\000\000\000\000\000\000\000\016\000\001\016\000\000\000\000\000\000\012\000\b\018\004\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\016\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\000\000 \000\000\000\000\000\000\000\000\000\000\b\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\001\200b\017\248\011\026R->1\005`@\012\150X\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003\020\128(H\n0$V\000 \n\000\000\005\004\000\024\000\001\128\000\001\133\194\000\001\000\000\000\000\000\000\000@\000\000\000\002\004\000\000\000\b\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\138@\020$\005\024\018+\000\016\005\000\000\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\164\001B@Q\129\"\176\001\000P\000\000( \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\141\194\000\139\005\027\248\145\232\002\003\232\005@\0068\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000!\"\151p}\007\194\176\224\127\203\129w\130\223\156<\006!\000@\128\004`H\180\000@\021\000\000\002\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\132\138]\193\244\031\n\195\129\255.\005\222\011~p\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p!\"\151p}\007\194\176\224\127\203\129w\130\223\156<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\018)w\007\208|+\014\007\253\184\023zm\249\195\192\000\b\000>\000\192\016\016\015\128\192\b\000\011\004\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004<\246\239_\234\249\215?\191\251p~\254\219\255\239\128\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\136\031\000`\b\b\007\192\160\004\000\005\130\003\000\000\004\000\000\000\000\000\000\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\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\004\000\128\000\000\128\130\000\000\004\000\000\000\000\000\000` \004\000\000\004\004\000\000\000 \000\000\000\000\000\000\000\000\000\000\000 \000\128\001\000\000\000\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\000\b\000\b\0000\000\000\000\128\000\000\000\000\002 \000\000\000\000@\001\128\000\000\004\000\000\000\000\000\017\000\000\000\000\002\000\004\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000@\000\128\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\028\000\001\192@\001\133\194\000\001\000\000\000\000\000\000\000\000\000\000\000\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\0000\000\003\128\128\003\011\132\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000 \000\000\000\001\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\016\000\000\000\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\016\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\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\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\138\000 \128R\024\000\025\000\012\192\000\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\020\187\131\232>\021\135\003\254\\\011\188\022\252\225\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\001\000 \000 \128\000\001\000\000\000\000\000\000\024\b\001\000\000\001\001\004\000\000\b\000\000\000\000\000\000\192@\b\000\000\b\b\000\000\000@\000\000\000\000\000\000\000\b\000\000\000@\001\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\016\016\000\b\024\016\000\000\000\128\000\000\000\000\002\000\000\016\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\000\000\000\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\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\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\136@\016 \001\024\018-\000\016\005@\000\000\138\002\018)w\007\208|+\014\007\252\184\023x-\249\195\208\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\016\128 @\0020$Z\000 \n\128\000\001\020\004$R\238\015\160\248V\028\015\249p.\240[\243\135\128\000\017\000|\001\128 \031\000\128\016\000\031\b\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\002\002\000\001\003\002\000\000\000\016\000\000\000\000\000@\000\002\000\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 \004\004\000\002\006\004\000\000\000 \000\000\000\000\000\128\000\004\000\000\b\000\000\128\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\001\000\000\b\000\000\016\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\002@\b\160\002\b\021!\192\001\016\000\204\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000` \004\000\000\004\004\016\000\000 \000\000\000\000\000\003\001\000 \000\000 \000\000\001\000\000\000\000\000\000$\000\138\000 \129R\028\000\017\000\012\192\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \020\134\000\004\000\0030\000\004\000\000H\001\020\000A\000\164 \000 \000\025\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\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\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\128\000\000\000\000\000\006\000\000`\000\000aq\128\000D\000\000@\000\000\0000\000\003\000\000\003\011\132\000\002 \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\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \001\000\000\000\002\000\000\000\004@\000\000\000\000\000\003\000\0000\000\0000\184@\000\"\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\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\000\000\000\000\000\000\000\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000@\000\000\b\000\000\000\000\000\128\000\000\001\000\000\000\000\000\000\000@\000\000\000\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\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\001\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\016\000\000\000\000\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\001Hp\000D\0003\000 @\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\b\000\000@\000\128\000\000\004\000\000\000 \000\017\000\000\000\000\002\000\004\000\000\000 \000\000\001\000\000\136\000\000\000\000\016\000 \000\000\001\000\000\000\000\000\018\000E\000\024@)\014\000\b\128\007`\000\024@\000\"\000\000\000\000\004\000\b\000\000\000@\000\000\000\000\004\128\017@\004\016\nC\128\002 \001\152\000\002\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \004P\001\004\002\144\192\000\136\000f\000\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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 \004P\001\132\002\144\224\000\136\000v\000\001\132\000\002 \000\000\000\000@\000\128\000\000\004\000\000\000\000\000H\001\020\000A\000\1648\000\"\000\025\128\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\144\002( \130\001H`\000D\000;\000 @\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\b\128\000 \000\001\000\002\000\000\000\016\000\000\000\128\000D\000\000\000\000\b\000\016\000\000\000\128\000\000\004\000\t\000\"\128\b \020\134\000\004@\0030\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\144\002\168\000\131\005Hp\000D\000;\000\004@\b\128\000\004\000\000\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \004P\001\004\002\144\192\000\136\000f\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\016\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\000\000\000\000\004\000\000\000\000\000\128\000\000\000\000\000L\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\b\000\000\000\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\002\000\000 \000\000\128!\000\192\000\000\004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\132\001\002\000\017\129\"\208\001\000T\000\000\b\160!\"\151p}\007\194\176\224\127\203\129w\130\223\156=\t\020\187\131\232>\021\135\003\254\\\011\188\022\252\225\2241\b\002\004\000#\002E\160\002\000\168\000\000\017@BE.\224\250\015\133a\192\255\151\002\239\005\1918y\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\016@\004\016\000B\000\002\000\001\144\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\003\000\004\000\000\000 \000\000\000\000\000\000\"\001\248\003\002@\000>!\000 @\012\020X\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\004\000\000\000\002\000\000\000\000\000`\000\000\000\000\000\000\000\000\000\000\000\004\000?\000`H\000\007\196 \004\b\001\130\139\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004@\000\000\000\000\128\001\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192@\b\000\000\b\b\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\128\128\000@\192\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\128\000\000\000\016\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012B\000\129\000\b\192\145h\000\128*\000\000\004\016\000\000\000\000\000\000\000\000\016\000\000\000\002\000\t\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000 \000\000\000\000\006\000\000\000\000\000\000\000\000\000\000g\240\144b\197V\254fz\002\160\251\145@\003\142\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\001d$\016\001\004\014\144\128\128\136\000\228\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\016@\004\016\nB\000\002 \001\144\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\b \002\b\005!\000\001\000\000\192\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\127\t\006,Uo\230g\160*\015\185\020\0008\2243\248H1b\171\1273=\001P}\200\160\001\199\000\018\000A\000\016@)\b\000\b\128\006@\000\b\000\000\144\002\b\000\130\001H@\000D\0002\000\000@\000\000\000\000\000\000\000\000\000\000\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 \004\016\001\004\002\144\192\000\136\000d\000\000\128\000\t\000 \128\b \020\132\000\004@\003 \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\144\002\b\000\130\001H`\000D\0002\000\000@\000\004\128\016@\004\016\nB\000\002 \001\144\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") + (133, "3\248H1b\171\1273=\001@}\200\160\001\199\001\141\194\000\139\133\027\248\147\232\002\003\232\005\000\0068\023\183d@\130\254*@\0010p:q\193`Ph\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\223\235f\245\155\175\252\205\255%C\247\018\162\015<\011\219\178 A\127\021 \000\1528\0298\224\176(4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004X(\223\196\159@\016\031@(\0001\192\189\187\"\004\023\241R\000\t\131\129\211\142\011\002\131C?\132\139V*\183\2433\208\020\007\220\n\000\128 >\128P\000c\128\198\225\000E\130\141\252I\244\001\001\244\002\128\003\028\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004\\(\223\196\159@\016\031@(\0001\192cp\128\"\193F\254$\250\000\128\250\001@\001\142\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\024\220 \b\184Q\191\137>\128 >\128P\000c\128\198\225\000E\130\141\252I\244\001\001\244\002\128\003\028\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\016\128\"\001@0$r\000\000\n\001@\001\140\000 \000\002\001\000\t\002\020\012\000\000\000@\b\000\000\001\000\000\016\000\000H\016\160`\000\000\002\000@\000\000\b\000\000\128\000\002@\132\003\000\000\000\016\002\000\000\0001\b\002\004\000#\002E\160\002\000\168\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\012B?\001cJE\167\198 \172\b\001\146\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\128\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\016\000\000\000@\000\000\000\000\000\000\000\000\012\000\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\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\002\002\000\001\003\002\000\000\000\016\000\000\000\000\000B@\n\160\002\012\021!\192\001\016\000\236\b\025\000 \018\000A\000\016@\001\n\000\b\000\006 \000\b\000\000\144\002\b\000\130\000\b@\000@\0001\000\000@\000\000\000\000\000 \0000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\004\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\000\128\007\224\012\t\000\000\248\132\000\129\000 Q`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\128\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\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\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\128Y\208\004\025\026C\129\131\"\001\216\017\"\017@\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\001\128\000\028\004\b\024\\ \000\016\000\000\000\000\000\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\001\000 \0160 \128\000\001\000\000\000\000\000\000\b\001\001\000\000\129\129\004\000\000\b\000\000\000\000\000\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\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\001\128\128\016\000\000\016\016@\000\000\128\000\000\000\000\000\012\004\000\128\000\000\128\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000g\240\144b\197V\254f\250\002\128\251\137@\003\142\003?\132\131\022*\183\2433\208\020\007\220J\000\028p\000\192\000\004\152 \140\000 \004\000\000\000\000\000\002\000\006\000\000$\129\004`\001\000 \000\000\000\000\000\016\0000\000\001$\b#\000\000\001\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000@\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\018@\0020\000\000\016\000\000\000\000\000\b\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000$\128\004\000\000\000 \000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\b \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\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\016\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\018@\002\000\000\000\016\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\t\000\"\130\b \020\134\000\004@\003\176\002\004\000\1281\000\003\192\128\003\011\133\000\002\000 \002\000\001\000\002@\b\160\003\b\021!\192\001\016\000\204\b\131\b \012@\000\224 \000\194\225@\000\128\b\000\128\000@\000`\000\135\001\002\006\023\b\000\004\000\000\000\001\000\000\133\128]\192\004\025\026C\129\130\"\001\216\001f\017`\024\000\001\128\000\001\133\194\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\006\000\000`\000\000ap\128\000D\000\000@\000\000\000\016\000\128\000\000\001\000\000\000\002 \000\000\000@\000\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\002\246\236\136\016_\197H\000&\014\007N8,\n\r\012\254\018-X\170\223\204\207@P\031p(\000\241\192g\240\145b\197V\254fz\002\128\251\153@\003\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\016\002\002\000\002\002\b\000\000\016\000\000\000\000\128\001\128\128\016\016\000\016\016@\000\000\128\000\000\000\000\000\012\004\000\128\000\000\128\130\000\000\004\000\000\000\000\000\000` \004\000\000\004\004\000\000\000 \000\000\000\000\000\007\001\000 \000\000 \000\000\001\000\000\000\000\000\003\027\132\001\022\n7\241'\208\004\007\208\n\000\012p\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\002\000\000\000@\000 \001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\001\000\b\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\001\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\191\214\239\2517\223\251\255\254N\143\238e\132\014y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\220 \b\184Q\191\137>\128 >\128P\000c\128\198\225\000E\130\141\252I\244\001\001\244\002\128\003\028\0067\b\002,\020o\226G\160\b\015\160\020\000\024\2241\184@\017p\163\127\018}\000@}\000\160\000\199\001\141\194\000\139\005\027\248\147\232\002\003\232\005\000\0068\012n\016\004X(\223\196\143@\016\031@(\0001\192cp\196#\241V\254\164z|\194\250A\192\025\174\176\024\132!\016\n\001\129#\144\000\000P\n\000\012`\024\220 \b\176Q\191\137\030\128 >\128P\000s\129\015=\187\215\250\190w\207\239\254\220\031\191\182\255\249\2307\b\002,\020o\226G\160\b\015\160\020\000\024\224\001\136A\0160\001\024\018m\000\016\005\000\000\000\130\000\012B\b\129\000\b\192\147h\000\128(\000\000\004\016\000b\016D\b\000F\004\139@\004\001@\000\000 \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\132\001\002\000\017\129\"\208\001\000P\000\000\b \000\196 \b\016\000\140\t\022\128\b\002\160\000\000Q\000\006!\002@\128\004`H\180\000@\021\000\000\002\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\000\000\000\000\000\000\000\002\000\000 \000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\006\000\000p\016\000ap\128\000@\000\000\000\000(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\002\000\012\000\004\224 \000\194\225\000\000\128\000\000\000\000P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\0008\b\0000\184@\000 \000\000\000\000\004\000\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\160\000@\000\000\000\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\224 \000\194\225\000\000\128\000\000\000\000\016\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000! \007p\001\006B\144\224`\136\128v\000X\132X\006\000\000p\016\000ap\128\000@\000\000\000\000\000\bH\005\220\000A\144\1648\024\" \029\128\022!\022\001\128\000\024\000\000\024\\ \000\016\000\000\000\000\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\000\000\000\000\000\002\000\000\000\001\000\000\000\000\0000\024@\000\000\000\000\000\000\000\000\024\000\001\192@\129\133\194\000\001\000\000\000\000\000\000\000\192\000\012\000\000\012.\016\000\b\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\003\128\128\003\011\132\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\011\000\187\128\b24\135\003\004D\003\176\002\196\"\1920\000\003\000\000\003\011\132\000\002\000\000\000\000\000\000B\192.\224\002\012\141!\192\193\017\000\236\000\177\b\176\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\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000B@\014\224\002\012\133!\192\193\017\000\236\000\177\b\160\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000!`\023p\001\006F\144\224`\136\128v\000X\132X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\0008\b\0000\184@\000 \000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\128\000\000 \000\000\128\000\000\000\004\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\000\000\004\000\000\000\000\002\000\000\b\000\000\000\000@\128`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\000\000\001\000\000\000\000\000\128\000\002\000\000\000\000\017 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000 \000\000\128\000\000\000\004H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\b\000\000 \000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\003\000\0008\b\0000\184@\000 \000\000\000\000\004\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\001\000\000\000\000\000\000\000\000\000\000\000\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\136\000\000\000\000\b\000\000\000\004\000\000\000\000\000\000\004@\000\000\000\000\000\000\000\000 \000\000\000\000\012B\000\129\000\b\192\145h\000\128*\000\000\004\016\000b\016\004\012\000F\004\154@\004\001@\000\000 \128\003\016\128 @\0020$\210\000 \n\000\000\001\004\000\024\132\001\002\000\017\129\"\144\001\000P\000\000\b \000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\138F\212$\005\024\018k\000\144\005(\0166\170\128\000\002\000\001\000\b\000\000\b\000\000 \000\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\004\197#j\018\002\140\t7\128H\002\180\004\027U@\002\000\000\000\000\000@\b\160\000\000\000\000\000\000\000\0001\bB\004\000#\002E\160\002\000\168\000\000\144@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012B\000\129\128\b\192\147h\000\128*\000\000\004\016\000b\016\004\b\000F\004\155@\004\001P\000\000 \128\003\016\128 @\0020$Z\000 \n\128\000\001\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\027\000\000\016\000\001\000\002\000\000\160\000\152\162\0001\b\002\004\000#\002E\160\002\000\168\000\000\016@\b\000\006\192\000\004\000\000@\000\128\000(\000&(\128\012B\000\129\000\b\192\145h\000\128*\000\000\004\016\002\000\001\176\000\001\000\000\016\000 \000\n\000\t\138 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\152\132m\002\000Q\129&\208\t\000V\128\002j\168\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\b\218\004\000\163\002M\160\018\000\173\000\004\213P\001\200b\017\248\011\026R->1\005`@\012\150X\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\196 \b\016\000\140\t\020\128\b\002\128\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\004\000\000\000\000\000\002`\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006!\000@\128\004`H\180\000@\021\000\000\002\b\001\000\000\216\000\000\128\000\b\000\016\000\005\000\004\197\016\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\000\000\016\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\000\000\003\016\128 @\0020$Z\000 \n\128\000\001\004\000\128\000l\000\000@\000\004\000\b\000\002\128\002b\136\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\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\000\000\000\000\128\000\000\000\000\000H\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196 H\016\000\140\t\022\128\b\002\160\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\000\000\000\002\000\000\000\000\000\001!D\000b\016$\b\000F\004\139@\004\001P\000\000(\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000 \000\000\000\000\000\018\004@\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\b\000\000\001\000\000\000\000\000\000\000\000\000\000\000\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000yI\022\132\193#\166}`2\000\189\128\006\241T\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\b\000\000\128\000\003\000\0008\b\0000\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\004\000\000\000\002\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\b\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\024\132\001\002\000\017\129\"\208\001\000P\000\000\b \000\197 \n\018\000\140\t5\128H\002\144\000\019E`\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\001\136@\016 \001\024\018-\000\016\005@\000\000\130\000\000\000\016\000\000\000\000\002\000\000\000\001\000\0010D\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\000\000\004\000\000\000\000\000\128\000\000\000@\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\002\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014C\016\143\192X\210\145i\241\136+\002\000d\178\192\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\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\196 \b\016\000\140\t\020\128\b\002\128\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\001\136A\0162\t\024\018m\000\016\005@\000\000\130\000\012\004\000\128\128\000\128\130\000\000\004\000\000\000\000 \000` \004\004\000\004\004\016\000\000 \000\000\000\000\000\003\001\000 \000\000 \128\000\001\000\000\000\000\000\000\024\b\001\000\000\001\001\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\0000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000 \004\004\000\002\006\004\000\000\000 \000\000\000\000\000\001\000$ \000\0160 \000\000\001\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\000\000\000\000\000\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\016\000\000\000\000\000\000\000\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\000\000\000\000\000\000\001\000 \000\0160 \000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000! \005P\001\006\002\144\224\000\136\000v\000\b\128\016\001\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\0000\000\001$\000#\000\000\001\000\000\000\000\000\000\128\000\128\000\000\000\000\b\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\007\129\000\006\023\b\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\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\000! \005P\001\006\002\144\224\000\136\000v\000\b\128P\006\000\000p\016\000ap\128\000@\000\000\000\000\000\bH\001T\000A\128\1648\000\"\000\029\128\018 \020B@\n\160\002\012\005!\192\001\016\000\236\000\145\000 \012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\b\000\000\000\000\003\000\0008\b\0000\184@\000 \000\000\000\000\000\004$\000\170\000 \192R\028\000\017\000\014\192\t\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\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\b\000\000\004\000\128\128\000@\192\128\000\000\004\000\000\000\000\000\016\144\002\168\000\131\001Hp\000D\000;\000\004@\b\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\000\000\128\000\000\000@\000\000\000\000\004\000\000\000\000\000\000\000\000\000\001\t\000*\128\b0T\135\000\004@\003\176 d\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\0160 \000\000\001\000\000\000\000\000\004$\000\170\000 \192R\028\000\017\000\014\192\001\016\002\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\001\t\000*\128\b0\020\135\000\004@\003\176\000D\000\128\000\000\000\000\000\000\000\000\000\000\000\004\001\001\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\018\000U\000\016`\169\014\000\b\128\007`@\136\001\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004$\000\170\000 \193R\028\000\017\000\014\192\129\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\000*\128\b0\020\135\000\004@\003\176\000D\000\128\b\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\016\144\002\168\000\131\001Hp\000D\000;\000\004@\b\128\000\004\000\000\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\001\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\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\001\128\128\016\000\000\016\016\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\144\002\168\000\131\005Hp\000d\000;\000\004\192\b\007\001\004 \000\000 \000\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\001\000\000\000\b\000 \000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\002\002\000\001\003\002\000\000\000\016\000\000\000\000\000@\000\002\000\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\004$\000\170\000 \193R\028\000\025\000\014\192\1290\002\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\002\000\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\2241\184@\145`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000@\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\001\000\b\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\024\132\001\016\n\001\129#\144\000\000P\n\000\012` \000\002 \000\000\000\000\000\000\024\000\016$\t\000\000\006!\000D\002\128`H\228\000\000\020\002\128\003\024\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\001\136@\017\016\160\024\018y\000\000\005\000\160\000\198\000\012B\000\136\005\000\192\147\200\000\000(\005\000\0060\000b\016\004@(\006\004\142@\000\001@(\0001\128cp\128\"\225F\254$\250\000\128\250\t@\001\142\003\027\132\001\022\n7\241'\208\004\007\208J\000\012p\024\220 \b\176Q\191\137\030\128 >\130P\000c\128\198\225\000E\194\141\252I\244\001\001\244\002\128\003\028\0067\b\002,\020o\226O\160\b\015\160\020\000\024\2241\184@\017`\163\127\018=\000@}\000\160\000\199\000\012B\000\129\128\b\192\147h\000\128*\000\000\004P\000b\016\004\b\000F\004\155@\004\001P\000\000\"\128\003\016\128 @\0020$Z\000 \n\128\000\001\020\000\024\132\001\002\000\017\129\"\208\001\000T\000\000\b \004\000\000\000\000\002\000\000 \000\000\000\000\000\018\004@\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\0001H\002\134\128#\002M`\002\000\160\000\000\016@\001\138@\020$\001\024\018k\000\016\005\000\000\000\130\000\012R\000\161 \b\192\145X\000\128(\000\000\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\020\128(H\n0$V\000 \n@\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\016\000\000\000\000\000\000\000\000\b\000\0000\000\003\000\000\003\011\132\000\002\000\000\000\000\000\000\000\128\000\000\000\004\b\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\003\016\128 `\0020$\218\000 \n\128\000\001\020\000\024\132\001\002\000\017\129&\208\001\000T\000\000\b\160\000\196 \b\016\000\140\t\022\128\b\002\160\000\000E\001\t\020\187\131\232>\021\135\003\254\\\011\188\022\252\225\2241\b\002\004\000#\002E\160\002\000\168\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000b\016\004\012\000F\004\155@\004\001P\000\000 \128\003\016\128 @\0020$\218\000 \n\128\000\001\004\000\024\132\001\002\000\017\129\"\208\001\000T\000\000\b \000\000\000\000\000\000\000\000 \000@\000\016\000\018\004@\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\0001\b\002\006\000#\002M\160\002\000\168\000\000\016@\001\136@\016 \001\024\018m\000\016\005@\000\000\130\000\012B\000\129\000\b\192\145h\000\128*\000\000\004\016\000\000\000\000\000\000\000\000\016\000\000\000\b\000\t\002 cp\128\"\193F\254$z\000\128\250\001@\001\142\000\024\132\001\016\n\001\129#\144\000\000P\n\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\030{w\175\245|\235\159\223\253\184?\127m\255\247\192 \000\000\000\000\006\000\142\000\000\000\000\000\000\000\000cp\196#\241V\254\164z|\194\250A\192\025\174\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\220!\b\176Q\191\137\030\128 >\128P\000c\128\198\225\bE\130\141\252H\244\001\001\244\002\128\003\028\0000\016\002\002\000\002\002\b\000\000\016\000\000\000\000\000\001\128\128\016\000\000\016\016@\000\000\128\000\000\000\000\000\012\004\000\128\000\000\128\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\004\000\016\000\000\000\000\000\000\128\000\001\000 \000\0160 \000\000\001\000\000\000\000\000\004\000\000 \000\000@\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\198\225\bE\130\141\252H\244\001\001\244\002\128\003\028\0067\bB,\020o\226G\160\b\015\160\020\000\024\224\001\136B\016 \001\024\018-\000\016\005\000\000\000\130\000\000\000\000\000\000\000\000\002\000\000\000\001\000\0010D\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000@\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\196 \b\136P\012\t<\128\000\002\128P\000c\000\006!\000D\002\128`I\228\000\000\020\002\128\003\024\0001\b\002 \020\003\002G \000\000\160\020\000\024\192BE.\224\250\015\133a\192\255\183\002\239M\1918x\012B\000\136\005\000\192\145\200\000\000(\005\000\0060\016\243\219\189\127\171\231\\\254\255\237\193\251\251o\255\190\000\000\000\000\000\000 \000P\000\000\000\000\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\196 \b\024\000\140\t6\128\b\002\160\000\000E\000\006!\000@\128\004`I\180\000@\021\000\000\002(\0001\b\002\004\000#\002E\160\002\000\168\000\000\017@BE.\224\250\015\133a\192\255\151\002\239\005\1918y\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\016\243\219\189\127\171\231\\\254\255\237\193\251\251o\255\158\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000\000\000\000\200\000\000\000\000\b\000\000\000\004\000\000\000\000\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\000\0002\000\000\000\000\002\000\000\000\001\000\000\128\000\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\000\000\012\128\000\000\000\000\128\000\000\000@\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012B\000\136\005\000\192\145\200\000\000(\005\000\0060\016\243\219\189\127\171\231\\\254\255\237\193\251\251o\255\190\000\000\000\000\000\000\016\000\000\000\000\000\000\000\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\020\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\018)w\007\208|+\014\007\252\184\023x-\249\195\204n\016\004X(\223\196\143@\016\031@(\0001\192\135\158\221\235\253_:\231\247\255n\015\223\219\127\252\244$R\238\015\160\248V\028\015\251p.\244\219\243\135\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\001\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\016\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\018)w\007\208|+\014\007\252\184\023x-\249\195\204n\016\004X(\223\196\143@\016\031@(\0001\192\132\138]\193\244\031\n\195\129\255.\005\222\011~p\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015=\187\215\250\190u\207\239\254\220\031\191\182\255\249\232H\165\220\031A\240\1728\031\246\224]\233\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007?\214\239\031\170\255\247?\223\253w\254\250[\255\247\175n\200\129\005\252T\128\002`\224t\227\130\192\160\208\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000b\016\004\b\000F\004\155@\004\001@\000\000 \128\003\016\128 @\0020$Z\000 \n\000\000\001\004\000\000\000\000\000\000\000\000\004\000\000\000\002\000\002`\136\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\001\000\001 D\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\132\001\002\000\017\129\"\208\001\000T\000\000\b \000\000\000\000\000\000\000\000 \000\000\000\016\000\018\004@\006!\000@\128\004`H\180\000@\021\000\000\002\b\000\000\000\000\000\000\000\000\b\000\000\000\004\000\004\129\016\001\136@\016 \001\024\018-\000\016\005@\000\000\130\000\000\000\000\000\000\000\000\002\000\000\000\001\000\001 D\000\000\000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\000\144\"\0001\b\002\004\000#\002E\160\002\000\168\000\000\016@\000\000\000\000\000\000\000\000@\000\000\000 \000$\b\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\001H`\000d\0003\000\000@\b\189\187\"\004\023\241R\000\t\131\129\211\142\011\002\131C?\132\139V*\183\2433\208\020\007\220\n\000\224P\001\227\129{vD\b/\226\164\000\019\007\003\167\028\022\005\006\134\127\t\022\172Uo\230g\160(\015\184\020\000x\224\001\128\128\016\016\000\016\016@\000\000\128\000\000\000\000\000\012\004\000\128\000\000\128\130\000\000\004\000\000\000\000\000\000` \004\000\000\004\004\000\000\000 \000\000\000\000\000\004\128\017@\004\016*C\128\002 \001\152\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\012\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000`\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\001\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\t\000\"\128\b\"\020\135\003\004@\003\176\002\004\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\002E\000\016@)\012\000\b\128\006`\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\017@\004\016\nC\000\002 \001\152\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \004P\001\004B\144\224`\136\000v\000@\128\000\002 \000\000@\000@\001\128\000\000\004\000\000\000\000\000\017\000\000\000\000\002\000\012\000\000\000 \000\000\000\000\000\136\000\000\000\000\016\000 \000\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\128\000\000\000\000\000\000\000\000\000\000\001\000\000\000\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\t\000\"\128\012 \020\135\000\004@\003\176\000\012\000\0000\000\003\000\000\003\011\133\000\002\000\000\000\000\000\000\000\000\000\000\000\016\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\004\000\000\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\004\000\000\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000\000\000\000\136\000\000\000\000\b\000\000 \000\000\000\000\016\000\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\016\000\004\002\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\000\000\000\004\000\000\016\000\000\000\000\b\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\002\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\0000\000\0000\184@\000 \000\000\000\000\000\000,\002\138\000 \192\210\028\000\025\000\012\192\b\016\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\000\162\128\b 4\135\000\006@\0030\002\004 \128\017\000\000\000\000\002\000\004\000\000\000 \000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\004\000\000\018\000E\000\016@)\014\000\b\128\006`@\b@\000 \000\000\000\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\b\000\000$\000\138\000 \128R\028\000\017\000\012\192\000\016\000\001 \004P\001\004\002\144\192\000\136\000f\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\003\000\000\003\011\133\000\002\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\b\000\000\000\012\000\000\192\000\000\194\225@\000\128\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\0000\000\0000\184@\000 \000\000\000\000\000\000,\000\138\000 \128\210\028\000\025\000\012\192\b\016\130\001`\020P\001\006\006\144\224\000\200\000f\000@\132\016\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\003\000\000\003\011\132\000\002\000\000\000\000\000\000\002\192\b\160\002\b\r!\192\001\144\000\204\000\129\b \022\001E\000\016`i\014\000\012\128\006`\004\bA\000\144\002(\000\130\001Hp\000D\0003\000\000@\000\004\128\017@\004\016\nC\000\002 \001\152\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\000\000\000\000\000\000\000\000\000\000\000\000\015\000\"\240\024 a\244\128\004@\003\000\000\004\000\0000\000\001&\b#\000\b\001\000\000\000\000\000\000\128\001\128\000\t A\024\000@\b\000\000\000\000\000\004\000\012\000\000I\002\b\192\000\000@\000\000\000\000\000 \000`\000\002H\000F\000\000\002\000\000\000\000\000\001\000\001\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000$\000\138\b \128\002\024\000\016\000\014\192\b\144\002\000\196\000\015\002\000\012.\020\000\b\000\128\b\000\004\000\006\000\002p\016\000ap\128\000@\000\000\000\000(\000\000\000\000\000\002\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\144\017@\004\016*C@\002 \003\152\001\002\000@$\000\138\0000\128R\028\000\017\000\012\192\b0\130\001 \004P\001\004\002\144\224\000\136\000f\000@\132\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000A\000\1640\000\"\000\025\128\016!\004\000\136\000\000\000\000\016\000 \000\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\000\000\000\000\000\000\000\004\128\017@\004\016\000C\000\002\000\001\152\001\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000A\000\1648\000\"\000\029\128\016 \004\000\136\000\002\000\000\016\000(\000\000\001\000\016\000\b\000\004@\000\000\000\000\128\001@\000\000\b\000\128\000@\000\000\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000a\000\1648\000\"\000\025\128\016a\004\002@\b\160\002\b\005!\192\001\016\000\204\000\129\b \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000E\000\016@)\012\000\b\128\006`\004\b\001\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\000\000\000\000\000\000\000\000\b\128\000 \000\001\000\002\000\000\000\016\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000@\000\128\000\000\004\000\000\000 \000H\001\020\000A\000\0040\000 \000\025\128\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\001 \004PA\004\000\016\192\000\128\000v\000D\128\016\006 \000x\016\000ap\160\000@\004\000@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\b\160\002\b\000!\128\001\000\000\204\000\129\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\017@\004\016\nC\000\002 \001\152\001\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\b\000\000@\000\128\000\000\004\000\000\000 \000\017\000\000\000\000\002\000\004\000\000\000 \000\000\001\000\002@\b\160\002\b\000!\128\001\000\000\204\000\001\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\000\b@\000@\0003\000\000@\000\001\000\000\000 \000\000\000\128\000\000\000\000\000\000\b\000\b\000\000\001\000\000\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\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000A\002\0040\000 \000\025\129\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\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\000\004\128\017@\004\016 C\000\002\000\001\152\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\224\000\128\b\000\000\000 \000\000\000\000\000\000\000\000\002\000\000\000@\000 \001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\001\000\b\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\018\000E\000\016@\001\012\000\b\000\007`\000H\000\000 \004\004\000\002\006\004\000\000\000 \000\000\000\000\000\132\128\017@\004\024\000C\128\002\000\001\152\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\128\000\000\000\000 \000\000\000\000\000\000\000\000\006\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\004\000\001@\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000E\000\016@\129\012\000\b\000\006`@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\001\t\000\"\128\b0\000\135\000\004\000\0030\000\004\000\128H\001\020\000A\000\004 \000 \000\025\128\000 \004\001\128\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000 \000\0160 \000\000\001\000\000\000\000\000\004$\000\138\000 \192\002\028\000\016\000\012\192\000\016\002\001 \004P\001\004\000\016\128\000\128\000f\000\000\128\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000 \000\002\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\000\b`\000@\0003\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\001\001\000\000\129\129\000\000\000\b\000\000\000\000\000! \004P\001\006\000\016\224\000\128\000f\000\000\128\000\t\000\"\128\b \000\134\000\004\000\0030\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\016\000\000\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 \004\004\004\002\006\004\016\000\000 \000\000\000\000\000\001\000 \000\0160 \128\000\001\000\000\000\000\000\000\b\001\001\000\000\129\129\000\000\000\b\000\000\000\000\000! \004P\001\006\000\016\224\000\128\000f\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\002\000\002\000\012\000\000\000 \000\000\000\000\000\136\000\000\000\000\016\000`\000\000\001\000\000\000\000\000\004@\000\000\000\000\128\001\000\000\000\b\000\000\000\000\000\144\002(\000\194\000\bp\000@\0003\000\000\192\000\b\128\000\000 \000\016\000\192\000\000\000\000\000\000\000\000@\000\000\001\000\000\128\006\000\000\000\000\000\000\000\000\002\000\000\000\000\000\004\0000\000\000\000\000\000\000\000\000\016\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000 \000\000\000\000\000\000\000\000\b\000\000I\000\b\000\000\000@\000\000\000\000\000 \000\000\000 \000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\002\000$@\128\000\000\000\000\000\000\000\000@\000\004\000\000\018\004(\b\000\000\000\128\016\000\000\002\000\000 \000\000\144!\000@\000\000\004\000\128\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\b\002\016\004\000\000\000@\b\000\000\002\000\000\000\000\b\004\000 \000\000\000\000\000\000\000\000\016\000\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\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\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\b\000\000\128\000\002\000\135\001\000\000\000\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\002\000\000\b\000@\000\000\000\000\000\000\000\000 \000\000\016\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\128\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\000\000\000\000@\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\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\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\016\000\001\000\000\004\001\012\002\000\000\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000 \001\000\018 \192\000\000\000\000\000\000\000\000\b\000\001\000\b\000\145\002\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\001\000\000\000\000\000\000\000\016\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000@\000\000\000 \000\004\000 \002D\b\000\000\000\000\000\000\000\000\003\000\0008\b\0000\184@\000 \000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\002\000\000\000@\000\000\000\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\0000\000\003\128\128\003\011\132\000\002\000\000\000\000\000\000\000\000\000\128\000\000\000\000@\000\000\000\000\000 \000\000\000\000\004\000\000\000\000\002\000\000\000\000\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\000\000\000\000\000$\000\170\000 \136R\028\004\017\000\014\192\b\016\002\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\016\000\000\001\000\000\000\000\128\000\016\000\128\t\016 \000\000\000\000\000\000\000\000\018\000U\000\016D)\014\002\b\128\007`\004\b\001\000\128\000\b\000\000 \bp\016\000\000\001\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\001\192@\001\133\198\000\001\000\000\000\000\000\000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\0000\000\003\128\128\003\011\132\000\002\000\000\000\000\000\000\002\000\000 \000\000\128!\192\192\000\000\004\000\128\000\000\016\000\001\000\000\004\001\012\002\000\000\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\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\016\000\000@\016\192 \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\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\128!\000@\000\000\004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\001Hp\000D\0003\000\000@\b\004\128\017@\004\016\nB\000\002 \001\152\000\002\000@@\000\000\000\000\000\128\006\000\000\000\000\000\000\000\000\002\000\000\000\000\000\004\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\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\004\000\000\128\004\000H\129\000\000\000\000\000\000\000\000\000\144\002(\000\130\001Hp\000D\0003\000\000@\b\004\128\017@\004\016\nB\000\002 \001\152\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\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\001\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\003\000\0008\t\0002\184@\000 \000\000\000\000\000\000,\002\170\000 \192\130\028\000\017\000\014\192\0000\002\000\192\000\012\000\000\012.\016\000\b\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\003\128\144\003+\132\000\002\000\000\000\000\000\000\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\n\000\000\000\004\000\000\000\000\002\000\000\000\000\000\001\000@\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\0008\t\0002\184@\000 \000\000\000\000\000\000\024\000\001\128\000\001\133\194\000\001\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\006\000\000p\018\000ep\128\000@\000\000\000\000\000\000X\005T\000A\129\0048\000\"\000\029\128\000 \004\002\192*\160\002\012\b!\192\001\016\000\236\000\001\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002\168\000\130\000\bp\000@\000;\000\000@\b\000\000\000\000\000\000\000\000\000\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 \004P\001\004\000\016\192\000\128\000f\000\000\128\016\t\000\"\128\b \000\132\000\004\000\0030\000\004\000\128\128\000\000\000\000\001\000\012\000\000\000\000\000\000\000\000\004\000\000\000\000\000\b\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000@\001\000\000\000\000\000\000\000\000\000\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\000\004\000\000\024\000\001\192H\001\149\194\000\001\000\000\000\000\000\000\001 \004P\001\004\000\016\192\000\128\000f\000\000\128\016\t\000\"\128\b \000\132\000\004\000\0030\000\004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\000\b@\000@\0003\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\000\b`\000@\0003\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\138\000 \128\002\016\000\016\000\012\192\000\016\002\000\128\000\004\144\000\140\000 \004\000\000\000\000\000\002\000\004\000\000$\128\004`\000\000 \000\000\000\000\000\016\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\002@\b\160\002\b\005!\128\001\016\000\236\000\129\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\001H`\000D\0003\000 @\b\004\128\017@\004\016\nB\000\002 \001\152\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\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \000\132\000\004\000\0030\000\004\000\128 \000\001$\000#\000\b\001\000\000\000\000\000\000\128\001\000\000\t \001\024\000\000\b\000\000\000\000\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\002\000\000\003\016\000<\b\0000\184P\000 \002\000 \000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \004P\001\004\000\016\192\000\128\000f\000@\128\016\t\000\"\128\b \000\132\000\004\000\0030\000\004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000\000\000\000\000\000\000\000\136\000\000\002\000\001\000\012\000\000\000\000\000\000\000\000\004\000\000\000\000\000\b\000`\000\000\000\000\000\000\000\000 \000\000\000\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\024\164\001B@\017\129\"\176\001\000R\000\000( \000@\000\b\000@\012\136\016\000\000\016\000\000\000\000\000\b\000\000\128\000\002@\133\003\000\000\000\016\002\000\000\000@\000\004\000\000\018\004 \024\000\000\000\128\016\000\000\002\000\000 \000\000\128!\000\192\000\000\004\000\128\000\000 \000\000\000\000\128@\002\000\000\000\000\000\000\000 \000\000\000\000\000\004\002\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000 \016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\t\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\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\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000@\000\001\000C\001\128\000\000\b\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\b\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\004\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\004\000\000\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\000\001\000\000\016\000\000@\016\224`\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\000\000\000\000\000\000\000\004\000\002@\0001\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\001\000\000\004\000 \000\000\000\000\000\000\002\000\000\000\000\b\000\000 \001\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\012R\000\161 \b\192\145X\000\128)\000\000\020\016\000p\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\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\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\t\000\000\000\000\000\000\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\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\b\002\024\012\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000@\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\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\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\000\000\000\000\000\001\138@\020$\001\024\018+\000\016\005 \000\002\130\000\014\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\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\016\000\000\000\024\000\001\192@\001\133\194\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\016\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\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\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\132\001\022\n7\241'\208\004\007\208\n\000\012p\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\b\000\000\128\000\002\000\134\003\000\000\000\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\016\000\128\025\016`\000\000 \000\000\000\004\000\004\000\000\128\004\000\200\131\000\000\001\000\000\000\000\000\000 \000\004\000 \006D\b\000\000\b\000\000\000\000\000\001\000\000 \001\0002 @\000\000@\000\000\000\000\000\024\132\017\003 \017\129&\208\001\000P\000\000\b /n\200\129\005\252T\128\002`\224t\227\130\192\160\208\006!\004@\128\004`I\180\000@\020\000\000\002\b\0001\b\"\004\000#\002E\160\002\000\160\000\000\016@\001\136@\016 \001\024\018-\000\016\005\000\000\000\130\000\000\000\000\000\000\000\000\004\000\004\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\b\000\b\000\000\000\000\000\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\002\000\000\000 \000\000\000\016\000\002\000\016\003\"\004\000\000\004\000\000\000\000\000\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\001\000\000\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\000\000\000\000\024\164\001B@\017\129&\176\001\000P\000\000\b \000\197 \n\018\000\140\t\021\128\b\002\128\000\000A\000\006)\000P\144\020`H\172\000@\020\000\000\002\b\000\016\000\002\000\016\003\"\004\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000 \004\000\000\128\004\000\200\129\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\148\149j\rQ:g\247\130 \011\153A\007\141@\024\132\001\016\n\001\129#\144\000\000P\n\000\012`!\231\183z\255W\206\185\253\255\219\131\247\246\223\255}\015=\187\215\250\190u\207\239\254\220\031\191\182\255\251\224yIV\160\213\019\166\127x\"\000\185\148\016x\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\021@\004\017\nC\129\130 \001\152\001\006\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\000\000\t\000*\128\b\"\020\135\003\004@\0030\002\012\002\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000U\000\016D)\014\006\b\128\006`\004\024\005\000 \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\016\000\000\000\b\000\001\000\b\001\145\002\000\000\002\000\000\000\000\000\001 \005P\001\004B\144\224`\136\000f\000A\128P\006!\004@\128\004`H\180\000@\020\000\000\002\b\0001\b\002\004\000#\002E\160\002\000\160\000\000\016@\000\000\000\000\000\000\000\000\128\000\128\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\001\192H\001\149\194\000\001\000\000\000\000\000\000\000\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@\000\004\000\000\016\0048\024\000\000\000\128\016\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000 \b`0\000\000\001\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\000\b\001\145\002\000\000\002\000\000\000\000\000\001\000\000\016\000\000@\016\224`\000\000\002\000@\000@\b\000\000\128\000\002\000\134\003\000\000\000\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\028\004\000\024\\`\000\016\000\000\000\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\128\000\b\000\000 \b`0\000\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\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\002\000\134\003\000\000\000\016\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\004\001\b\006\000\000\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\017@\004\016\nC\128\002 \001\152\000\002\000@\024\000\001\192H\001\149\194\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\002\000d@\128\000\000\128\000\000\000\000\000H\001\020\000A\000\1648\000\"\000\025\128\000 \004\001\138@\020$\001\024\018+\000\016\005 \000\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\001H`\000D\0003\000\000@\b\004\128\017@\004\016\nB\000\002 \001\152\000\002\000@@\000\000\000\000\000\128\006\000\000\000\000\000\000\000\000\002\000\000\000\000\000\004\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\001\138@\020$\001\024\018+\000\016\005 \000\002\130\000\018\000E\000\016@)\012\000\b\128\006`\000\b\001\000\144\002(\000\130\001H@\000D\0003\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \020\132\000\004\000\0030\000\004\000\0001\b\"\006\000#\002M\160\002\000\160\000\000\016@\001\136A\016 \001\024\018m\000\016\005\000\000\000\130\000\012B\b\129\000\b\192\145h\000\128(\000\000\004\016\000b\016\004\b\000F\004\139@\004\001@\000\000 \128\004\128\017@\004\016\nC\000\003 \001\152\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\001H@\000D\0003\000\000@\b\000\000\000\000\000\000\000\000\000\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 \004P\001\004\002\144\128\000\136\000f\000\000\128\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\001\020\000A\000\1640\000\"\000\025\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000E\000\016@)\b\000\b\128\006`\000\b\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \020\134\000\004\000\0030\000\004\000\000H\001\020\000A\000\164 \000 \000\025\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\002(\000\130\001H@\000d\0003\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\138\000 \128R\016\000\025\000\012\192\000\016\002\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\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\000\000\000\000\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\000\000\000\000\000\000\000\001\000\002\128\000\000\000\000\000\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\192\000\000\000\000\000\000\000\000\000\000 \001\141\194\022\139\005\027\248\145\232\002\003\232\005\000\0078\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\n\000\000\000\000\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000!\231\183z\255W\206\249\253\255\219\131\247\246\223\255<\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\016\243\219\189\127\171\231|\254\255\237\193\251\251o\255\158cp\128\"\193F\254$z\000\128\250\001@\001\142\004$R\238\015\160\248V\028\015\249p.\240[\243\135\152\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\by\237\222\191\213\243\190\127\127\246\224\253\253\183\255\2071\184@\017`\163\127\018=\000@}\000\160\000\199\002\018)w\007\208|+\014\007\252\184\023x-\249\195\192 \000\000\000\000\006\000\n\000\000\000\000\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000!\231\183z\255W\206\249\253\255\219\131\247\246\223\255<\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\bH\165\220\031A\240\1728\031\242\224]\224\183\231\0151\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\016\243\219\189\127\171\231|\254\255\237\193\251\251o\255\158cp\128\"\193F\254$z\000\128\250\001@\001\142\004$R\238\015\160\248V\028\015\249p.\240[\243\135\152\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\by\237\222\191\213\243\190\127\127\246\224\253\253\183\255\2071\184@\017`\163\127\018=\000@}\000\160\000\199\002\018)w\007\208|+\014\007\252\184\023x-\249\195\192\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\000\000\000\000\000\000\000 \000P\000\000\000\000\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015=\187\215\250\190w\207\239\254\220\031\191\182\255\249\2307\b\002,\020o\226G\160\b\015\160\020\000\024\224BE.\224\250\015\133a\192\255\151\002\239\005\1918y\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\135\158\221\235\253_;\231\247\255n\015\223\219\127\252\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p!\"\151p}\007\194\176\224\127\203\129w\130\223\156<\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000C\207n\245\254\175\157\243\251\255\183\007\239\237\191\254y\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\016\145K\184>\131\225Xp?\229\192\187\193o\206\030\135\158\221\235\253_;\231\247\255n\015\223\219\127\252\243\027\132\001\022\n7\241#\208\004\007\208\n\000\012p!\"\151p}\007\194\176\224\127\203\129w\130\223\156=\015=\187\215\250\190u\207\239\254\\\031\190\150\255\249\224\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\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\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\001\000\001 D\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\004\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\b\002\004\000#\002E\160\002\000\160\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000b\016\132@(\006\004\142@\000\001@(\0001\128\000\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\024\220 \b\176Q\191\137\030\128 >\128P\000s\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\141\194\004\139\005\027\248\145\232\002\003\232\005\000\0068\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\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\136@\017\000\160\024\0189\000\000\005\000\160\000\198\002\000\000\000\000\000\000\000\000\000\001\128\000\002@\000\000\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\000\000\000\000\000\000D\000\000\000\000\000\000\000\000\002\000\001 \000\000\000\002 \000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\b\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\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\000\000\000\000\000\000\000\000\003\000\000\004\128\000\000\000@\000\000\000\000\012\001\028\000\000\000\000\000\000\000\001\000\000\017\000\000\000\000\000\000\000\192\000\129 H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\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\001\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\002\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\021\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\138]\193\244\031\n\195\129\255.\005\222\011~p\240\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\220 \b\176Q\191\137\030\128 >\128P\000c\129\t\020\187\131\232>\021\135\003\254\\\011\188\022\252\225\2307\b\002,\020o\226G\160\b\015\160\020\000\024\224BE.\224\250\015\133a\192\255\151\002\239\005\1918x\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004$R\238\015\160\248V\028\015\251p.\244\219\243\135\128\000\000\000\000\000\000\000\000\000\001\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\by\237\222\191\213\243\174\127\127\246\224\253\253\183\255\223\000\000\000@\000\000\000\000\000\000\000\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\016\000\000\000\000\000\000\001\000\000\000\b\000\000\000\000\b\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\024\b\001\000\000\001\001\004\000\000\b\000\000\000\000\000\000\192@\b\000\000\b\b\000\000\000@\000\000\000\000\000\000\000\000\000\000\000@\001\000\002\000\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000`\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\003\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\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\000\016\000\016\000`\000\000\001\000\000\000\000\000\004@\000\000\000\000\128\003\000\000\000\b\000\000\000\000\000\"\000\000\000\000\004\000\b\000\000\000@\000\000\000\000\000\000\000\000\002\000\000\000\128\001\000\000\000\000\004\000\000\000\000\000\000\000\000\000\004\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\000\000p\016\000ap\128\000@\000\000\000\000\000\000\000\000\000\000\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\b\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\b\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\004\000\000\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\004\000\000\000\0001\184@\017`\163\127\018=\000@}\000\160\000\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \020\134\000\006@\0030\000\004\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000BE.\224\250\015\133a\192\255\151\002\239\005\1918x\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192@\b\b\000\b\b \000\000@\000\000\000\000\000\006\002\000@\000\000@A\000\000\002\000\000\000\000\000\0000\016\002\000\000\002\002\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\016\000@\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 \004\004\000\002\006\004\000\000\000 \000\000\000\000\000\128\000\004\000\000\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000b\016\004\b\000F\004\139@\004\001P\000\000\"\128\132\138]\193\244\031\n\195\129\255.\005\222\011~p\244\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196 \b\016\000\140\t\022\128\b\002\160\000\000E\001\t\020\187\131\232>\021\135\003\254\\\011\188\022\252\225\224\000\000@\000\000\000\000\000\000\000\000\000\000\006@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\128\128\000@\192\128\000\000\004\000\000\000\000\000\016\000\000\128\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\001\001\000\000\129\129\000\000\000\b\000\000\000\000\000 \000\001\000\000\002\000\000 \000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\002\002\000\001\003\002\000\000\000\016\000\000\000\000\000@\000\002\000\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\144\002(\000\130\005Hp\000D\0003\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\b\001\000\000\001\001\004\000\000\b\000\000\000\000\000\000\192@\b\000\000\b\b\000\000\000@\000\000\000\000\000\t\000\"\128\b T\135\000\004@\0030\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\b\160\002\b\005!\128\001\000\000\204\000\001\000\000\018\000E\000\016@)\b\000\b\000\006`\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\001\000\000\004\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000 \000\000\000\000\000\001\128\000\024\000\000\024\\`\000\017\000\000\016\000\000\000\012\000\000\192\000\000\194\225\000\000\136\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\128\000\000\001\016\000\000\000\000\000\000\192\000\012\000\000\012.\016\000\b\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\000\000\000\000\000\000\003\000\0008\b\0000\184@\000 \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\000\000\000\000\000\000\016\000\000\002\000\000\000\000\000 \000\000\000@\000\000\000\000\000\000\016\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\000\000\004\000\000\000\000\000\128\000\000\000\000\000@\000\000\000\000 \000\000\000\000\004\000\000\000\000\000\002\000\000\000\192\000\014\002\000\012.\016\000\b\000\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\128\000\000\000\000\000\000\002\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\000\000\000\000\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\128\017@\004\016\nC\128\002 \001\152\001\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000@\000\002\000\004\000\000\000 \000\000\001\000\000\136\000\000\000\000\016\000 \000\000\001\000\000\000\b\000\004@\000\000\000\000\128\001\000\000\000\b\000\000\000\000\000\144\002(\000\194\001Hp\000D\000;\000\000\194\000\001\016\000\000\000\000 \000@\000\000\002\000\000\000\000\000$\000\138\000 \128R\028\000\017\000\012\192\000\016\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\"\128\b \020\134\000\004@\0030\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\t\000\"\128\012 \020\135\000\004@\003\176\000\012 \000\017\000\000\000\000\002\000\004\000\000\000 \000\000\000\000\002@\b\160\002\b\005!\192\001\016\000\204\000\001\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\128\017A\004\016\nC\000\002 \001\216\001\002\000@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\001\000\000\b\000\016\000\000\000\128\000\000\004\000\002 \000\000\000\000@\000\128\000\000\004\000\000\000 \000H\001\020\000A\000\1640\000\"\000\025\128\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\021@\004\024*C\128\002 \001\216\000\"\000D\000\000 \000\000@\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\t\000\"\128\b \020\134\000\004@\0030\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\128\000\001\000\000\016\000\000\000\000\000\000\000\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\000\000\000\000\002`\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000\000\000\000@\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\004\001\b\006\000\000\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196 \b\016\000\140\t\022\128\b\002\160\000\000E\001\t\020\187\131\232>\021\135\003\254\\\011\188\022\252\225\232H\165\220\031A\240\1728\031\242\224]\224\183\231\015\001\136@\016 \001\024\018-\000\016\005@\000\000\138\002\018)w\007\208|+\014\007\252\184\023x-\249\195\204n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\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\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\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\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\198\225\000E\130\141\252H\244\001\001\244\002\128\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\130\000 \128\002\016\000\016\000\012\128\000\016\000\000\000\000\000\000\000\000\000\000\000\000\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\136\000\000\000\000\024\000 \000\000\001\000\000\000\000\000\000\001\016\015\192\024\018\000\001\241\b\001\002\000`\162\192\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000 \000\000\000\016\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000 \001\248\003\002@\000>!\000 @\012\020X\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\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\b\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\b\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\002\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\000\000\000\000\000\016\000@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \004\004\000\002\006\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\004\000\000\000\000\000@\000\004\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000b\016\004\b\000F\004\139@\004\001P\000\000 \128\000\000\000\000\000\000\000\000\128\000\000\000\016\000H\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\001\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\003?\132\131\022*\183\2433\208\021\007\220\138\000\028p\000@\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\011! \128\b t\132\004\004@\007 \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\130\000 \128R\016\000\017\000\012\128\128\016\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000A\000\016@)\b\000\b\000\006\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0003\248H1b\171\1273=\001P}\200\160\001\199\001\159\194A\139\021[\249\153\232\n\131\238E\000\0148\000\144\002\b\000\130\001H@\000D\0002\000\000@\000\004\128\016@\004\016\nB\000\002 \001\144\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\000\000\000\000\000\000\000\000\000\000\000\000\t\000 \128\b \020\134\000\004@\003 \000\004\000\000H\001\004\000A\000\164 \000\"\000\025\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\016@\004\016\nC\000\002 \001\144\000\002\000\000$\000\130\000 \128R\016\000\017\000\012\128\000\016\000\000\000\000\000\000\000\000\000\000\000\000\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\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") and start = 15 and action = - ((16, "I\186T|N\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023\018N\160\000\000\000\000\022\022N\160I\186T|\022\022\000\003\000\000\000\000T|\022\022\000\003T|\022\022\000\003\000\000\000\000\000\000\018\022N\006\021\218P\240^0\000\000\000\025\000\000\000\000\001\030\000\000\000\000P\130\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\002\248\002\160\000\t\000\000\000\000\002\236\000\000Q\168c\208\022\022\\\148\022|\003\168\0001k\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\234\001\132\000\157\000\000\000\168\004B\000\000\000\242\000\226\004J\000\000\005L\002\000\n\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\234\000\000\000\000\002\160]`\000\000\000\000\000h\000\000\000\000^\002\003<\002\200\000\000\000\000L$\000h\000\000P\172\022\022Q\168\004\130\004\242\003\168\004\176\000\000\022\022I\186TB\022\022_\180\000\000\001<\000\000Yj\004\250\000\000\028x\000\000\000\016\000\000\000\000\001\166\000\000\000h\000\000\000\000\000\000\001\206\000\000\028x\000\000\004\004~Z\133\166k\176\135\182O\016YX_\198\000\000t4\026\018]`N\160I\186I\186\000\000\000\000\000\000I\244I\244\003\168\004\176\004\176\022\022\000\003\025\174\000\208\005\182\000\000\004v\005\186\000\000\000\000\000\000\000\000\000\000\022\022\000\000\000\000\000\000T|\022\022\000\003T|\022\022\000\003G\174w\166I\186\000\252\000\003Tr\022\022\131\242\000\000^0{\138~\206\000\000\005\182\000\000\0056\000\000\023\164K([\140\000\000K([\140\000\000K(\138\002\007\028\006\194\004\004\002\164\000\000\005\164\000\000\000\000\b0\000\000\000\000\000\000K(\000h\000\000\000\000_\180K(^\234_\198\000\000\000\000[J\007\028\000\000\000\000_\198\005\252K(\000\000\\4_\198]\030\000\000\000\000\000\000\003(\000\000K(\000\000\021\024\140\214\000\000K(\007VK(\000\000\030.\006\148\000h\000\000\000\000\031,\000\000\bT\000\000a\166\0040\000\000\006\204K(\004|\000\000\004\146\000\000\003\138\000\000\000\003\006b\000\000\000\000\000\000$@\tX^0Tr\022\022^0\000\000\007\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000ZR\030\140\000\000\000\000\000\000\001\254\026\002~\206\000\000Tr\022\022^0\000\000\000\000Z\160^0\138\148^0\138\238\000\000`X\000\000\000\000`\252P\130\004\180\004\180\000\000\b,^0\000\000\000\000\000\000\bB\b~\000\000\027\138\000\000^0\139 K(\003~\000\000^0\139n\0001\000\000\000\000\000\000\b\186\000\000\022Z\000\000\130\028\000\000\b\198\000\000QF^0\000\000\000\000H\250\tB\005\182\t\156\000\000\000\000\000\000\000\000\b\180\000\000O\138\006\022\th\007\174K(\016\186\t\200\000\000\000\000\007l\th\t\018\000\003^0b\128\002\254\000\000^0\024\144K(\017\138\t\018\n\152\000\000\000\000\000\000Q~\004\180\n\168pb^0\000\000\000\003T|P&I\244\003\168\004\176\003~\002\004\000\t\000\000\n\132Q\168Q\168\011bQ\168\003~\002\004\002\004\000\000\011xQ\168\000\000p\230\001LYj\005\182\005\248\141&\000\000K(lVK(e&l\222K(\005lK(mh\000\000\t\134\n\150\006\140Q\168qn\000\000\006\196\011\148d\020\000\000\000\000\000\000\000\000Q\168q\246Q\168r~\000\218\004\004e\176\005\186\004\004f:\000\000s\006\001L\000\000\000\000s\142\023f\000\000\025\228\000\000\011\250\004\176\000\000d\158S\184\000\000\000$\000\000Q\168\026P\000\000\000\000\000\000cF\000\000\000$\000\003K\178\005\234\t\170\000\003\024\006L\184\018\022\000\003T|\022\022\018\022T|\022\022J\182T|\022\022\000\003Tr\022\022^0^0H\250\000\003Tr\022\022\127^Rz\004\180\012Bx4\000\003Tr\022\022^0\028N\000\003Tr\022\022^0\027\138\000\003\018\022\000\000\000\000\000\000\000\000\001\250\023rH\180\000\000UPV$I\244\003\168\004\176\006\192Q\168\026b\000\000V\248W\204{\138\029LK(\t\174\000\003T|\022\022\018\022\024\006\018\022\003\002\017\254\000\003\000\003\018\022\n\200\012\020\007\220K(#|K(\028\nK(#\154\012v\000\000\000\000\012b\000\000\018\022\004\n\012\206\000\000$\236\000\003\r\024\000\000\027\254\000\003\019\020\025\004\000\000\000\000\000\000\000\000\b\224\000\003\000\000\000\000\t\202\000\003\000\000\028\252\000\003\029\250\000\003\030\248\000\000\020\018\026\002\000\003\000\000\000\003N\160\000\003\000\000\000\000\000\003\031\246\000\003 \244\000\003!\242\000\003\"\240\000\003#\238\000\003$\236\000\003%\234\000\003&\232\000\003'\230\000\003(\228\000\003)\226\000\003*\224\000\003+\222\000\003,\220\000\003-\218\000\003.\216\000\003/\214\000\0030\212\000\0031\210\000\0032\208\022\022^0\029\134K(\n\208\000\003\000\000\031\130\000\003\000\000^0 F^0 \128^0!D\0001\000\000\000\000\000\000!~^0\"B\000\000x\156N\160I\186^0N,\000\003\000\000I~\025\174\000\208\000h\133\242Q\168\130\136x\156x\156\000\000\000\000\004\002\005\n\000\t\006\n\004\176\127\198Q\168\005\198\004\176\128Px\156\136\020\002\160\000\t\006\nx\156\136\020\000\000\006\n\000\000\000\000\006\nx\156\000\000N\160I\186N\160I\186I\244\003\168\004\176x\156\000\000\022|\003\168\0001\012f]`\n\n\000h\000\000K(y&\012\182\r\186\134V\000\000x\156\000\000y\140K\198\022\022\005\170\000\000\t\148\014$\000\000\014F\128\180_\198\000=\000\000\014&\r\178]`\011\030K(#\250\022\022\011\152\021\220\000\000$\248\014\132\000\000\000\248\000\000\000\000\014\160_\198f\194\000\000m\242\006\178\n\146\002\004\b&\r\220\022\022x\156\000\000\142(\011\184_\198\014p_\198t\022gj\014\128_\198t\180h\018\022\022x\156\000\000\000\000n\200TB\022\022k\254Yj\011\208n\006\133\166\138\002\000=\014\224\000\000\000\000u6y\240\022\022\000\000\130\236\005\170\000\000\000\000\1326\000\000\000\000\000\000\129\024\025z\026x\000=\015\006\000\000\000\000\000\000y\240\022\022\000\000\000=\015\014\000\000\000\000\000\000\000\000\000\000\1326\000\000\015\014\027\226\000\000\022\232\138\026\000\000\000\000\000\000\000\000\012\028~Z\133\166\000\000\1326\000\000\000\000\1326\000\000\015 \027\226\022\232\138\026\000\000\141`\023\152\002\248\000\208\004\004\1326\000\000\000\208\004\004\1326\000\000JP\025\174\000\208\000h\133\242Q\168x\156\000\000\004\002\006\194\bn\004\004\1326\000\000\000\t\014xQ\168x\156Y\252\002\160\000\t\014\138Q\168x\156Y\252\000\000\000\000\007\018\000\003x\156\000\000Q\168\136Hx\156\000\000\007\018\000\000P\172\022\022Q\168x\156\000\000K\198\022\022\005\170y\240#\242\029j\021\220\017\184\000\000\012v\028x\011b\000\000\015\"\014\240\0312\021\218[ZK(\012N\000\000Rf\003\218\006\242\011\232\000\000\011\198\000\000\015R\014\214K(UP\000\000\003\168\017\180\012*\000\000\012`\000\000\015\\\014\218]`Q\236\000\000\022\022\0312\015|\004j\000\208\000\003\002X\0312K(\012\158\007\028\000\000K(\b\238\n\234\000\000\000\000u\220\000\000\000\003\005\204\0312vfUP\000\000\022\022K(\012\168K(H\180Q\236\000\000\015\000\000\000Q\236\000\000\000\000Rf\000\000x\156\136\230\021\220\017\184\012v\015\128\015*\0312x\156\136\230\000\000\000\000\021\220\017\184\012v\015\168\0158\139\198Y<_\198\015\204\139\198\138\002\028\202\015\220\139\198_\198\015\228\139\198zpz\240\000\000b0\000\000\000\000x\156\139\132\021\220\017\184\012v\015\224\015`\139\198x\156\139\132\000\000\000\000\000\000\141`\000\000\000\000\000\000\000\000\000\000\000\000\000\000x\156\000\000\136\244\022\022M\004\015\246~Z\000\000\1326\136\244\000\000\000\000\140R\022\022M\004\015\250\015~\133\166\000\000\1326\140R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\026#\242\021\220\017\184\012v\016\n{\138J\224\021\218P\240V\248\022f\002\210\000=\016\012\n\012\000\003\000\000\015\184\000\003\000\000Q\236\000\000\007\222\012\230\000\000\r^\000\000\016 \015\158K(O\156\0162\012\b\000\003\000\000\015\238\000\003\000\000\022\138\003\168\r(\016P|\012]`\004\180\015\232K(\rp\000\003\000\000\015\254\000\003\000\000\000\000\000\000pb\016\000\000\003\000\000\000\000\000\000Q\236\000\000\021\182\rd\000\000\r\132\000\000\016^\015\220]`\000\000\016n|\142_,\004\180\016\020K(\rv\000\003\000\000\016.\000\003\000\000\000\000\022\022\000\003Q\236\000\000\022<\022\022J\224J\224}\130N\160\022\022\131\242^0\n\200\000\000\021\178\000\208\000\003\tZJ\224K(\r\228\005\182\000\000\022\022{\138{\138J\224\r\136J\224\000\000L\166\018\022\005\018\006\026M\160\000\000\000\000\000\000hv\000\000\000\000i\000\000\000\000\000i\138\000\003\r\138J\224j\020\131\242^0\n\200\000\000\007\012\000\000\139\198\016\226\000\000G\174\016\186\000\000Q\236\000\000J\224G\174Q\236\000\000\022\022K(Q\236\000\000\016Z\000\000Q\236\000\000\000\000V\248\000\000\132\192\139\198\016jJ\224\133${\138\000\000x\156\137\144\021\220\017\184\012v\016\204{\138x\156\137\144\000\000\000\000\000\000\129\254Tr\022\022\131\242^0x\156\000\000\000\000\000\000\000\000\000\000\000\000\134\186\000\000\000\000\135<\000\000x\156\000\000\136\244\000\000\000\000\000\000\000\000x\156\129\254\000\000\017\022\000\000\134\186\000\000\135<\017\026\000\000\017,\000\000\000\0003\206\000\003\0170\000\000\000\003\0172\000\000\012\230\018\252\000\003\017D\000\000j\160J\182\000\000\000\003\017B\000\000\000\003\017H\000\000\000\000\019\250\000\003\017Z\007\"\000\0034\204\000\003\017X\b \000\0035\202\000\003\017f\t\030\000\0036\200%\234\000\003\017\132\n\028\000\0037\198\000\003\017\144\011\026\000\0038\196\000\003\017\146\012\024\000\0039\194\012\246\020\248\000\003\017\154\r\022\000\003:\192\000\003\017\180\014\020\000\003;\190\000\003\017\184\015\018\000\003<\188\016\016\000\003=\186\021\016\000\000\017\238\000\000\000\003\017\238\000\000\000\003\018\004\000\000\000\000\"|\000\003\000\000\007\214\000\003\000\000^0\000\000\000\000}\000\018\024\000\000K\178\000\000\017^\000\000X\158\000\000\0188\000\000\005\234\017\194\000\000\024\006\031r\005\182\000\000\031\192\000\000\011T\014N\023|\000\000\000\000\018F\000\000\001t\027\000R\128\000\000\014(\000\000\000\000\000\003\017\156\000\003\017\180\000\000\017\178\000\003\017\198\000\000\000\003\014(\000\003\017\218\000\003\017\228\000\000\000\000Sv\004\180\018\154x4_\198\t\240\000\003\000\000x4\000\000\000\000\000\000x4\000\000\018n\000\003\000\000\000\003\000\000\000\000\000\000>\184^0\000\000\000\000\018\172\000\003?\182\000\003@\180\000\000\018\002\000\000\027\000j\160\000\000\017\014\018\156\000\000v\216\014\"\014\136\000\000\000\000\0182\000\000\018\188\000\000\000\000\003\168\004\176\023\160\000\003\000\000\002\248\002\160\000\t\006\n\018R\000\003\000\000K\198\022\022\005\170\000\230\003~\018X\000\003\000\000\000\000\000\000\000\000\000\000\018\232\000\000\000\000\141\160\004\180\018PK(\014\164\000\003\000\000\r\146K(\014\200\000\003\000\000\018f\000\003\000\000\000\000x\156\000\000A\178\000\000\018@\000\000\000\000I\244\003\168\004\176\024\232\000\000Q\168\027N\000\000\nT\000\000\019\014\000\000\019@^0B\176\019J^0C\174wR\000\000Q\168\027`\000\000Q\168\027\210\000\000Q\168\028\208\000\000x\156\000\000\003\168\004\176x\156\000\000x\156\129\254\000\000\000\000\019 \000\000\021\006\014<\022\022u`\000\000\000\000!\004\140\130\000\000\000\000\018\184\000\000\019\016K(\000\000\014\144\n,\007\028\000\000\000\000K(\005V\007\158\000\000K(\012\148\000=\019D\000\000\000\000\131P\000\000\000\000\0198\027\226\029P\005\170y\240\006\178\022\022\000\000\132Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246\006\178\022\022\000\000\015\140~Z\019L\027\226\029P\132Z\000\000\018\196\000\000o&\028\246\000\000x\156\000\000\018\212\000\000\029\206\000\000\028N\000\000K(\014\252\000\000V\248\018\236\000\000\019\186^0D\172E\170^0F\168\000\003\000\000\000\003\000\000\018\230\000\003\018\236\000\000\019\152\000\000\000\003\018\236\000\003\018\242\000\000\019\018\000\000\000\000\\\148\019\"\000\000\000\000\028\252k\026\019\196\000\000\000\000\000\000\012T\017\196o\152\019\202\000\000\000\000\000\000\000\000\000\000\000\000\019J\000\000\006\178\000\000\019^\000\000K(\000\000\003~\000\000\000\003\019`\000\000\000\000\004\004\000\000\bl\000\000\000\003\000\000\001\212\000\000\004\176\000\000\005\190\000\000Q\168\000\000\026P\000\000\n\150\000\000\019j\000\000^0\024\144\000\000\000\000\024\216\019p\000\000\000\000\019h\025\178J\182\000h\129\154\000\000\000\000\000\000\000\000\000\000\138~\000\000\000\000\020\"\000\000\141\150\000\000\015\176\020&\000\000\020<\000\000K\178K\178\140d\140d\000\000\000\000x\156\140d\000\000\000\000\000\000x\156\140d\019\160\000\000\019\172\000\000"), (16, "\t-\000\006\000\246\001\142\001\146\t-\001\002\001\006\t-\001\n\001\022\001\"\t-\012\214\t-\012Y\001&\t-\007Z\t-\t-\t-\005\253\t-\t-\t-\001*\001\186\002N\001\254\001.\t-\003V\003Z\n\138\t-\012Y\t-\006\181\0012\br\003z\002\230\t-\t-\003\174\003\178\t-\003\182\003\194\003\206\003\218\003\226\006\234\007:\002\234\t-\t-\003F\001J\002f\003\214\t-\t-\t-\b\154\b\158\b\170\b\186\bf\005n\t-\t-\t-\t-\t-\t-\t-\t-\t-\b\210\001N\t-\000\238\t-\t-\t-\001J\b\222\b\246\t\022\t*\005z\t-\005~\t-\t-\t-\b\150\t-\t-\t-\t-\b\178\002j\b\182\002\006\024\n\t-\001N\t-\t-\004i\t-\t-\t-\t-\t-\t-\005\130\b\198\t-\t-\t-\t>\004j\t\162\012\129\t-\t-\t-\t-\012\129\012\129\012\129\012\129\bv\002\022\012\129\012\129\012\129\012\129\001\250\012\129\012\129\003\129\012\129\012\129\012\129\003\161\012\129\012\129\012\129\012\129\012\206\012\129\004i\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012Q\012\129\012\214\012\129\000\238\012\129\012\129\012\129\012\129\012\129\007\150\005\253\012\129\012\129\012\129\003E\012\129\003\222\012\129\012\129\012\129\012Q\001\173\012\129\012\129\012\129\012\129\012\129\012\129\012\129\003E\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\b\026\012\129\012\129\007\210\012\129\012\129\012\129\001V\001\250\003\129\b\"\002\242\012\129\012\129\012\129\012\129\012\129\012\129\b&\012\129\012\129\012\129\012\129\012\129\012\129\012\129\rN\012\129\012\129\001Z\012\129\012\129\002\246\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\003\n\001\173\012\129\012\129\012\129\012\129\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\002&\001\173\002\202\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\023f\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\003A\001\173\001\173\001\173\001\173\001\173\007V\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\0283\001\173\001\173\001\173\001\173\001\173\001\173\001\173\b\"\004i\004i\003\014\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\004F\tV\001\173\005\178\001\173\001\173\r:\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\001\173\016:\001\173\001\173\001\173\001\173\001\173\n-\002\237\002\237\004>\006\246\n-\n-\n-\n-\002J\001\154\n-\n-\n-\n-\000\238\n-\n-\004i\n-\n-\n-\b\"\n-\n-\n-\n-\004i\n-\000\n\n-\n-\n-\n-\n-\n-\n-\n-\001\246\n-\000\238\n-\004\202\n-\n-\n-\n-\n-\006\250\007\022\n-\n-\n-\002\014\n-\002\030\n-\n-\n-\002\237\004J\n-\n-\n-\n-\n-\n-\n-\002V\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\002v\n-\n-\006B\n-\n-\n-\004i\002z\004i\004i\005>\n-\n-\n-\n-\n-\n-\004i\n-\n-\n-\n-\n-\t\186\n-\001\158\n\018\n-\004i\n-\n-\004i\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\000\238\n-\n-\n-\n-\n-\003\201\004i\004i\004i\002^\003\201\003\201\003\201\003\201\004i\004\206\003\201\003\201\003\201\003\201\000\238\003\201\003\201\004i\003\201\003\201\003\201\005B\003\201\003\201\003\201\003\201\004i\003\201\028\003\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\004i\003\201\000\238\003\201\005\030\003\201\003\201\003\201\003\201\003\201\003\026\006\129\003\201\003\201\003\201\006\137\003\201\004i\003\201\003\201\003\201\004\206\000\238\003\201\003\201\003\201\003\201\003\201\003\201\003\201\002\158\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\005.\t\178\n\n\002\n\003\201\003\201\003\201\002\026\003r\002\170\001\006\0056\003\201\003\201\003\201\003\201\003\201\003\201\002\174\003\201\003\201\003\201\003\201\003\201\t\186\003\201\006\029\n\018\003\201\001*\003\201\003\201\000\238\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\012U\003\201\003\201\003\201\003\201\003\201\003\185\003n\001\142\001\146\006\002\003\185\003\185\003\185\003\185\003F\b\241\003\185\003\185\003\185\003\185\012U\003\185\003\185\011\234\003\185\003\185\003\185\002\162\003\185\003\185\003\185\003\185\007\245\003\185\003\142\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\007N\003\185\016.\003\185\004\014\003\185\003\185\003\185\003\185\003\185\004\206\001\250\003\185\003\185\003\185\003\129\003\185\b\217\003\185\003\185\003\185\004\206\006\029\003\185\003\185\003\185\003\185\003\185\003\185\003\185\000\238\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\004N\t\178\n\n\012\182\003\185\003\185\003\185\001\"\006\154\001\006\007\146\003\146\003\185\003\185\003\185\003\185\003\185\003\185\000\238\003\185\003\185\003\185\003\185\003\185\t\186\003\185\004\213\n\018\003\185\000\238\003\185\003\185\002\214\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\012\186\003\185\003\185\003\185\003\185\003\185\003\181\003\134\b\014\003\150\bf\003\181\003\181\003\181\003\181\012\198\007\198\003\181\003\181\003\181\003\181\b\217\003\181\003\181\000\238\003\181\003\181\003\181\000\238\003\181\003\181\003\181\003\181\b\162\003\181\004\166\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\005~\003\181\016r\003\181\007V\003\181\003\181\003\181\003\181\003\181\006\190\006\214\003\181\003\181\003\181\028C\003\181\012\002\003\181\003\181\003\181\005J\024n\003\181\003\181\003\181\003\181\003\181\003\181\003\181\b\"\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\007\162\t\178\n\n\001\006\003\181\003\181\003\181\001\"\004\250\011\242\001\142\014\238\003\181\003\181\003\181\003\181\003\181\003\181\007\170\003\181\003\181\003\181\003\181\003\181\t\186\003\181\014\254\n\018\003\181\011\250\003\181\003\181\015\206\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\003\181\r2\003\181\003\181\003\181\003\181\003\181\t\205\bf\004>\004>\002^\t\205\t\205\t\205\t\205\012\198\020>\t\205\t\205\t\205\t\205\000\238\t\205\t\205\015\214\t\205\t\205\t\205\007\222\t\205\t\205\t\205\t\205\006\005\t\205\004j\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\005~\t\205\b\006\t\205\007V\t\205\t\205\t\205\t\205\t\205\0036\004i\t\205\t\205\t\205\000\238\t\205\021\230\t\205\t\205\t\205\004V\007\238\t\205\t\205\t\205\t\205\t\205\t\205\t\205\tz\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\005&\t\205\t\205\026N\t\205\t\205\t\205\006\222\024\238\0156\000\238\003\169\t\205\t\205\t\205\t\205\t\205\t\205\018j\t\205\t\205\t\205\t\205\t\205\t\205\t\205\020B\t\205\t\205\015B\t\205\t\205\004i\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\t\205\000\238\t\221\t\205\t\205\t\205\t\205\t\221\t\221\t\221\t\221\018r\003\146\t\221\t\221\t\221\t\221\004N\t\221\t\221\005\253\t\221\t\221\t\221\004i\t\221\t\221\t\221\t\221\006\014\t\221\004\234\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\006\193\t\221\003\169\t\221\022\226\t\221\t\221\t\221\t\221\t\221\026R\b\245\t\221\t\221\t\221\r>\t\221\021\250\t\221\t\221\t\221\004Z\006\198\t\221\t\221\t\221\t\221\t\221\t\221\t\221\006&\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\214\t\221\t\221\t\222\t\221\t\221\t\221\001V\004>\005\189\000\238\022\234\t\221\t\221\t\221\t\221\t\221\t\221\006b\t\221\t\221\t\221\t\221\t\221\t\221\t\221\006z\t\221\t\221\001Z\t\221\t\221\b\245\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\t\221\b\197\t\213\t\221\t\221\t\221\t\221\t\213\t\213\t\213\t\213\005\189\028#\t\213\t\213\t\213\t\213\0071\t\213\t\213\004J\t\213\t\213\t\213\b\245\t\213\t\213\t\213\t\213\014\242\t\213\005\189\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\006\150\t\213\000\238\t\213\004\209\t\213\t\213\t\213\t\213\t\213\nF\007)\t\213\t\213\t\213\007)\t\213\022\014\t\213\t\213\t\213\001\006\007\214\t\213\t\213\t\213\t\213\t\213\t\213\t\213\006\178\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\001f\t\213\t\213\006\158\t\213\t\213\t\213\007\001\006\194\b\197\007\025\006\230\t\213\t\213\t\213\t\213\t\213\t\213\011:\t\213\t\213\t\213\t\213\t\213\t\213\t\213\006\210\t\213\t\213\019\174\t\213\t\213\002^\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\t\213\005^\t\193\t\213\t\213\t\213\t\213\t\193\t\193\t\193\t\193\000\238\b\"\t\193\t\193\t\193\t\193\002^\t\193\t\193\012~\t\193\t\193\t\193\023\218\t\193\t\193\t\193\t\193\007\025\t\193\0036\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\nV\t\193\b\166\t\193\t\158\t\193\t\193\t\193\t\193\t\193\012\190\025r\t\193\t\193\t\193\006\145\t\193\022&\t\193\t\193\t\193\0036\004\146\t\193\t\193\t\193\t\193\t\193\t\193\t\193\001\162\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\001f\t\193\t\193\007\018\t\193\t\193\t\193\002*\011:\018J\0266\007*\t\193\t\193\t\193\t\193\t\193\t\193\012\134\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\214\t\193\t\193\t\222\t\193\t\193\002j\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\t\193\b\193\t\201\t\193\t\193\t\193\t\193\t\201\t\201\t\201\t\201\t\206\t\246\t\201\t\201\t\201\t\201\t\214\t\201\t\201\t\222\t\201\t\201\t\201\011\158\t\201\t\201\t\201\t\201\000\238\t\201\012~\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\004\129\t\201\000\238\t\201\007b\t\201\t\201\t\201\t\201\t\201\006\"\007\025\t\201\t\201\t\201\007\025\t\201\022:\t\201\t\201\t\201\015\158\011N\t\201\t\201\t\201\t\201\t\201\t\201\t\201\007\242\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\007n\t\201\t\201\012\250\t\201\t\201\t\201\003\149\004\129\b\193\015\218\007\134\t\201\t\201\t\201\t\201\t\201\t\201\002^\t\201\t\201\t\201\t\201\t\201\t\201\t\201\012~\t\201\t\201\012\234\t\201\t\201\002j\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\t\201\b\166\t\197\t\201\t\201\t\201\t\201\t\197\t\197\t\197\t\197\002^\006\t\t\197\t\197\t\197\t\197\r\162\t\197\t\197\015\210\t\197\t\197\t\197\003\014\t\197\t\197\t\197\t\197\006\r\t\197\bZ\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\015\254\t\197\016\006\t\197\t\014\t\197\t\197\t\197\t\197\t\197\015\190\t\210\t\197\t\197\t\197\014f\t\197\022N\t\197\t\197\t\197\rV\b)\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\242\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\004>\t\197\t\197\b\221\t\197\t\197\t\197\b%\t\254\018\146\016F\000\238\t\197\t\197\t\197\t\197\t\197\t\197\003\t\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\214\t\197\t\197\t\222\t\197\t\197\015\150\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\t\197\000\238\t\209\t\197\t\197\t\197\t\197\t\209\t\209\t\209\t\209\000\238\027\186\t\209\t\209\t\209\t\209\n\014\t\209\t\209\018n\t\209\t\209\t\209\n\030\t\209\t\209\t\209\t\209\012\173\t\209\012v\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\014F\t\209\018v\t\209\016\142\t\209\t\209\t\209\t\209\t\209\b\221\012\146\t\209\t\209\t\209\016N\t\209\022j\t\209\t\209\t\209\019\026\b\025\t\209\t\209\t\209\t\209\t\209\t\209\t\209\019\018\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\021\158\t\209\t\209\003\142\t\209\t\209\t\209\006\001\022Z\012~\012\185\003\142\t\209\t\209\t\209\t\209\t\209\t\209\012\150\t\209\t\209\t\209\t\209\t\209\t\209\t\209\b\029\t\209\t\209\000\238\t\209\t\209\000\238\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\t\209\019\186\t\225\t\209\t\209\t\209\t\209\t\225\t\225\t\225\t\225\019\214\020\"\t\225\t\225\t\225\t\225\018\206\t\225\t\225\019J\t\225\t\225\t\225\023v\t\225\t\225\t\225\t\225\024f\t\225\012\194\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\b\"\t\225\025\250\t\225\025\018\t\225\t\225\t\225\t\225\t\225\003\254\023N\t\225\t\225\t\225\t\029\t\225\022~\t\225\t\225\t\225\011:\012\222\t\225\t\225\t\225\t\225\t\225\t\225\t\225\012\226\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\r\n\t\225\t\225\0262\t\225\t\225\t\225\r\030\006^\016N\r^\t\005\t\225\t\225\t\225\t\225\t\225\t\225\rn\t\225\t\225\t\225\t\225\t\225\t\225\t\225\005\t\t\225\t\225\b\162\t\225\t\225\023z\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\r\182\t\217\t\225\t\225\t\225\t\225\t\217\t\217\t\217\t\217\000\238\027\030\t\217\t\217\t\217\t\217\t\t\t\217\t\217\014\002\t\217\t\217\t\217\014\"\t\217\t\217\t\217\t\217\000\238\t\217\014B\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\014\138\t\217\015\006\t\217\025\006\t\217\t\217\t\217\t\217\t\217\026B\015\030\t\217\t\217\t\217\000\238\t\217\022\146\t\217\t\217\t\217\015\166\025\026\t\217\t\217\t\217\t\217\t\217\t\217\t\217\002^\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\015\170\t\217\t\217\015\226\t\217\t\217\t\217\015\230\016\014\016\018\016*\016\162\t\217\t\217\t\217\t\217\t\217\t\217\004\129\t\217\t\217\t\217\t\217\t\217\t\217\t\217\016\210\t\217\t\217\016\214\t\217\t\217\026\202\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\t\217\016\250\n\029\t\217\t\217\t\217\t\217\n\029\n\029\n\029\n\029\016\254\017\014\n\029\n\029\n\029\n\029\011\158\n\029\n\029\017\030\n\029\n\029\n\029\017*\n\029\n\029\n\029\n\029\017^\n\029\017b\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\017\178\n\029\017\218\n\029\017\222\n\029\n\029\n\029\n\029\n\029\018\"\018F\n\029\n\029\n\029\018V\n\029\022\158\n\029\n\029\n\029\018~\018\130\n\029\n\029\n\029\n\029\n\029\n\029\n\029\018\142\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\018\158\n\029\n\029\018\182\n\029\n\029\n\029\018\198\018\218\018\242\019\"\019&\n\029\n\029\n\029\n\029\n\029\n\029\0192\n\029\n\029\n\029\n\029\n\029\n\029\n\029\003\173\n\029\n\029\019B\n\029\n\029\019V\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\020J\t\181\n\029\n\029\n\029\n\029\t\181\t\181\t\181\t\181\020V\020\134\t\181\t\181\t\181\t\181\020\170\t\181\t\181\020\210\t\181\t\181\t\181\000\238\t\181\t\181\t\181\t\181\021Z\t\181\021n\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\021v\t\181\021\138\t\181\021\150\t\181\t\181\t\181\t\181\t\181\021\170\021\194\t\181\t\181\t\181\021\206\t\181\003\173\t\181\t\181\t\181\021\226\021\246\t\181\t\181\t\181\t\181\t\181\t\181\t\181\022\n\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\022\"\t\178\n\n\004%\t\181\t\181\t\181\015\250\0226\015\142\022J\022f\t\181\t\181\t\181\t\181\t\181\t\181\007\242\t\181\t\181\t\181\t\181\t\181\t\186\t\181\022z\n\018\t\181\022\142\t\181\t\181\016\002\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\t\181\000\238\t\181\t\181\t\181\t\181\t\181\002\t\022\178\b!\022\190\012\165\002\t\001\002\001\006\002\t\027\190\002j\001\"\002\t\t\202\002\t\022\202\001&\002\t\012\165\002\t\002\t\002\t\022\254\002\t\002\t\002\t\001*\004%\t\250\023\014\001.\002\t\002\t\002\t\002\t\002\t\n\002\002\t\t\190\0012\023\030\003z\023*\002\t\002\t\002\t\002\t\002\t\023^\023\134\003\206\002N\002\t\022\182\002\t\022\194\002\t\002\t\003F\023\142\023\150\003\214\002\t\002\t\002\t\b\154\b\158\b\170\023\158\019\226\005n\002\t\002\t\002\t\002\t\002\t\002\t\002\t\002\t\002\t\023\178\t\178\n\n\023\186\002\t\002\t\002\t\023\206\023\254\024*\024B\024Z\005z\002\t\005~\002\t\002\t\002\t\024v\002\t\002\t\002\t\002\t\b\178\021\214\b\182\024~\022\022\002\t\024\174\002\t\002\t\024\206\002\t\002\t\002\t\002\t\002\t\002\t\005\130\b\198\002\t\002\t\002\t\t>\004j\024\234\n\t\002\t\002\t\002\t\002\t\n\t\001\002\001\006\n\t\024\254\025&\001\"\n\t\n\t\n\t\025F\001&\n\t\025z\n\t\n\t\n\t\025\130\n\t\n\t\n\t\001*\025\142\n\t\025\238\001.\n\t\n\t\n\t\n\t\n\t\n\t\n\t\021\162\0012\026\030\003z\026&\n\t\n\t\n\t\n\t\n\t\026b\026z\003\206\002N\n\t\021\186\n\t\021\198\n\t\n\t\003F\026\210\026\230\003\214\n\t\n\t\n\t\b\154\b\158\b\170\027\002\n\t\005n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\027*\n\t\n\t\0272\n\t\n\t\n\t\027Z\027b\027j\027v\027~\005z\n\t\005~\n\t\n\t\n\t\027\135\n\t\n\t\n\t\n\t\b\178\n\t\b\182\027\151\n\t\n\t\027\170\n\t\n\t\027\198\n\t\n\t\n\t\n\t\n\t\n\t\005\130\b\198\n\t\n\t\n\t\t>\004j\027\227\n\005\n\t\n\t\n\t\n\t\n\005\001\002\001\006\n\005\027\243\028\015\001\"\n\005\n\005\n\005\028c\001&\n\005\028\127\n\005\n\005\n\005\028\138\n\005\n\005\n\005\001*\028\191\n\005\028\211\001.\n\005\n\005\n\005\n\005\n\005\n\005\n\005\021\218\0012\028\219\003z\029\023\n\005\n\005\n\005\n\005\n\005\029\031\000\000\003\206\002N\n\005\021\238\n\005\022\002\n\005\n\005\003F\000\000\000\000\003\214\n\005\n\005\n\005\b\154\b\158\b\170\000\000\n\005\005n\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\000\000\n\005\n\005\000\000\n\005\n\005\n\005\000\000\000\000\000\000\000\000\000\000\005z\n\005\005~\n\005\n\005\n\005\000\000\n\005\n\005\n\005\n\005\b\178\n\005\b\182\000\000\n\005\n\005\000\000\n\005\n\005\000\000\n\005\n\005\n\005\n\005\n\005\n\005\005\130\b\198\n\005\n\005\n\005\t>\004j\000\000\002I\n\005\n\005\n\005\n\005\002I\001\002\001\006\002I\000\000\000\000\001\"\002I\t\202\002I\004i\001&\002I\000\000\002I\002I\002I\000\000\002I\002I\002I\001*\004i\t\250\000\000\001.\002I\002I\002I\002I\002I\n\002\002I\022^\0012\000\000\003z\004\218\002I\002I\002I\002I\002I\000\000\000\000\003\206\002N\002I\022r\002I\022\134\002I\002I\003F\000\238\000\000\003\214\002I\002I\002I\b\154\b\158\b\170\000\238\019\226\005n\002I\002I\002I\002I\002I\002I\002I\002I\002I\000\000\004i\002I\000\000\002I\002I\002I\019\014\004i\000\000\004i\000\000\005z\002I\005~\002I\002I\002I\000\000\002I\002I\002I\002I\b\178\000\000\b\182\004i\000\000\002I\000\000\002I\002I\019\022\002I\002I\002I\002I\002I\002I\005\130\b\198\002I\002I\002I\t>\004j\004i\004i\002I\002I\002I\002I\004i\004i\b\025\004i\004i\004i\004i\004i\004i\004i\004i\000\000\004i\000\238\004i\004i\004i\004i\004i\004i\000\000\004i\004i\004i\004i\004i\004i\004i\004i\004i\000\000\004i\004i\000\238\000\238\004i\004i\000\000\004i\004i\004i\004i\004i\004i\004i\004i\004i\004i\004i\004i\004i\004i\004i\004i\006j\004i\004i\004i\004i\004i\004i\004i\004i\000\238\004i\004i\004i\004i\004i\004i\004i\004i\004i\019\162\004i\000\000\004i\004i\004i\004i\004i\004i\000\238\004i\000\n\004i\004i\004i\004i\004i\004i\004i\000\000\004i\004i\004i\000\000\000\238\004i\004i\002\237\002\237\004i\000\238\004i\004i\000\000\004i\004i\000\000\004i\012\182\000\000\000\000\002\237\001\"\000\000\004i\004i\004i\000\000\000\238\004i\004i\004i\004i\000\169\000\169\004i\000\169\000\169\000\169\000\169\000\169\000\169\000\169\000\169\000\000\000\169\000\000\000\169\000\169\019v\000\169\000\169\000\000\0062\000\169\000\169\005\222\000\169\000\169\000\169\000\169\012\186\000\169\006F\000\169\000\169\000\000\006N\000\169\000\169\018:\000\169\000\169\000\169\007\146\000\169\012\198\000\169\000\169\000\169\000\169\000\169\000\169\000\169\000\169\000\169\000\169\003\146\018\170\000\169\000\169\000\000\001\006\000\169\000\169\bJ\000\169\000\169\000\169\000\169\000\169\000\169\000\169\000\169\000\169\005~\002\237\000\169\000\000\t!\000\169\000\000\000\169\000\000\000\169\000\000\000\000\000\000\b\014\000\169\000\169\000\169\000\169\000\169\000\169\007\017\000\169\000\169\000\169\007\017\tZ\002N\000\169\000\n\r\210\000\169\003\134\000\169\000\238\000\222\000\000\023\002\000\000\000\169\000\000\023\018\023\"\023.\000\000\000\169\000\169\000\169\000\169\bf\002A\000\169\000\169\000\169\000\169\002A\001\002\001\006\002A\002\237\000\000\001\"\002A\000\238\002A\000\000\001&\002A\000\000\002A\002A\002A\000\000\002A\002A\002A\001*\000\000\024\146\000\000\001.\002A\002A\002A\002A\002A\000\000\002A\000\000\0012\000\000\003z\000\000\002A\002A\002A\002A\002A\007\017\000\000\003\206\b\174\002A\000\000\002A\000\000\002A\002A\003F\000\000\000\000\003\214\002A\002A\002A\b\154\b\158\b\170\004\022\014\162\005n\002A\002A\002A\002A\002A\002A\002A\002A\002A\000\000\t\178\n\n\000\000\002A\002A\002A\000\000\000\000\000\000\004!\000\000\005z\002A\005~\002A\002A\002A\000\000\002A\002A\002A\002A\b\178\t\186\b\182\000\000\n\018\002A\000\000\002A\002A\001\006\002A\002A\002A\002A\002A\002A\005\130\b\198\002A\002A\002A\t>\004j\000\000\002U\002A\002A\002A\002A\002U\000\238\025^\002U\000\000\000\000\000\000\002U\000\000\002U\000\000\000\000\002U\000\000\002U\002U\002U\000\000\002U\002U\002U\000\000\000\000\001\186\002N\000\000\002U\002U\002U\002U\002U\bf\002U\000\000\004!\000\000\028o\000\000\002U\002U\002U\002U\002U\000\000\000\000\000\238\000\000\002U\000\000\002U\0062\002U\002U\005\222\007\002\000\000\000\000\002U\002U\002U\006F\012\182\000\000\000\000\006N\001\"\002U\002U\002U\002U\002U\002U\002U\002U\002U\000\000\t\178\n\n\000\000\002U\002U\002U\000\000\r\246\000\000\000\000\000\000\002\237\002U\003\146\002U\002U\002U\000\000\002U\002U\002U\002U\025b\t\186\000\000\000\000\n\018\002U\012\186\002U\002U\007\146\002U\002U\002U\002U\002U\002U\000\n\000\000\002U\002U\002U\012\198\000\000\014\026\002Q\002U\002U\002U\002U\002Q\bR\003\146\002Q\002\237\001\186\002N\002Q\000\000\002Q\0051\000\000\002Q\000\000\002Q\002Q\002Q\002\237\002Q\002Q\002Q\005~\000\000\0051\b\014\000\000\002Q\002Q\002Q\002Q\002Q\000\000\002Q\014&\007\146\000\000\000\000\000\000\002Q\002Q\002Q\002Q\002Q\007\146\000\238\005\182\000\000\002Q\000\000\002Q\r\190\002Q\002Q\000\000\0051\b~\003\246\002Q\002Q\002Q\006n\012\182\004\002\000\000\t\130\001\"\002Q\002Q\002Q\002Q\002Q\002Q\002Q\002Q\002Q\000\000\t\178\n\n\b\014\002Q\002Q\002Q\000\000\000\000\000\000\0051\000\000\b\014\002Q\0051\002Q\002Q\002Q\000\000\002Q\002Q\002Q\002Q\000\238\t\186\000\000\000\000\n\018\002Q\012\186\002Q\002Q\000\238\002Q\002Q\002Q\002Q\002Q\002Q\000\000\000\000\002Q\002Q\002Q\012\198\003B\r\250\002E\002Q\002Q\002Q\002Q\002E\000\000\003\146\002E\000\000\000\000\028S\002E\000\000\002E\000\000\000\000\002E\000\000\002E\002E\002E\000\000\002E\002E\002E\005~\000\000\000\000\000\000\000\000\002E\002E\002E\002E\002E\000\000\002E\014\006\007\146\000\000\000\000\000\000\002E\002E\002E\002E\002E\007\146\000\000\tZ\023j\002E\000\000\002E\r\190\002E\002E\000\000\000\000\025j\023\002\002E\002E\002E\023\018\023\"\023.\000\000\025\166\000\000\002E\002E\002E\002E\002E\002E\002E\002E\002E\000\000\t\178\n\n\b\014\002E\002E\002E\000\000\000\000\000\000\006.\000\000\b\014\002E\000\000\002E\002E\002E\000\000\002E\002E\002E\002E\000\238\t\186\007\146\000\000\n\018\002E\000\000\002E\002E\000\238\002E\002E\002E\002E\002E\002E\000\000\b\025\002E\002E\002E\b\025\000\000\025\178\002M\002E\002E\002E\002E\002M\000\238\000\000\002M\000\000\000\000\000\000\002M\000\000\002M\014F\000\000\002M\000\000\002M\002M\002M\b\014\002M\002M\002M\012\029\012\029\000\000\000\000\012\029\002M\002M\002M\002M\002M\b\025\002M\000\000\t:\000\000\000\000\000\238\002M\002M\002M\002M\002M\000\000\000\000\000\000\b\025\002M\000\000\002M\0062\002M\002M\005\222\006:\000\000\027\018\002M\002M\002M\006F\000\000\012M\000\000\006N\000\238\002M\002M\002M\002M\002M\002M\002M\002M\002M\b\025\000\000\002M\000\000\002M\002M\002M\000\000\012M\000\000\000\000\002\194\025\182\002M\002\198\002M\002M\002M\000\000\002M\002M\002M\002M\012\029\000\238\007\146\000\000\002\210\002M\b\025\002M\002M\000\000\n&\002M\002M\002M\002M\002M\t&\t\230\002M\002M\002M\007\146\b\193\025\190\t)\002M\002M\002M\002M\t)\000\000\001\162\t)\002\222\023\162\001\"\t)\000\000\t)\000\000\000\000\nb\026\242\t)\n\134\t)\b\014\t)\t)\t)\0062\000\000\000\000\005\222\027\022\n\154\n\178\n\186\n\162\n\194\006F\t)\000\000\000\238\006N\b\014\000\238\t)\t)\n\202\n\210\t)\000\000\012\182\027\162\002j\t)\001\"\t)\000\000\n\218\t)\002\226\002\237\000\000\000\238\t)\t)\000\238\012\198\000\000\000\000\000\000\000\000\000\000\t)\t)\nj\n\170\n\226\n\234\n\250\t)\t)\000\000\000\000\t)\000\000\t)\t)\011\002\000\000\b\193\000\n\000\000\000\000\012\186\t)\005~\t)\t)\011\n\b\245\t)\t)\t)\t)\000\000\007\185\007\146\002\237\012\198\t)\000\000\t)\t)\000\000\011*\t)\0112\n\242\t)\t)\002\237\002\237\t)\011\018\t)\000\000\000\000\027\n\002\129\t)\t)\011\026\011\"\002\129\ni\000\000\002\129\005~\007\185\000\000\002\129\000\000\002\129\000\000\000\000\002\129\000\000\002\129\002\129\002\129\b\014\002\129\002\129\002\129\007\185\000\000\000\000\007\185\t\150\002\129\002\129\002\129\002\129\002\129\007\185\002\129\026\130\ni\007\185\000\000\000\238\002\129\002\129\002\129\002\129\002\129\000\000\b\173\000\000\000\000\002\129\000\000\002\129\ni\002\129\002\129\ni\011F\000\000\000\000\002\129\002\129\002\129\ni\000\000\000\000\000\000\ni\000\000\002\129\002\129\nj\002\129\002\129\002\129\002\129\002\129\002\129\000\000\000\000\002\129\000\000\002\129\002\129\002\129\000\000\000\000\001&\b\173\000\000\000\000\002\129\000\000\002\129\002\129\002\129\000\000\002\129\002\129\002\129\002\129\000\000\000\000\000\000\001F\000\000\002\129\000\000\002\129\002\129\b\173\002\129\002\129\002\129\002\129\002\129\002\129\001R\000\000\002\129\002\129\002\129\000\000\000\000\000\000\002i\002\129\002\129\002\129\002\129\002i\000\000\000\000\002i\000\000\000\000\000\000\002i\000\000\002i\000\000\005n\002i\000\000\002i\002i\002i\b\173\002i\002i\002i\004\246\000\000\000\000\b\173\000\000\002i\002i\002i\002i\002i\002^\002i\005z\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002i\000\000\b\169\000\000\000\000\002i\000\000\002i\001*\002i\002i\000\000\000\000\000\000\0236\002i\002i\002i\005\130\000\000\000\000\015\174\000\000\000\000\002i\002i\nj\002i\002i\002i\002i\002i\002i\0036\000\000\002i\016&\002i\002i\002i\003F\000\000\000\000\b\169\000\000\000\000\002i\016>\002i\002i\002i\000\000\002i\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\002i\000\000\002i\002i\b\169\002i\002i\002i\002i\002i\002i\000\000\0079\002i\002i\002i\0079\000\000\000\000\002u\002i\002i\002i\002i\002u\000\238\000\000\002u\000\000\000\000\000\000\002u\000\000\002u\t\178\n\n\nb\000\000\002u\002u\002u\b\169\002u\002u\002u\004\246\000\000\000\000\b\169\000\000\002u\002u\002u\n\162\002u\000\000\002u\t\186\011Z\000\000\n\018\000\000\002u\002u\002u\002u\002u\000\000\000\000\000\000\000\000\002u\000\000\002u\011b\002u\002u\011j\000\000\000\000\000\000\002u\002u\002u\011r\000\000\000\000\000\000\011z\0079\002u\002u\nj\n\170\002u\002u\002u\002u\002u\000\000\000\000\002u\000\000\002u\002u\002u\t\214\000\000\000\000\t\222\000\000\000\000\002u\000\000\002u\002u\002u\000\000\002u\002u\002u\002u\000\000\000\238\000\000\000\000\000\000\002u\000\000\002u\002u\000\000\002u\002u\002u\002u\002u\002u\000\000\000\000\002u\002u\002u\000\000\000\000\000\000\002\133\002u\002u\002u\002u\002\133\007\205\000\000\002\133\000\000\007\181\000\000\002\133\000\000\002\133\002^\000\000\002\133\000\000\002\133\002\133\002\133\000\000\002\133\002\133\002\133\007\181\000\000\026\014\005\222\000\000\002\133\002\133\002\133\002\133\002\133\007\181\002\133\000\000\007\205\007\181\000\000\000\000\002\133\002\133\002\133\002\133\002\133\000\000\000\000\000\000\000\000\002\133\000\000\002\133\007\205\002\133\002\133\005\222\0036\000\000\000\000\002\133\002\133\002\133\007\205\000\000\000\000\000\000\007\205\000\000\002\133\002\133\nj\002\133\002\133\002\133\002\133\002\133\002\133\000\000\000\000\002\133\000\000\002\133\002\133\002\133\000\000\000\000\000\000\004\146\000\000\000\000\002\133\005\r\002\133\002\133\002\133\000\000\002\133\002\133\002\133\002\133\000\000\000\238\000\000\000\000\000\000\002\133\000\000\002\133\002\133\000\000\002\133\002\133\002\133\002\133\002\133\002\133\000\000\000\000\002\133\002\133\002\133\000\000\000\000\000\000\002e\002\133\002\133\002\133\002\133\002e\007\221\000\000\002e\000\000\007\225\000\000\002e\000\000\002e\000\000\000\000\002e\000\000\002e\002e\002e\000\000\002e\002e\002e\0062\000\000\000\000\005\222\000\000\002e\002e\002e\002e\002e\007\225\002e\000\000\007\221\007\225\000\000\000\000\002e\002e\002e\002e\002e\000\000\000\000\000\000\000\000\002e\000\000\002e\011\142\002e\002e\007\221\000\000\000\000\000\000\002e\002e\002e\007\221\000\000\000\000\000\000\007\221\000\000\002e\002e\nj\002e\002e\002e\002e\002e\002e\000\000\000\000\002e\000\000\002e\002e\002e\000\000\000\000\000\000\000\000\000\000\000\000\002e\000\000\002e\002e\002e\000\000\002e\002e\002e\002e\000\000\000\238\000\000\000\000\000\000\002e\000\000\002e\002e\000\000\002e\002e\002e\002e\002e\002e\000\000\000\000\002e\002e\002e\000\000\000\000\000\000\002q\002e\002e\002e\002e\002q\000\238\000\000\002q\000\000\007\177\000\000\002q\000\000\002q\000\000\000\000\nb\000\000\002q\002q\002q\000\000\002q\002q\002q\007\177\000\000\000\000\005\222\000\000\002q\002q\002q\n\162\002q\007\177\002q\000\000\022\214\007\177\000\000\000\000\002q\002q\002q\002q\002q\000\000\000\000\000\000\000\000\002q\000\000\002q\011b\002q\002q\011j\000\000\000\000\000\000\002q\002q\002q\011r\000\000\000\000\000\000\011z\000\000\002q\002q\nj\n\170\002q\002q\002q\002q\002q\000\000\000\000\002q\000\000\002q\002q\002q\000\000\000\000\000\000\012%\012%\000\000\002q\012%\002q\002q\002q\000\000\002q\002q\002q\002q\000\000\000\000\012!\012!\000\000\002q\012!\002q\002q\000\000\002q\002q\002q\002q\002q\002q\000\000\000\000\002q\002q\002q\000\000\000\000\000\000\002m\002q\002q\002q\002q\002m\002\237\000\238\002m\000\000\015\130\000\000\002m\000\000\002m\000\000\000\000\nb\000\000\002m\002m\002m\000\238\002m\002m\002m\b\r\000\000\000\000\000\000\b\r\002m\002m\002m\n\162\002m\000\n\002m\000\000\000\000\012%\000\000\000\000\002m\002m\002m\002m\002m\000\000\000\000\000\000\000\000\002m\002\237\002m\012!\002m\002m\000\000\000\000\000\000\007\021\002m\002m\002m\007\021\002\237\002\237\000\000\000\000\b\r\002m\002m\nj\n\170\002m\002m\002m\002m\002m\000\000\000\000\002m\000\000\002m\002m\002m\000\000\000\000\000\000\000\000\000\000\b\r\002m\000\000\002m\002m\002m\000\000\002m\002m\002m\002m\000\000\000\000\000\238\000\000\000\000\002m\000\000\002m\002m\000\000\002m\002m\002m\002m\002m\002m\000\000\000\000\002m\002m\002m\000\000\000\000\000\000\002\149\002m\002m\002m\002m\002\149\004\246\001\006\002\149\000\000\000\000\007\021\002\149\000\000\002\149\000\000\000\000\nb\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\b\t\000\000\000\000\000\000\b\t\n\154\n\178\n\186\n\162\n\194\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002\149\002\149\n\202\n\210\002\149\000\000\000\000\n\022\003\134\002\149\000\000\002\149\000\000\n\218\002\149\000\000\000\000\000\000\000\000\002\149\002\149\000\238\021\130\000\000\021\142\000\000\000\000\b\t\002\149\002\149\nj\n\170\n\226\n\234\n\250\002\149\002\149\000\000\000\000\002\149\000\000\002\149\002\149\011\002\000\000\000\000\000\000\000\000\000\000\b\t\002\149\000\000\002\149\002\149\011\n\000\000\002\149\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\002\149\002\149\002\149\n\242\002\149\002\149\000\000\000\000\002\149\011\018\002\149\000\000\000\000\000\000\002}\002\149\002\149\011\026\011\"\002}\004\246\001\006\002}\000\000\000\000\000\000\002}\000\000\002}\000\000\000\000\nb\000\000\002}\002}\002}\000\000\002}\002}\002}\000\000\000\000\000\000\000\000\000\000\002}\002}\002}\n\162\002}\000\000\002}\000\000\000\000\000\000\000\000\000\000\002}\002}\002}\002}\002}\000\000\000\000\022\026\003\134\002}\000\000\002}\000\000\002}\002}\000\000\000\000\000\000\000\000\002}\002}\002}\022.\000\000\022B\000\000\000\000\000\000\002}\002}\nj\n\170\002}\002}\002}\002}\002}\000\000\000\000\002}\000\000\002}\002}\002}\000\000\000\000\000\000\000\000\000\000\000\000\002}\000\000\002}\002}\002}\000\000\002}\002}\002}\002}\000\000\000\000\000\000\000\000\000\000\002}\000\000\002}\002}\000\000\002}\002}\002}\002}\002}\002}\000\000\000\000\002}\002}\002}\000\000\000\000\000\000\002y\002}\002}\002}\002}\002y\000\000\000\000\002y\000\000\000\000\000\000\002y\000\000\002y\000\000\000\000\nb\000\000\002y\002y\002y\000\000\002y\002y\002y\000\000\000\000\000\000\000\000\000\000\002y\002y\002y\n\162\002y\000\000\002y\000\000\000\000\000\000\000\000\000\000\002y\002y\002y\002y\002y\000\000\000\000\000\000\000\000\002y\000\000\002y\000\000\002y\002y\000\000\000\000\000\000\000\000\002y\002y\002y\000\000\000\000\000\000\000\000\000\000\000\000\002y\002y\nj\n\170\002y\002y\002y\002y\002y\000\000\000\000\002y\000\000\002y\002y\002y\000\000\000\000\000\000\000\000\000\000\000\000\002y\000\000\002y\002y\002y\000\000\002y\002y\002y\002y\000\000\000\000\000\000\000\000\000\000\002y\000\000\002y\002y\000\000\002y\002y\002y\002y\002y\002y\000\000\000\000\002y\002y\002y\000\000\000\000\000\000\002\141\002y\002y\002y\002y\002\141\000\000\000\000\002\141\000\000\000\000\000\000\002\141\000\000\002\141\000\000\000\000\nb\000\000\002\141\002\141\002\141\000\000\002\141\002\141\002\141\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\002\141\000\000\002\141\000\000\000\000\000\000\000\000\000\000\002\141\002\141\n\202\n\210\002\141\000\000\000\000\000\000\000\000\002\141\000\000\002\141\000\000\002\141\002\141\000\000\000\000\000\000\000\000\002\141\002\141\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\141\002\141\nj\n\170\n\226\n\234\002\141\002\141\002\141\000\000\000\000\002\141\000\000\002\141\002\141\002\141\000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\141\002\141\002\141\000\000\002\141\002\141\002\141\002\141\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\141\002\141\000\000\002\141\002\141\002\141\n\242\002\141\002\141\000\000\000\000\002\141\002\141\002\141\000\000\000\000\000\000\002a\002\141\002\141\002\141\002\141\002a\000\000\000\000\002a\000\000\000\000\000\000\002a\000\000\002a\000\000\000\000\nb\000\000\002a\002a\002a\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\n\162\002a\000\000\002a\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\000\000\000\000\000\000\000\000\002a\000\000\002a\000\000\002a\002a\000\000\000\000\000\000\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\000\000\002a\002a\nj\n\170\002a\002a\002a\002a\002a\000\000\000\000\002a\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\000\000\002a\000\000\002a\002a\002a\000\000\002a\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\002a\000\000\002a\002a\000\000\002a\002a\002a\002a\002a\002a\000\000\000\000\002a\002a\002a\000\000\000\000\000\000\002]\002a\002a\002a\002a\002]\000\000\000\000\002]\000\000\000\000\000\000\002]\000\000\002]\000\000\000\000\nb\000\000\002]\002]\002]\000\000\002]\002]\002]\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\002]\000\000\002]\000\000\000\000\000\000\000\000\000\000\002]\002]\n\202\n\210\002]\000\000\000\000\000\000\000\000\002]\000\000\002]\000\000\002]\002]\000\000\000\000\000\000\000\000\002]\002]\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002]\002]\nj\n\170\n\226\n\234\002]\002]\002]\000\000\000\000\002]\000\000\002]\002]\002]\000\000\000\000\000\000\000\000\000\000\000\000\002]\000\000\002]\002]\002]\000\000\002]\002]\002]\002]\000\000\000\000\000\000\000\000\000\000\002]\000\000\002]\002]\000\000\002]\002]\002]\n\242\002]\002]\000\000\000\000\002]\002]\002]\000\000\000\000\000\000\002\185\002]\002]\002]\002]\002\185\000\000\000\000\002\185\000\000\000\000\000\000\002\185\000\000\002\185\000\000\000\000\nb\000\000\002\185\002\185\002\185\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\002\185\000\000\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\n\202\n\210\002\185\000\000\000\000\000\000\000\000\002\185\000\000\002\185\000\000\002\185\002\185\000\000\000\000\000\000\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\000\000\002\185\002\185\nj\n\170\n\226\002\185\002\185\002\185\002\185\000\000\000\000\002\185\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\000\000\002\185\000\000\002\185\002\185\002\185\000\000\002\185\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\002\185\002\185\002\185\n\242\002\185\002\185\000\000\000\000\002\185\002\185\002\185\000\000\000\000\000\000\002Y\002\185\002\185\002\185\002\185\002Y\000\000\000\000\002Y\000\000\000\000\000\000\002Y\000\000\002Y\000\000\000\000\nb\000\000\002Y\002Y\002Y\000\000\002Y\002Y\002Y\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\002Y\000\000\002Y\000\000\000\000\000\000\000\000\000\000\002Y\002Y\n\202\n\210\002Y\000\000\000\000\000\000\000\000\002Y\000\000\002Y\000\000\002Y\002Y\000\000\000\000\000\000\000\000\002Y\002Y\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002Y\002Y\nj\n\170\n\226\n\234\002Y\002Y\002Y\000\000\000\000\002Y\000\000\002Y\002Y\002Y\000\000\000\000\000\000\000\000\000\000\000\000\002Y\000\000\002Y\002Y\002Y\000\000\002Y\002Y\002Y\002Y\000\000\000\000\000\000\000\000\000\000\002Y\000\000\002Y\002Y\000\000\002Y\002Y\002Y\n\242\002Y\002Y\000\000\000\000\002Y\002Y\002Y\000\000\000\000\000\000\002\145\002Y\002Y\002Y\002Y\002\145\000\000\000\000\002\145\000\000\000\000\000\000\002\145\000\000\002\145\000\000\000\000\nb\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\002\145\000\000\002\145\000\000\000\000\000\000\000\000\000\000\002\145\002\145\n\202\n\210\002\145\000\000\000\000\000\000\000\000\002\145\000\000\002\145\000\000\002\145\002\145\000\000\000\000\000\000\000\000\002\145\002\145\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\145\nj\n\170\n\226\n\234\002\145\002\145\002\145\000\000\000\000\002\145\000\000\002\145\002\145\002\145\000\000\000\000\000\000\000\000\000\000\000\000\002\145\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\002\145\000\000\000\000\000\000\000\000\000\000\002\145\000\000\002\145\002\145\000\000\002\145\002\145\002\145\n\242\002\145\002\145\000\000\000\000\002\145\002\145\002\145\000\000\000\000\000\000\002\137\002\145\002\145\002\145\002\145\002\137\000\000\000\000\002\137\000\000\000\000\000\000\002\137\000\000\002\137\000\000\000\000\nb\000\000\002\137\002\137\002\137\000\000\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\002\137\000\000\002\137\000\000\000\000\000\000\000\000\000\000\002\137\002\137\n\202\n\210\002\137\000\000\000\000\000\000\000\000\002\137\000\000\002\137\000\000\002\137\002\137\000\000\000\000\000\000\000\000\002\137\002\137\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\137\002\137\nj\n\170\n\226\n\234\002\137\002\137\002\137\000\000\000\000\002\137\000\000\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\000\000\002\137\000\000\002\137\002\137\002\137\000\000\002\137\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\002\137\000\000\002\137\002\137\000\000\002\137\002\137\002\137\n\242\002\137\002\137\000\000\000\000\002\137\002\137\002\137\000\000\000\000\000\000\002\153\002\137\002\137\002\137\002\137\002\153\000\000\000\000\002\153\000\000\000\000\000\000\002\153\000\000\002\153\000\000\000\000\nb\000\000\002\153\002\153\002\153\000\000\002\153\002\153\002\153\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\n\202\n\210\002\153\000\000\000\000\000\000\000\000\002\153\000\000\002\153\000\000\n\218\002\153\000\000\000\000\000\000\000\000\002\153\002\153\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\153\002\153\nj\n\170\n\226\n\234\n\250\002\153\002\153\000\000\000\000\002\153\000\000\002\153\002\153\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\153\000\000\002\153\002\153\011\n\000\000\002\153\002\153\002\153\002\153\000\000\000\000\000\000\000\000\000\000\002\153\000\000\002\153\002\153\000\000\002\153\002\153\002\153\n\242\002\153\002\153\000\000\000\000\002\153\011\018\002\153\000\000\000\000\000\000\002\157\002\153\002\153\011\026\011\"\002\157\000\000\000\000\002\157\000\000\000\000\000\000\002\157\000\000\002\157\000\000\000\000\nb\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\002\157\000\000\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\n\202\n\210\002\157\000\000\000\000\000\000\000\000\002\157\000\000\002\157\000\000\n\218\002\157\000\000\000\000\000\000\000\000\002\157\002\157\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\nj\n\170\n\226\n\234\n\250\002\157\002\157\000\000\000\000\002\157\000\000\002\157\002\157\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\157\000\000\002\157\002\157\011\n\000\000\002\157\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\002\157\002\157\002\157\n\242\002\157\002\157\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\002\161\002\157\002\157\011\026\011\"\002\161\000\000\000\000\002\161\000\000\000\000\000\000\002\161\000\000\002\161\000\000\000\000\nb\000\000\002\161\002\161\002\161\000\000\002\161\002\161\002\161\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\002\161\000\000\002\161\000\000\000\000\000\000\000\000\000\000\002\161\002\161\n\202\n\210\002\161\000\000\000\000\000\000\000\000\002\161\000\000\002\161\000\000\n\218\002\161\000\000\000\000\000\000\000\000\002\161\002\161\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\161\nj\n\170\n\226\n\234\n\250\002\161\002\161\000\000\000\000\002\161\000\000\002\161\002\161\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\161\000\000\002\161\002\161\011\n\000\000\002\161\002\161\002\161\002\161\000\000\000\000\000\000\000\000\000\000\002\161\000\000\002\161\002\161\000\000\002\161\002\161\002\161\n\242\002\161\002\161\000\000\000\000\002\161\002\161\002\161\000\000\000\000\000\000\b\229\002\161\002\161\011\026\011\"\b\229\000\000\000\000\b\229\000\000\000\000\000\000\b\229\000\000\b\229\000\000\000\000\nb\000\000\b\229\b\229\b\229\000\000\b\229\b\229\b\229\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\b\229\000\000\000\000\000\000\000\000\000\000\b\229\b\229\n\202\n\210\b\229\000\000\000\000\000\000\000\000\b\229\000\000\b\229\000\000\n\218\b\229\000\000\000\000\000\000\000\000\b\229\b\229\000\238\000\000\000\000\000\000\000\000\000\000\000\000\b\229\b\229\nj\n\170\n\226\n\234\n\250\b\229\b\229\000\000\000\000\b\229\000\000\b\229\b\229\011\002\000\000\000\000\000\000\000\000\000\000\000\000\b\229\000\000\b\229\b\229\011\n\000\000\b\229\b\229\b\229\b\229\000\000\000\000\000\000\000\000\000\000\b\229\000\000\b\229\b\229\000\000\b\229\b\229\b\229\n\242\b\229\b\229\000\000\000\000\b\229\011\018\b\229\000\000\000\000\000\000\002\165\b\229\b\229\011\026\011\"\002\165\000\000\000\000\002\165\000\000\000\000\000\000\002\165\000\000\002\165\000\000\000\000\nb\000\000\002\165\002\165\002\165\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\165\000\000\000\000\000\000\000\000\000\000\002\165\002\165\n\202\n\210\002\165\000\000\000\000\000\000\000\000\002\165\000\000\002\165\000\000\n\218\002\165\000\000\000\000\000\000\000\000\002\165\002\165\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\165\002\165\nj\n\170\n\226\n\234\n\250\002\165\002\165\000\000\000\000\002\165\000\000\002\165\002\165\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\165\000\000\002\165\002\165\011\n\000\000\002\165\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\011*\002\165\0112\n\242\002\165\002\165\000\000\000\000\002\165\011\018\002\165\000\000\000\000\000\000\b\225\002\165\002\165\011\026\011\"\b\225\000\000\000\000\b\225\000\000\000\000\000\000\b\225\000\000\b\225\000\000\000\000\nb\000\000\b\225\b\225\b\225\000\000\b\225\b\225\b\225\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\b\225\000\000\000\000\000\000\000\000\000\000\b\225\b\225\n\202\n\210\b\225\000\000\000\000\000\000\000\000\b\225\000\000\b\225\000\000\n\218\b\225\000\000\000\000\000\000\000\000\b\225\b\225\000\238\000\000\000\000\000\000\000\000\000\000\000\000\b\225\b\225\nj\n\170\n\226\n\234\n\250\b\225\b\225\000\000\000\000\b\225\000\000\b\225\b\225\011\002\000\000\000\000\000\000\000\000\000\000\000\000\b\225\000\000\b\225\b\225\011\n\000\000\b\225\b\225\b\225\b\225\000\000\000\000\000\000\000\000\000\000\b\225\000\000\b\225\b\225\000\000\b\225\b\225\b\225\n\242\b\225\b\225\000\000\000\000\b\225\011\018\b\225\000\000\000\000\000\000\002\209\b\225\b\225\011\026\011\"\002\209\000\000\000\000\002\209\000\000\000\000\000\000\002\209\000\000\002\209\000\000\000\000\nb\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\n\202\n\210\002\209\000\000\000\000\000\000\000\000\002\209\000\000\002\209\000\000\n\218\002\209\000\000\000\000\000\000\000\000\002\209\002\209\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\nj\n\170\n\226\n\234\n\250\002\209\002\209\000\000\000\000\002\209\000\000\002\209\002\209\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\209\000\000\002\209\002\209\011\n\000\000\002\209\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\011*\002\209\0112\n\242\002\209\002\209\000\000\000\000\002\209\011\018\002\209\000\000\000\000\000\000\002\225\002\209\002\209\011\026\011\"\002\225\000\000\000\000\002\225\000\000\000\000\000\000\002\225\000\000\002\225\000\000\000\000\nb\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\n\202\n\210\002\225\000\000\000\000\000\000\000\000\002\225\000\000\002\225\000\000\n\218\002\225\000\000\000\000\000\000\000\000\002\225\002\225\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\nj\n\170\n\226\n\234\n\250\002\225\002\225\000\000\000\000\002\225\000\000\002\225\002\225\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\225\000\000\002\225\002\225\011\n\000\000\002\225\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\011*\002\225\0112\n\242\002\225\002\225\000\000\000\000\002\225\011\018\002\225\000\000\000\000\000\000\002\217\002\225\002\225\011\026\011\"\002\217\000\000\000\000\002\217\000\000\000\000\000\000\002\217\000\000\002\217\000\000\000\000\nb\000\000\002\217\002\217\002\217\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\n\202\n\210\002\217\000\000\000\000\000\000\000\000\002\217\000\000\002\217\000\000\n\218\002\217\000\000\000\000\000\000\000\000\002\217\002\217\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\217\002\217\nj\n\170\n\226\n\234\n\250\002\217\002\217\000\000\000\000\002\217\000\000\002\217\002\217\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\217\000\000\002\217\002\217\011\n\000\000\002\217\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\002\217\000\000\002\217\002\217\000\000\011*\002\217\0112\n\242\002\217\002\217\000\000\000\000\002\217\011\018\002\217\000\000\000\000\000\000\002\197\002\217\002\217\011\026\011\"\002\197\000\000\000\000\002\197\000\000\000\000\000\000\002\197\000\000\002\197\000\000\000\000\nb\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\n\202\n\210\002\197\000\000\000\000\000\000\000\000\002\197\000\000\002\197\000\000\n\218\002\197\000\000\000\000\000\000\000\000\002\197\002\197\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\nj\n\170\n\226\n\234\n\250\002\197\002\197\000\000\000\000\002\197\000\000\002\197\002\197\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\197\000\000\002\197\002\197\011\n\000\000\002\197\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\011*\002\197\0112\n\242\002\197\002\197\000\000\000\000\002\197\011\018\002\197\000\000\000\000\000\000\002\205\002\197\002\197\011\026\011\"\002\205\000\000\000\000\002\205\000\000\000\000\000\000\002\205\000\000\002\205\000\000\000\000\nb\000\000\002\205\002\205\002\205\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\n\202\n\210\002\205\000\000\000\000\000\000\000\000\002\205\000\000\002\205\000\000\n\218\002\205\000\000\000\000\000\000\000\000\002\205\002\205\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\205\002\205\nj\n\170\n\226\n\234\n\250\002\205\002\205\000\000\000\000\002\205\000\000\002\205\002\205\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\205\000\000\002\205\002\205\011\n\000\000\002\205\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\002\205\000\000\002\205\002\205\000\000\011*\002\205\0112\n\242\002\205\002\205\000\000\000\000\002\205\011\018\002\205\000\000\000\000\000\000\002\201\002\205\002\205\011\026\011\"\002\201\000\000\000\000\002\201\000\000\000\000\000\000\002\201\000\000\002\201\000\000\000\000\nb\000\000\002\201\002\201\002\201\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\n\202\n\210\002\201\000\000\000\000\000\000\000\000\002\201\000\000\002\201\000\000\n\218\002\201\000\000\000\000\000\000\000\000\002\201\002\201\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\nj\n\170\n\226\n\234\n\250\002\201\002\201\000\000\000\000\002\201\000\000\002\201\002\201\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\201\000\000\002\201\002\201\011\n\000\000\002\201\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\002\201\000\000\002\201\002\201\000\000\011*\002\201\0112\n\242\002\201\002\201\000\000\000\000\002\201\011\018\002\201\000\000\000\000\000\000\002\213\002\201\002\201\011\026\011\"\002\213\000\000\000\000\002\213\000\000\000\000\000\000\002\213\000\000\002\213\000\000\000\000\nb\000\000\002\213\002\213\002\213\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\n\202\n\210\002\213\000\000\000\000\000\000\000\000\002\213\000\000\002\213\000\000\n\218\002\213\000\000\000\000\000\000\000\000\002\213\002\213\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\213\nj\n\170\n\226\n\234\n\250\002\213\002\213\000\000\000\000\002\213\000\000\002\213\002\213\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\213\000\000\002\213\002\213\011\n\000\000\002\213\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\002\213\000\000\002\213\002\213\000\000\011*\002\213\0112\n\242\002\213\002\213\000\000\000\000\002\213\011\018\002\213\000\000\000\000\000\000\002\229\002\213\002\213\011\026\011\"\002\229\000\000\000\000\002\229\000\000\000\000\000\000\002\229\000\000\002\229\000\000\000\000\nb\000\000\002\229\002\229\002\229\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\n\202\n\210\002\229\000\000\000\000\000\000\000\000\002\229\000\000\002\229\000\000\n\218\002\229\000\000\000\000\000\000\000\000\002\229\002\229\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\nj\n\170\n\226\n\234\n\250\002\229\002\229\000\000\000\000\002\229\000\000\002\229\002\229\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\229\000\000\002\229\002\229\011\n\000\000\002\229\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\011*\002\229\0112\n\242\002\229\002\229\000\000\000\000\002\229\011\018\002\229\000\000\000\000\000\000\002\221\002\229\002\229\011\026\011\"\002\221\000\000\000\000\002\221\000\000\000\000\000\000\002\221\000\000\002\221\000\000\000\000\nb\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\n\202\n\210\002\221\000\000\000\000\000\000\000\000\002\221\000\000\002\221\000\000\n\218\002\221\000\000\000\000\000\000\000\000\002\221\002\221\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\nj\n\170\n\226\n\234\n\250\002\221\002\221\000\000\000\000\002\221\000\000\002\221\002\221\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\221\000\000\002\221\002\221\011\n\000\000\002\221\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\011*\002\221\0112\n\242\002\221\002\221\000\000\000\000\002\221\011\018\002\221\000\000\000\000\000\000\002\193\002\221\002\221\011\026\011\"\002\193\000\000\000\000\002\193\000\000\000\000\000\000\002\193\000\000\002\193\000\000\000\000\nb\000\000\002\193\002\193\002\193\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\193\000\000\000\000\000\000\000\000\000\000\002\193\002\193\n\202\n\210\002\193\000\000\000\000\000\000\000\000\002\193\000\000\002\193\000\000\n\218\002\193\000\000\000\000\000\000\000\000\002\193\002\193\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\193\002\193\nj\n\170\n\226\n\234\n\250\002\193\002\193\000\000\000\000\002\193\000\000\002\193\002\193\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\193\000\000\002\193\002\193\011\n\000\000\002\193\002\193\002\193\002\193\000\000\000\000\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\011*\002\193\0112\n\242\002\193\002\193\000\000\000\000\002\193\011\018\002\193\000\000\000\000\000\000\002\029\002\193\002\193\011\026\011\"\002\029\000\000\000\000\002\029\000\000\000\000\000\000\002\029\000\000\002\029\000\000\000\000\002\029\000\000\002\029\002\029\002\029\000\000\002\029\002\029\002\029\000\000\000\000\000\000\000\000\000\000\002\029\002\029\002\029\002\029\002\029\000\000\002\029\000\000\000\000\000\000\000\000\000\000\002\029\002\029\002\029\002\029\002\029\000\000\000\000\000\000\000\000\002\029\000\000\002\029\000\000\002\029\002\029\000\000\000\000\000\000\000\000\002\029\002\029\002\029\000\000\000\000\000\000\000\000\000\000\000\000\002\029\002\029\002\029\002\029\002\029\002\029\002\029\002\029\002\029\000\000\000\000\002\029\000\000\002\029\002\029\002\029\000\000\000\000\000\000\000\000\000\000\000\000\002\029\000\000\002\029\002\029\002\029\000\000\002\029\002\029\002\029\002\029\000\000\000\000\000\000\000\000\000\000\002\029\000\000\002\029\002\029\000\000\002\029\002\029\002\029\002\029\002\029\002\029\000\000\000\000\002\029\002\029\024\026\000\000\000\000\000\000\0025\002\029\002\029\002\029\002\029\0025\000\000\000\000\0025\000\000\000\000\000\000\0025\000\000\0025\000\000\000\000\nb\000\000\0025\0025\0025\000\000\0025\0025\0025\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\0025\000\000\000\000\000\000\000\000\000\000\0025\0025\n\202\n\210\0025\000\000\000\000\000\000\000\000\0025\000\000\0025\000\000\n\218\0025\000\000\000\000\000\000\000\000\0025\0025\000\238\000\000\000\000\000\000\000\000\000\000\000\000\0025\0025\nj\n\170\n\226\n\234\n\250\0025\0025\000\000\000\000\0025\000\000\0025\0025\011\002\000\000\000\000\000\000\000\000\000\000\000\000\0025\000\000\0025\0025\011\n\000\000\0025\0025\0242\0025\000\000\000\000\000\000\000\000\000\000\0025\000\000\0025\0025\000\000\011*\0025\0112\n\242\0025\0025\000\000\000\000\0025\011\018\0025\000\000\000\000\000\000\0021\0025\0025\011\026\011\"\0021\000\000\000\000\0021\000\000\000\000\000\000\0021\000\000\0021\000\000\000\000\nb\000\000\0021\0021\0021\000\000\0021\0021\0021\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\0021\000\000\000\000\000\000\000\000\000\000\0021\0021\n\202\n\210\0021\000\000\000\000\000\000\000\000\0021\000\000\0021\000\000\n\218\0021\000\000\000\000\000\000\000\000\0021\0021\000\238\000\000\000\000\000\000\000\000\000\000\000\000\0021\0021\nj\n\170\n\226\n\234\n\250\0021\0021\000\000\000\000\0021\000\000\0021\0021\011\002\000\000\000\000\000\000\000\000\000\000\000\000\0021\000\000\0021\0021\011\n\000\000\0021\0021\0021\0021\000\000\000\000\000\000\000\000\000\000\0021\000\000\0021\0021\000\000\011*\0021\0112\n\242\0021\0021\000\000\000\000\0021\011\018\0021\000\000\000\000\000\000\002\189\0021\0021\011\026\011\"\002\189\000\000\000\000\002\189\000\000\000\000\000\000\002\189\000\000\002\189\000\000\000\000\nb\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\n\202\n\210\002\189\000\000\000\000\000\000\000\000\002\189\000\000\002\189\000\000\n\218\002\189\000\000\000\000\000\000\000\000\002\189\002\189\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\nj\n\170\n\226\n\234\n\250\002\189\002\189\000\000\000\000\002\189\000\000\002\189\002\189\011\002\000\000\000\000\000\000\000\000\000\000\000\000\002\189\000\000\002\189\002\189\011\n\000\000\002\189\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\011*\002\189\0112\n\242\002\189\002\189\000\000\000\000\002\189\011\018\002\189\000\000\000\000\000\000\002)\002\189\002\189\011\026\011\"\002)\000\000\000\000\002)\000\000\000\000\000\000\002)\000\000\002)\000\000\000\000\002)\000\000\002)\002)\002)\000\000\002)\002)\002)\000\000\000\000\000\000\000\000\000\000\002)\002)\002)\002)\002)\000\000\002)\000\000\000\000\000\000\000\000\000\000\002)\002)\002)\002)\002)\000\000\000\000\000\000\000\000\002)\000\000\002)\000\000\002)\002)\000\000\000\000\000\000\000\000\002)\002)\002)\000\000\000\000\000\000\000\000\000\000\000\000\002)\002)\002)\002)\002)\002)\002)\002)\002)\000\000\000\000\002)\000\000\002)\002)\002)\000\000\000\000\000\000\000\000\000\000\000\000\002)\000\000\002)\002)\002)\000\000\002)\002)\002)\002)\000\000\000\000\000\000\000\000\000\000\002)\000\000\002)\002)\000\000\002)\002)\002)\002)\002)\002)\000\000\000\000\002)\002)\024\026\000\000\000\000\000\000\001\233\002)\002)\002)\002)\001\233\000\000\000\000\001\233\000\000\000\000\000\000\001\233\000\000\001\233\000\000\000\000\001\233\000\000\001\233\001\233\001\233\000\000\001\233\001\233\001\233\000\000\000\000\000\000\000\000\000\000\001\233\001\233\001\233\001\233\001\233\000\000\001\233\000\000\000\000\000\000\000\000\000\000\001\233\001\233\001\233\001\233\001\233\000\000\000\000\000\000\000\000\001\233\000\000\001\233\000\000\001\233\001\233\000\000\000\000\000\000\000\000\001\233\001\233\001\233\000\000\000\000\000\000\000\000\000\000\000\000\001\233\001\233\001\233\001\233\001\233\001\233\001\233\001\233\001\233\000\000\000\000\001\233\000\000\001\233\001\233\001\233\000\000\000\000\000\000\000\000\000\000\000\000\001\233\000\000\001\233\001\233\001\233\000\000\001\233\001\233\001\233\001\233\000\000\000\000\000\000\000\000\000\000\001\233\000\000\001\233\001\233\000\000\001\233\001\233\001\233\001\233\001\233\001\233\000\000\000\000\001\233\001\233\024\026\000\000\000\000\000\000\002-\001\233\001\233\001\233\001\233\002-\000\000\000\000\002-\000\000\000\000\000\000\002-\000\000\002-\000\000\000\000\002-\000\000\002-\002-\002-\000\000\002-\002-\002-\000\000\000\000\000\000\000\000\000\000\002-\002-\002-\002-\002-\000\000\002-\000\000\000\000\000\000\000\000\000\000\002-\002-\002-\002-\002-\000\000\000\000\000\000\000\000\002-\000\000\002-\000\000\002-\002-\000\000\000\000\000\000\000\000\002-\002-\002-\000\000\000\000\000\000\000\000\000\000\000\000\002-\002-\002-\002-\002-\002-\002-\002-\002-\000\000\000\000\002-\000\000\002-\002-\002-\000\000\000\000\000\000\000\000\000\000\000\000\002-\000\000\002-\002-\002-\000\000\002-\002-\002-\002-\000\000\000\000\000\000\000\000\000\000\002-\000\000\002-\002-\000\000\002-\002-\002-\002-\002-\002-\000\000\000\000\002-\002-\024\026\000\000\000\000\000\000\027>\002-\002-\002-\002-\001\237\000\000\000\000\001\237\000\000\000\000\000\000\001\237\000\000\001\237\000\000\000\000\001\237\000\000\001\237\001\237\001\237\000\000\001\237\001\237\001\237\000\000\000\000\000\000\000\000\000\000\001\237\001\237\001\237\001\237\001\237\000\000\001\237\000\000\000\000\000\000\000\000\000\000\001\237\001\237\001\237\001\237\001\237\000\000\000\000\000\000\000\000\001\237\000\000\001\237\000\000\001\237\001\237\000\000\000\000\000\000\000\000\001\237\001\237\001\237\000\000\000\000\000\000\000\000\000\000\000\000\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\000\000\000\000\001\237\000\000\001\237\001\237\001\237\000\000\000\000\000\000\000\000\000\000\000\000\027N\000\000\001\237\001\237\001\237\000\000\001\237\001\237\001\237\001\237\000\000\000\000\000\000\000\000\000\000\001\237\000\000\001\237\001\237\000\000\001\237\001\237\001\237\001\237\001\237\001\237\000\000\000\000\001\237\001\237\001\237\000\000\000\000\000\000\001\241\001\237\001\237\001\237\001\237\001\241\000\000\000\000\001\241\000\000\000\000\000\000\001\241\000\000\001\241\000\000\000\000\001\241\000\000\001\241\001\241\001\241\000\000\001\241\001\241\001\241\000\000\000\000\000\000\000\000\000\000\001\241\001\241\001\241\001\241\001\241\000\000\001\241\000\000\000\000\000\000\000\000\000\000\001\241\001\241\001\241\001\241\001\241\000\000\000\000\000\000\000\000\001\241\000\000\001\241\000\000\001\241\001\241\000\000\000\000\000\000\000\000\001\241\001\241\001\241\000\000\000\000\000\000\000\000\000\000\000\000\001\241\001\241\001\241\001\241\001\241\001\241\001\241\001\241\001\241\000\000\000\000\001\241\000\000\001\241\001\241\001\241\000\000\000\000\000\000\000\000\000\000\000\000\027F\000\000\001\241\001\241\001\241\000\000\001\241\001\241\001\241\001\241\000\000\000\000\000\000\000\000\000\000\001\241\000\000\001\241\001\241\000\000\001\241\001\241\001\241\001\241\001\241\001\241\000\000\000\000\001\241\001\241\024\026\000\000\000\000\000\000\000\000\001\241\001\241\001\241\001\241\000\006\000\246\000\000\000\000\007\t\001\002\001\006\000\000\001\n\001\022\001\"\000\000\000\000\000\000\000\000\001&\001b\000\000\000\000\000\000\001f\000\000\000\000\000\000\007\t\001*\000\000\000\000\000\000\003\210\001n\tb\tf\001z\001~\000\000\000\000\000\000\0012\000\000\003z\000\000\025N\000\000\t\134\t\138\007\t\003\182\003\194\003\206\003\218\003\226\t\142\007:\000\000\001\206\007\t\003F\000\000\000\000\003\214\007\t\007\t\000\238\b\154\b\158\b\170\b\186\000\000\005n\007\t\007\t\001\210\001\214\001\218\001\222\001\226\000\000\000\000\b\210\001\230\000\000\000\000\000\000\000\000\001\234\000\000\b\222\b\246\t\022\t*\005z\000\000\005~\000\000\000\000\001\238\000\000\000\000\007\t\000\000\000\000\b\178\001\242\b\182\000\000\000\000\000\000\000\000\000\000\007\t\000\000\000\000\000\000\002.\006\"\000\000\000\000\005\130\b\198\000\000\0022\000\000\022\246\004j\t\162\020R\002:\000\000\002>\002B\000\006\000\246\000\000\000\000\001\189\001\002\001\006\000\000\001\n\001\022\001\"\000\000\000\000\000\000\000\000\001&\001b\000\000\000\000\000\000\t^\000\000\000\000\000\000\001\189\001*\000\000\000\000\000\000\003\210\001n\tb\tf\001z\001~\000\000\000\000\b\242\0012\000\000\003z\000\000\tj\000\000\t\134\t\138\001\189\003\182\003\194\003\206\003\218\003\226\t\142\007:\007-\001\206\001\189\003F\007-\000\000\003\214\001\189\001\189\000\238\b\154\b\158\b\170\b\186\000\000\005n\001\189\001\189\001\210\001\214\001\218\001\222\001\226\000\000\024\006\b\210\001\230\000\000\000\000\000\000\000\000\001\234\000\000\b\222\b\246\t\022\t*\005z\000\000\005~\000\000\000\000\001\238\000\000\000\238\001\189\000\000\000\000\b\178\001\242\b\182\000\000\002\237\002\237\011\186\000\000\001\189\000\000\000\000\000\000\002.\006^\000\000\000\000\005\130\b\198\000\000\0022\002\237\022\246\004j\t\162\000\000\002:\000\000\002>\002B\000\006\000\246\000\000\000\n\001\174\001\002\001\006\002\182\001\n\001\022\001\"\000\000\000\000\000\000\000\000\001&\0062\000\000\003N\005\222\000\000\000\000\004\149\000\000\003R\001*\006F\011\166\000\000\001.\006N\003V\003Z\002\237\002\237\002\237\003^\000\000\0012\000\000\003z\000\000\011\182\002\237\003\174\003\178\000\000\003\182\003\194\003\206\003\218\003\226\006\234\007:\002\237\000\000\012B\003F\000\000\000\000\003\214\012J\000\n\000\000\b\154\b\158\b\170\b\186\000\000\005n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012R\002\237\b\210\002\237\002\237\014\202\000\000\000\000\000\000\002\237\b\222\b\246\t\022\t*\005z\002\237\005~\012f\012\170\002\237\000\000\004\149\004\149\000\000\000\000\b\178\000\000\b\182\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\002\237\r\138\018\014\005\130\b\198\025>\000\000\000\000\t>\004j\t\162\000\006\000\246\000\000\000\000\001\174\001\002\001\006\002\182\001\n\001\022\001\"\000\000\002\237\000\000\000\000\001&\000\000\000\000\004\181\000\000\b\253\000\000\b\253\b\253\003R\001*\003b\001\006\000\000\001.\000\000\003V\003Z\000\000\000\000\000\000\003^\000\000\0012\000\000\003z\000\000\011\182\000\000\003\174\003\178\001*\003\182\003\194\003\206\003\218\003\226\006\234\007:\000\000\000\000\012B\003F\000\000\018*\003\214\012J\002Z\002^\b\154\b\158\b\170\b\186\000\000\005n\019~\003\134\000\000\000\000\019\130\000\000\000\000\012R\003F\b\210\000\000\028\146\001*\002\134\002r\019\178\000\000\b\222\b\246\t\022\t*\005z\002~\005~\012f\012\170\000\000\000\000\028\179\024:\000\000\000\000\b\178\000\000\b\182\000\000\002\130\003.\000\000\019\194\000\000\000\000\003:\000\000\003F\004\026\004&\018\014\005\130\b\198\b\253\0042\000\000\t>\004j\t\162\000\006\000\246\000\000\000\000\001\174\001\002\001\006\002\182\001\n\001\022\001\"\000\000\0046\000\000\000\000\001&\002\237\000\000\028\226\000\000\002\237\000\000\003\254\000\000\003R\001*\000\000\000\000\000\000\001.\000\000\003V\003Z\000\000\000\000\000\000\003^\000\000\0012\000\000\003z\000\000\011\182\000\n\003\174\003\178\000\000\003\182\003\194\003\206\003\218\003\226\006\234\007:\000\000\004j\012B\003F\000\000\002\237\003\214\012J\002Z\002^\b\154\b\158\b\170\b\186\000\000\005n\000\000\000\000\000\000\002\237\002\237\000\000\000\000\012R\000\000\b\210\000\000\028\146\001*\002\134\002r\000\000\000\000\b\222\b\246\t\022\t*\005z\002~\005~\012f\012\170\000\000\000\000\004\189\002\142\000\000\000\000\b\178\002\237\b\182\000\000\002\130\003.\000\000\000\000\000\000\000\000\003:\000\000\003F\004\026\004&\018\014\005\130\b\198\023\006\0042\000\000\t>\004j\t\162\000\181\001\002\001\006\000\181\012\129\000\000\001\"\000\000\t\202\000\000\000\000\001&\0046\000\000\000\181\000\000\000\181\000\000\000\181\000\000\000\181\001*\000\000\t\250\005a\001.\000\000\000\000\005a\000\000\000\000\n\002\000\181\000\000\0012\000\000\003z\000\000\000\181\000\000\000\000\000\000\000\181\000\000\000\000\003\206\002N\000\181\012M\000\181\000\000\000\000\000\181\003F\000\000\000\000\003\214\000\181\000\181\000\181\b\154\b\158\b\170\000\000\019\226\005n\000\181\000\181\000\000\012M\000\000\000\000\002\194\000\181\000\000\002\198\000\000\000\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\129\012\129\005z\002\210\005~\000\181\000\181\002\218\0129\000\181\000\181\000\000\000\000\b\178\000\000\b\182\005a\000\000\000\000\000\000\000\000\000\181\000\000\012\129\000\000\000\000\012\129\000\181\000\181\005\130\b\198\000\000\002\222\005a\t>\004j\005a\000\181\000\000\000\181\000\205\001\002\001\006\000\205\000\000\000\000\001\"\000\000\t\202\000\000\000\000\001&\000\000\000\000\000\205\000\000\000\205\000\000\000\205\000\000\000\205\001*\000\000\t\250\000\000\001.\000\000\000\000\000\000\000\000\000\000\n\002\000\205\000\000\0012\000\000\003z\000\000\000\205\000\000\000\000\002\226\000\205\000\000\000\000\003\206\002N\000\205\000\000\000\205\000\000\002\237\000\205\003F\000\000\000\000\003\214\000\205\000\205\000\205\b\154\b\158\b\170\000\000\019\226\005n\000\205\000\205\011\174\000\000\000\000\002\237\000\000\000\205\000\000\000\000\000\000\000\205\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\005z\007\249\005~\000\205\000\205\000\000\002\237\000\205\000\205\002\237\000\000\b\178\000\000\b\182\000\000\000\000\002\237\000\000\000\000\000\205\000\000\002\237\000\000\002\237\000\000\000\205\000\205\005\130\b\198\000\000\002\237\002\237\t>\004j\000\000\000\205\000\014\000\205\000\018\000\022\000\026\000\030\000\238\000\"\000&\000\000\000*\000.\0002\000\000\0006\000:\000\000\000\000\000>\000\000\000\000\000\000\000B\002\237\000\000\000\000\000\000\000\000\000\000\000F\000\000\000\000\000\000\000\000\002\237\000J\000\000\000N\000R\000V\000Z\000^\000b\000f\000\000\000\000\000\000\000j\000\000\000n\000\000\000r\000\000\000\000\000v\0062\000\000\000\000\005\222\000\000\000\000\000\000\002Z\002^\000\000\006F\000\000\000\000\000z\006N\000\000\000~\000\130\000\000\000\000\000\000\000\000\001f\000\134\000\138\000\142\000\000\001*\002\134\002r\000\000\000\000\000\146\000\150\000\154\000\000\000\158\002~\000\000\000\162\000\166\000\170\000\000\000\000\002\142\000\174\000\178\000\182\000\000\000\000\000\000\002\130\003.\000\186\000\000\000\190\000\194\003:\000\000\003F\004\026\004&\000\000\000\198\000\000\000\202\0042\003\241\001B\001\006\003\241\000\206\000\210\001\"\000\214\006\186\012\141\000\000\001&\000\000\000\000\003\241\000\000\0046\000\000\003\241\000\000\003\241\001*\000\000\006\218\000\000\000\000\000\000\000\000\001F\012\141\000\000\006\242\003\241\000\000\000\000\000\000\000\000\000\000\003\241\000\000\000\000\001R\000\000\000\000\000\000\007\030\002N\003\241\000\000\003\241\012\190\012\141\003\241\003F\000\000\000\000\003\246\003\241\003\241\ne\003\250\012\141\004\002\000\000\007.\005n\012\141\012\141\000\238\000\000\000\000\000\000\000\000\003\241\003\241\012\141\012\141\005r\000\000\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\005z\002\237\005~\003\241\003\241\0076\000\000\003\241\003\241\000\000\000\000\000\000\002\237\000\000\000\000\000\000\000\000\012\141\000\000\000\000\000\n\ne\t\214\000\000\ne\024\242\003\241\005\130\012\141\000\000\000\000\ne\000\000\004j\000\000\ne\002\237\003\241\001B\001\006\005\254\000\000\000\000\001\"\002\237\000\000\000\000\000\000\001&\001b\002\237\000\000\000\000\001f\000\000\000\000\000\000\000\000\001*\000\000\002\237\000\000\001j\001n\001r\001v\001z\001~\000\000\000\000\000\000\002\237\000\000\002\237\000\000\001\130\000\000\001\194\006\030\002\237\000\000\000\000\001^\002N\000\000\001\202\000\000\000\n\001\206\000\000\003F\000\000\001\021\003\246\000\000\000\000\002\237\003\250\000\000\004\002\005b\000\000\005n\002\237\002\237\001\210\001\214\001\218\001\222\001\226\007B\002\237\001\021\001\230\005r\000\000\000\000\002\237\001\234\000\000\000\000\000\000\000\000\000\000\005z\000\000\005~\000\000\005\190\001\238\000\000\000\000\000\000\000\000\001\021\000\000\001\242\001>\000\000\000\000\002\237\000\000\000\000\000\000\001\021\000\000\000\000\002.\006\"\001\021\006\130\005\130\000\000\t\017\0022\000\000\0026\004j\001\021\001\021\002:\000\000\002>\002B\001B\001\006\007\"\000\000\000\000\001\"\000\000\000\000\000\000\000\000\001&\001b\000\000\000\000\000\000\001f\000\000\000\000\000\000\000\000\001*\000\000\001\162\001\021\001j\001n\001r\001v\001z\001~\000\238\000\000\000\000\001\166\001\021\000\000\007j\001\130\000\000\001\194\006\030\001*\000\000\000\000\001^\002N\000\000\001\202\000\000\000\000\001\206\000\000\003F\000\000\004\129\003\246\000\000\000\000\002\154\003\250\000\000\004\002\005b\000\000\005n\007f\002j\001\210\001\214\001\218\001\222\001\226\000\000\003F\004\129\001\230\005r\000\000\000\000\0062\001\234\000\000\005\222\000\000\000\000\000\000\005z\t\017\005~\006F\005\190\001\238\000\000\006N\000\000\000\000\004\129\000\000\001\242\000\000\000\000\000\000\007r\000\000\000\000\000\000\004\129\000\000\000\000\002.\006\"\004\129\011\158\005\130\000\000\015\198\0022\000\000\0026\004j\004\129\004\129\002:\012\129\002>\002B\001B\001\006\t\006\000\000\000\000\001\"\000\000\000\000\000\000\003R\001&\001b\000\000\000\000\000\000\001f\000\000\005e\000\000\000\000\001*\005e\000\000\004\129\001j\001n\001r\001v\001z\001~\000\000\015\242\000\000\000\000\004\129\000\000\000\000\001\130\000\000\001\194\006\030\012B\000\000\000\000\001^\002N\012J\001\202\000\000\000\000\001\206\000\000\003F\000\000\000\000\003\246\016\030\000\000\000\000\003\250\000\000\004\002\005b\000\000\005n\000\000\000\000\001\210\001\214\001\218\001\222\001\226\000\000\000\000\000\000\001\230\005r\000\000\012\129\012\129\001\234\000\000\000\000\000\000\004\165\000\000\005z\000\000\005~\000\000\005\190\001\238\000\000\000\000\005e\016\130\000\000\000\000\001\242\000\000\000\000\012\129\000\000\000\000\012\129\000\000\000\000\000\000\000\000\002.\006\"\005e\000\000\005\130\005e\000\000\0022\000\000\0026\004j\000\000\000\000\002:\000\000\002>\002B\001B\001\006\023\198\000\000\000\000\001\"\000\000\000\000\000\000\000\000\001&\001b\000\000\000\000\000\000\001f\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\001j\001n\001r\001v\001z\001~\000\000\000\000\003r\002\170\001\006\000\000\000\000\001\130\000\000\001\194\006\030\000\000\002\174\000\000\001^\002N\000\000\001\202\bj\000\000\001\206\000\000\003F\001*\000\000\003\246\000\000\000\000\000\000\003\250\000\000\004\002\005b\000\000\005n\000\000\000\000\001\210\001\214\001\218\001\222\001\226\000\000\000\000\000\000\001\230\005r\003n\000\000\000\000\001\234\000\000\000\000\000\000\000\000\003F\005z\000\000\005~\000\000\005\190\001\238\000\000\000\000\000\000\000\000\000\000\000\000\001\242\000\000\000\000\000\000\002\237\002\237\000\000\000\000\000\000\000\000\000\000\002.\006\"\000\000\000\000\005\130\007N\000\000\0022\000\000\0026\004j\000\000\000\000\002:\002\237\002>\002B\002\237\002\237\000\000\002\237\000\n\002\237\002\237\002\237\002\237\002\237\002\237\000\000\000\000\000\000\000\000\002\237\002\237\000\000\000\000\000\000\002\237\002\237\002\237\000\000\000\000\002\237\000\000\002\237\000\n\002\237\002\237\002\237\002\237\000\n\002\237\000\000\007>\000\000\002\237\000\000\002\237\000\000\024\154\000\000\002\237\002\237\000\000\002\237\002\237\002\237\002\237\002\237\002\237\002\237\000\000\002\237\000\000\002\237\002\237\002\237\002\237\002\237\002\237\002\237\002\237\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\002\237\000\000\002\237\002\237\024\182\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\000\000\000A\000A\000\000\000\000\004\129\000A\000A\002\237\000A\000A\000A\002\237\002\237\002\237\000\000\000A\000\000\002\237\002\237\002\237\006\185\000\000\000\000\000\000\004\129\000A\000\000\000\000\000\000\000A\000\000\000A\000A\000\000\000\000\000\000\000\000\000\000\000A\000\000\000A\000\000\000\000\000\000\000A\000A\004\129\000A\000A\000A\000A\000A\000A\000A\000\000\000\000\004\129\000A\000\000\000\000\000A\004\129\011\158\000\238\000A\000A\000A\000A\000\000\000A\000\000\004\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000A\000A\000A\000A\000A\000\000\000A\000\000\000\000\000\000\000\000\000\000\004\129\000\000\000\000\000A\000\000\000A\000\000\000=\000=\000\000\000\000\004\129\000=\000=\000\000\000=\000=\000=\000\000\000A\000A\000\000\000=\000\000\000A\000A\000A\006\181\000\000\000\000\000\000\000\000\000=\000\000\000\000\000\000\000=\000\000\000=\000=\000\000\000\000\000\000\000\000\000\000\000=\000\000\000=\000\000\000\000\000\000\000=\000=\000\000\000=\000=\000=\000=\000=\000=\000=\000\000\000\000\000\000\000=\000\000\000\000\000=\000\000\000\000\000\000\000=\000=\000=\000=\000\000\000=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000=\000=\000=\000=\000=\000\000\000=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000=\000\000\000=\000\000\011\221\011\221\000\000\000\000\0186\011\221\011\221\000\000\011\221\011\221\011\221\000\000\000=\000=\000\000\011\221\000\000\000=\000=\000=\006\197\000\000\000\000\000\000\003R\011\221\000\000\000\000\000\000\011\221\000\000\011\221\011\221\000\000\000\000\000\000\000\000\000\000\011\221\000\000\011\221\000\000\000\000\000\000\011\221\011\221\018\166\011\221\011\221\011\221\011\221\011\221\011\221\011\221\000\000\000\000\012B\011\221\000\000\000\000\011\221\012J\000\000\000\000\011\221\011\221\011\221\011\221\000\000\011\221\019b\019r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\221\011\221\011\221\011\221\011\221\000\000\011\221\000\000\000\000\000\000\000\000\000\000\004\173\000\000\000\000\011\221\000\000\011\221\000\000\011\217\011\217\000\000\000\000\020r\011\217\011\217\000\000\011\217\011\217\011\217\000\000\011\221\011\221\000\000\011\217\000\000\011\221\011\221\011\221\006\193\000\000\000\000\000\000\000\000\011\217\000\000\000\000\000\000\011\217\000\000\011\217\011\217\000\000\000\000\000\000\000\000\000\000\011\217\000\000\011\217\000\000\000\000\000\000\011\217\011\217\000\000\011\217\011\217\011\217\011\217\011\217\011\217\011\217\000\000\000\000\000\000\011\217\000\000\000\000\011\217\000\000\000\000\000\000\011\217\011\217\011\217\011\217\000\000\011\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\217\011\217\011\217\011\217\011\217\000\000\011\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\217\000\000\011\217\000\006\000\246\000\000\000\000\000\000\001\002\001\006\000\000\001\n\001\022\001\"\000\000\000\000\011\217\011\217\001&\000\000\000\000\011\217\011\217\011\217\000\000\023\022\000\000\000\000\001*\000\000\000\000\000\000\001.\000\000\003V\003Z\000\000\000\000\000\000\000\000\000\000\0012\000\000\003z\000\000\000\000\000\000\003\174\003\178\000\000\003\182\003\194\003\206\003\218\003\226\006\234\007:\000\000\000\000\000\000\003F\000\000\000\000\003\214\000\000\000\000\000\000\b\154\b\158\b\170\b\186\000\000\005n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\210\000\000\000\000\000\000\0051\000\000\0051\0051\b\222\b\246\t\022\t*\005z\0051\005~\000\000\0051\000\000\0051\000\000\0051\0051\0051\b\178\0051\b\182\000\000\000\000\012M\0129\0051\000\000\0051\0051\0051\000\000\0051\0051\0051\005\130\b\198\000\000\0051\0051\t>\004j\t\162\000\000\000\000\012M\0051\000\000\002\194\000\000\000\000\002\198\0051\0051\000\000\000\000\0051\0051\0051\0051\0051\0051\000\000\0051\002\210\000\000\0051\000\000\002\218\0129\000\000\0051\0051\0051\000\000\000\000\000\000\0051\000\000\000\000\0051\0051\000\000\000\000\000\000\000\000\000\000\0051\000\000\000\000\0051\0051\0051\002\222\0051\0051\004a\000\000\000\000\004a\000\000\000\000\000\000\000\000\0051\0051\0051\000\000\0051\0051\004a\000\000\017\006\0051\004a\000\000\004a\000\000\000\000\000\000\0051\000\000\0051\0051\0051\000\000\0032\0051\004a\000\000\000\000\000\000\0051\000\000\004a\000\000\0051\n\129\0051\0051\n\129\n\129\002\226\000\000\000\000\n\129\000\000\n\129\004a\000\000\n\129\000\000\000\000\004a\n\129\n\129\000\000\n\129\n\129\000\000\n\129\000\000\n\129\000\000\000\000\000\000\000\000\n\129\000\000\004a\n\129\000\000\000\000\000\000\000\000\000\000\007\157\000\000\n\129\000\000\n\129\000\000\000\000\000\000\n\129\n\129\004a\004a\000\000\000\000\004a\004a\n\129\007\157\007\157\n\129\007\157\007\157\n\129\n\129\000\000\n\129\000\000\n\129\n\129\000\000\000\000\000\000\000\000\004a\000\000\000\000\000\000\n\129\000\000\000\000\n\129\007\157\000\000\000\000\015\018\000\000\000\000\000\000\000\000\000\000\n\129\000\000\n\129\000\000\000\000\n\129\000\000\n\129\000\000\000\000\000\000\007\157\000\000\000\000\005\158\000\000\000\000\000\000\000\000\000\000\000\000\n\129\n\129\000\000\n\129\n\129\007\157\n\129\000\000\n\129\000\000\n\129\b\233\n\129\000\000\n\129\000\000\b\233\000\000\002^\b\233\000\000\000\000\000\000\007\157\001\029\007\157\000\000\000\000\b\233\000\000\b\233\b\233\b\233\000\000\b\233\b\233\b\233\000\000\000\000\005\214\000\000\000\000\007\157\007\157\001\029\000\000\000\000\007\157\b\233\007\157\006\249\006\249\000\000\007\157\b\233\b\233\000\000\000\000\b\233\000\000\000\000\000\000\0036\b\233\000\000\b\233\001\029\004*\b\233\015\182\006\249\006\249\006\249\b\233\b\233\b\233\001\029\000\000\000\000\000\000\006\249\001\029\b\233\b\233\000\000\000\000\000\000\000\000\000\000\b\233\000\000\001\029\000\000\004\146\006\249\006\249\000\000\b\233\000\000\000\000\006\249\000\000\006\249\006\249\006\249\000\000\b\233\b\233\b\233\006\249\b\233\b\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\b\233\000\000\b\233\b\233\006\249\000\000\012\021\b\233\001\029\000\000\000\000\012\021\b\233\002^\012\021\000\000\b\233\000\000\b\233\b\233\000\000\000\000\000\000\004\178\000\000\012\021\012\021\012\021\000\000\012\021\012\021\012\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\021\000\000\004\030\000\000\006\249\000\000\012\021\012\021\000\000\000\000\012\021\000\000\000\000\000\000\0036\012\021\001\174\012\021\000\000\r\142\012\021\000\000\000\000\000\000\000\000\012\021\012\021\012\021\000\000\000\000\014\154\000\000\000\000\000\000\012\021\012\021\003R\000\000\000\000\000\000\000\000\012\021\000\000\000\000\000\000\004\146\000\000\000\000\014\158\012\021\000\000\000\000\000\000\000\000\014\198\000\000\000\000\000\000\012\021\012\021\012\021\000\000\012\021\012\021\000\000\000\000\000\000\000\000\012B\000\000\000\000\000\000\000\000\012J\012\021\000\000\012\021\012\021\000\000\000\000\b\237\012\021\000\000\000\000\000\000\b\237\012\021\002^\b\237\015Z\012\021\000\000\012\021\012\021\000\000\000\000\000\000\b\237\000\000\b\237\b\237\b\237\000\000\b\237\b\237\b\237\012f\015n\000\000\000\000\004\137\004\137\000\000\000\000\000\000\000\000\000\000\b\237\000\000\002Z\002^\018\190\000\000\b\237\b\237\000\000\000\000\b\237\000\000\015~\000\000\0036\b\237\000\000\b\237\000\000\000\000\b\237\000\000\001*\002b\002r\b\237\b\237\b\237\000\000\000\000\000\000\000\000\002~\000\000\b\237\b\237\000\000\000\000\000\000\000\000\000\000\b\237\000\000\000\000\000\000\004\146\002\130\003.\000\000\b\237\000\000\000\000\003:\000\000\003F\004\026\004&\000\000\b\237\b\237\b\237\0042\b\237\b\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\237\000\000\b\237\b\237\0046\000\000\000\000\b\237\000a\000\000\000a\000a\b\237\000\000\000\000\000\000\b\237\000\000\b\237\b\237\000a\000\000\000a\000a\000\000\000\000\000a\000a\000a\000\000\b\149\000\000\001B\001\006\000\000\000\000\000\000\001\"\000\000\000\000\000a\000\000\001&\000\000\000\000\000\000\000a\000a\000\000\t\021\000a\000\000\001*\000\000\000a\000a\000\000\000a\000\000\001F\000a\000\000\000\000\000\000\000\000\000a\000a\000a\000\000\000\000\000\000\000\000\001R\000\000\000a\000a\001^\002N\000\000\000\000\000\000\000a\000a\000\000\003F\000a\000\000\003\246\000\000\000a\000\000\003\250\000\000\004\002\005b\000\000\005n\000\000\000a\000a\000a\000\000\000a\000a\000\000\000\000\000\000\000\000\005r\000\000\b\149\000\000\000\000\000\000\000a\000\000\000\000\000a\005z\012\025\005~\000a\005\190\000\000\012\025\000\000\000a\012\025\000\000\000\000\000a\000\000\000a\000\000\000\000\000\000\004\130\000\000\012\025\012\025\012\025\000\000\012\025\012\025\012\025\005\130\000\000\t\021\000\000\b\234\000\000\004j\000\000\000\000\000\000\000\000\012\025\000\000\002Z\002^\019:\000\000\012\025\012\025\000\000\000\000\012\025\000\000\000\000\000\000\000\000\012\025\000\000\012\025\000\000\000\000\012\025\000\000\001*\002b\002r\012\025\012\025\012\025\000\000\000\000\000\000\000\000\002~\000\000\012\025\012\025\000\000\000\000\000\000\000\000\000\000\012\025\000\000\000\000\000\000\012\025\002\130\003.\000\000\012\025\000\000\000\000\003:\000\000\003F\004\026\004&\000\000\012\025\012\025\012\025\0042\012\025\012\025\003)\000\000\000\000\000\000\000\000\003)\012M\0129\003)\000\000\012\025\000\000\012\025\012\025\0046\002Z\002^\012\025\000\000\003)\003)\003)\012\025\003)\003)\003)\012\025\012M\012\025\012\025\002\194\000\000\000\000\002\198\000\000\001*\002\134\003)\000\000\000\000\002\206\000\000\000\000\003)\004z\000\000\002\210\003)\000\000\000\000\002\218\0129\003)\000\000\003)\000\000\000\000\003)\000\000\002\130\0036\000\000\003)\003)\003)\003:\000\000\003F\004\026\004&\000\000\003)\003)\000\000\0042\002\222\012\210\000\000\003)\000\000\000\000\000\000\003)\000\000\000\000\n\141\003)\000\000\001B\001\006\000\000\0046\000\000\001\"\000\000\003)\003)\003)\001&\003)\003)\000\000\n\141\n\141\000\000\n\141\n\141\000\000\001*\000\000\000\000\003)\000\000\003)\003)\001F\000\000\000\000\003)\000\000\000\000\000\000\000\000\003)\002\226\000\000\n\141\003)\001R\003)\003)\000\000\001^\002N\000\000\000\000\000\000\000\000\000\000\000\000\003F\000\000\000\000\003\246\000\000\000\000\n\141\003\250\000\000\004\002\005b\000\000\005n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\141\000\000\000\000\005r\000\000\000\000\n\137\000\000\000\000\001B\001\006\000\000\000\000\005z\001\"\005~\000\000\005\190\n\141\001&\n\141\000\000\000\000\n\137\n\137\000\000\n\137\n\137\000\000\001*\000\000\000\000\000\000\000\000\n\141\000\000\001F\n\141\n\141\000\000\005\130\000\000\n\141\000\000\n\141\000\000\004j\n\137\n\141\001R\000\000\000\000\000\000\005\250\002N\000\000\000\000\000\000\000\000\000\000\000\000\003F\000\000\000\000\003\246\000\000\000\000\n\137\003\250\000\000\004\002\005b\000\000\005n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\137\000\000\000\000\005r\000\000\000\000\001\213\000\000\000\000\000\000\000\000\001\213\000\000\005z\001\213\005~\000\000\005\190\n\137\000\000\n\137\000\000\000\000\000\000\000\000\001\213\001\213\001\213\000\000\001\213\001\213\001\213\000\000\000\000\n\137\000\000\000\000\n\137\n\137\000\000\005\130\000\000\n\137\001\213\n\137\000\000\004j\000\000\n\137\001\213\001\213\000\000\000\000\001\213\000\000\000\000\000\000\000\000\001\213\000\000\001\213\000\000\000\000\001\213\000\000\000\000\000\000\000\000\001\213\001\213\001\213\000\000\000\000\000\000\000\000\000\000\000\000\001\213\001\213\000\000\001i\000\000\000\000\001i\001\213\000\000\000\000\000\000\001\213\000\000\000\000\000\000\001\213\000\000\001i\000\000\001i\000\000\001i\000\000\001i\001\213\001\213\001\213\000\000\001\213\001\213\000\000\000\000\000\000\000\000\000\000\001i\000\000\000\000\000\000\000\000\001\213\001i\001\213\001\213\001B\001\006\000\000\001\213\000\000\001\"\000\000\006\186\001\213\000\000\001&\001i\004\246\000\000\001\213\000\000\001i\001i\000\238\000\000\001*\000\000\006\218\000\000\000\000\000\000\000\000\001F\000\000\000\000\006\242\000\000\001i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\000\000\000\000\007\030\002N\000\000\000\000\000\000\001i\001i\001i\003F\001i\001i\003\246\000\000\000\000\ne\003\250\000\000\004\002\000\000\007.\005n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001i\004-\000\000\000\000\005r\000\000\000\000\000\000\000\000\000\000\000\000\001i\000\000\000\000\005z\000\000\005~\000\000\000\000\0076\000\000\005\169\000\000\000\000\000\000\000\000\005\169\000\000\000\000\005\169\000\000\000\000\000\000\000\000\000\000\ne\000\000\000\000\ne\ne\005\169\005\130\005\169\000\000\005\169\ne\005\169\004j\000\000\ne\004-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\169\000\000\000\000\000\000\000\000\000\000\005\169\005\169\000\000\000\000\000\000\000\000\000\000\005\169\000\000\005\169\000\000\005\169\000\000\000\000\005\169\000\000\000\000\000\000\000\000\005\169\005\169\005\169\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\003u\000\000\000\000\003u\005\169\005\169\000\000\000\000\005\169\000\000\000\000\000\000\000\000\000\000\003u\000\000\003u\000\000\003u\000\000\003u\005\169\005\169\005\169\000\000\005\169\005\169\000\000\000\000\003u\000\000\000\000\003u\b\"\003u\000\000\000\000\003u\003u\003u\005\169\000\000\000\000\005\169\005\169\0059\000\000\003u\003u\003u\003u\000\000\003u\000\000\003u\005\169\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\000\000\003u\003u\000\000\000\000\000\000\003u\000\000\005=\000\000\003u\000\000\003u\000\000\000\000\003u\000\000\000\000\000\000\003u\003u\003u\003u\003u\003u\000\000\000\000\005\157\000\000\000\000\000\000\0059\005\157\000\000\000\000\005\157\003u\000\000\003u\003u\003u\000\000\003u\000\000\000\000\000\000\005\157\000\000\005\157\000\000\005\157\000\000\005\157\003u\003u\003u\000\000\003u\003u\000\000\000\000\000\000\000\000\000\000\005\157\005=\000\000\000\000\000\000\000\000\005\157\005\157\003u\003u\000\000\000\000\003u\bf\000\000\005\157\000\000\005\157\000\000\000\000\005\157\000\000\000\000\003u\000\000\005\157\005\157\000\238\000\000\000\000\000\000\bu\000\000\000\000\000\000\000\000\bu\000\000\000\000\bu\000\000\005\157\005\157\000\000\000\000\005\157\000\000\000\000\000\000\000\000\bu\000\000\bu\000\000\bu\000\000\bu\000\000\005\157\005\157\005\157\000\000\005\157\005\157\000\000\000\000\000\000\000\000\bu\000\000\000\000\000\000\000\000\000\000\bu\bu\000\000\005\157\000\000\000\000\005\157\005\157\000\000\bu\000\000\bu\000\000\000\000\bu\000\000\000\000\000\000\005\157\bu\bu\bu\000\000\000\000\000\000\000\000\012\205\000\000\000\000\000\000\000\000\012\205\000\000\000\000\012\205\bu\000\000\000\000\000\000\bu\000\000\000\000\000\000\000\000\000\000\012\205\000\000\012\205\000\000\012\205\000\000\012\205\bu\bu\bu\000\000\bu\bu\000\000\000\000\000\000\000\000\000\000\012\205\000\000\000\000\000\000\000\000\bu\012\205\012\205\bu\000\000\000\000\000\000\bu\004>\000\000\012\205\000\000\012\205\000\000\000\000\012\205\004\246\000\000\bu\000\000\012\205\012\205\012\205\000\000\000\000\000\000\000\000\012\209\000\000\000\000\000\000\000\000\012\209\000\000\000\000\012\209\012\205\000\000\000\000\000\000\012\205\000\000\000\000\000\000\000\000\000\000\012\209\000\000\012\209\000\000\012\209\000\000\012\209\012\205\012\205\012\205\000\000\012\205\012\205\000\000\000\000\000\000\000\000\000\000\012\209\004J\000\000\000\000\000\000\000\000\012\209\012\209\012\205\000\000\000\000\000\000\012\205\004>\000\000\012\209\000\000\012\209\000\000\000\000\012\209\000\000\000\000\012\205\000\000\012\209\012\209\012\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\197\000\000\002^\001\197\000\000\012\209\000\000\000\000\000\000\012\209\000\000\000\000\b\213\000\000\001\197\000\000\000\000\000\000\001\197\000\000\001\197\000\000\012\209\012\209\012\209\000\000\012\209\012\209\000\000\000\000\000\000\000\000\001\197\000\000\004J\000\000\000\000\000\000\001\197\001\197\000\000\012\209\000\000\000\000\000\000\012\209\0036\001\197\000\000\001\197\000\000\000\000\001\197\000\000\000\000\000\000\012\209\001\197\001\197\001\197\000\000\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\197\001\197\000\000\000\000\004\146\000\000\000\000\000\000\000\000\000\000\000\000\003Y\000\000\002^\003Y\000\000\000\000\001\197\001\197\000\000\000\000\001\197\001\197\b\209\000\000\003Y\000\000\000\000\000\000\003Y\000\000\003Y\000\000\001\197\000\000\000\000\000\000\000\000\000\000\000\000\001\197\000\000\000\000\003Y\000\000\001\197\000\000\000\000\000\000\003Y\001\193\001\197\000\000\000\000\000\000\000\000\000\000\0036\003Y\000\000\003Y\000\000\000\000\003Y\000\000\000\000\000\000\000\000\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003Y\003Y\000\000\000\000\004\146\000\000\000\000\000\000\000\000\000\000\000\000\003U\000\000\002^\003U\000\000\000\000\003Y\003Y\000\000\000\000\003Y\003Y\b\209\000\000\003U\000\000\000\000\000\000\003U\000\000\003U\000\000\003Y\000\000\000\000\000\000\000\000\000\000\000\000\003Y\000\000\000\000\003U\000\000\003Y\000\000\000\000\000\000\003U\001\193\003Y\000\000\000\000\000\000\000\000\000\000\0036\003U\000\000\003U\000\189\000\000\003U\000\189\000\000\000\000\000\000\003U\003U\003U\000\000\000\000\000\000\000\000\000\189\000\000\000\189\000\000\000\189\000\000\000\189\000\000\000\000\003U\003U\000\000\000\000\004\146\000\000\000\000\000\000\000\000\000\189\000\000\000\000\000\000\000\000\000\000\000\189\000\000\003U\003U\000\189\000\000\003U\003U\000\000\000\189\000\000\000\189\000\000\000\000\000\189\000\000\000\000\000\000\003U\000\189\000\189\000\238\000\000\000\000\000\000\003U\000\000\000\000\000\189\000\189\003U\001\001\000\000\000\000\001\001\000\189\003U\000\000\000\000\000\189\000\000\000\000\000\000\000\000\000\000\001\001\000\000\001\001\000\000\001\001\000\000\001\001\000\189\000\189\000\000\000\000\000\189\000\189\000\000\000\000\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\000\000\189\001\001\000\000\000\000\000\000\001\001\000\189\000\189\000\000\000\000\001\001\000\000\001\001\000\000\000\000\001\001\000\189\000\000\000\189\000\000\001\001\001\001\000\238\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\000\000\000\197\000\000\000\000\000\197\001\001\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\000\000\000\000\197\000\000\000\197\000\000\000\197\000\000\000\197\001\001\001\001\000\000\000\000\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000\197\000\000\000\000\000\000\000\000\001\001\000\197\000\000\000\000\000\000\000\197\001\001\001\001\000\000\000\000\000\197\000\000\000\197\000\000\000\000\000\197\001\001\000\000\001\001\000\000\000\197\000\197\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\197\000\197\000\000\000\193\000\000\000\000\000\193\000\197\000\000\000\000\000\000\000\197\000\000\000\000\000\000\000\000\000\000\000\193\000\000\000\193\000\000\000\193\000\000\000\193\000\197\000\197\000\000\000\000\000\197\000\197\000\000\000\000\000\000\000\000\000\000\000\193\000\000\000\000\000\000\000\000\000\197\000\193\000\000\000\000\000\000\000\193\000\197\000\197\000\000\000\000\000\193\000\000\000\193\000\000\000\000\000\193\000\197\000\000\000\197\000\000\000\193\000\193\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\193\000\193\000\000\000\000\000\000\000\000\000\000\000\193\000\000\000\000\000\000\000\193\000\000\000\000\000\000\000\000\nb\000\000\000\000\021\178\b\249\000\000\b\249\b\249\000\193\000\193\000\000\000\000\000\193\000\193\n\154\n\178\n\186\n\162\n\194\000\000\000\000\000\000\000\000\000\000\000\193\000\000\000\000\000\000\n\202\n\210\000\193\000\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\218\000\193\000\000\000\193\000\000\000\000\000\000\000\000\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nj\n\170\n\226\n\234\n\250\001b\000\000\000\000\000\000\001f\000\000\000\000\024N\011\002\000\000\000\000\000\000\000\000\001j\001n\001r\001\190\001z\001~\011\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\194\001\198\000\000\000\000\000\000\000\000\000\000\011*\001\202\0112\n\242\001\206\000\000\000\000\000\000\b\249\011\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\026\011\"\000\000\000\000\001\210\001\214\001\218\001\222\001\226\000\000\000\000\001\161\001\230\000\000\001\161\000\000\000\000\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\161\000\000\000\000\001\238\001\161\000\000\001\161\000\000\000\000\000\000\001\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\161\001\161\000\000\002.\027\166\000\000\001\161\000\000\012M\0129\0022\000\000\0026\0059\000\000\001\161\002:\001\161\002>\002B\001\161\000\000\000\000\000\000\000\000\001\161\001\161\001\161\000\000\012M\000\000\000\000\002\194\000\000\000\000\002\198\000\000\000\000\000\000\000\000\000\000\001\161\r\154\000\000\000\000\001\161\012\201\000\000\002\210\000\000\000\000\012\201\002\218\0129\012\201\000\000\000\000\000\000\001\161\001\161\000\000\000\000\001\161\001\161\000\000\012\201\000\000\012\201\000\000\012\201\0059\012\201\000\000\000\000\001\161\000\000\000\000\002\222\000\000\000\000\001\161\001\161\000\000\012\201\000\000\000\000\001\161\000\000\000\000\012\201\012\201\000\000\001\161\000\000\000\000\000\000\000\000\000\000\012\201\000\000\012\201\000\000\000\000\012\201\000\000\000\000\000\000\000\000\012\201\012\201\012\201\000\000\000\000\000\000\012\197\000\000\000\000\000\000\000\000\012\197\000\000\000\000\012\197\000\000\012\201\000\000\002\226\000\000\012\201\000\000\000\000\000\000\000\000\012\197\000\000\012\197\000\000\012\197\000\000\012\197\000\000\012\201\012\201\012\201\000\000\012\201\012\201\000\000\000\000\000\000\000\000\012\197\000\000\000\000\000\000\000\000\000\000\012\197\012\197\000\000\012\201\000\000\000\000\000\000\012\201\000\000\012\197\000\000\012\197\000\000\000\000\012\197\000\000\004\246\000\000\012\201\012\197\012\197\012\197\000\000\000\000\000\000\000\000\by\000\000\000\000\000\000\000\000\by\000\000\000\000\by\012\197\000\000\000\000\000\000\012\197\000\000\000\000\000\000\000\000\000\000\by\000\000\by\000\000\by\000\000\by\012\197\012\197\012\197\000\000\012\197\012\197\000\000\000\000\000\000\000\000\000\000\by\000\000\000\000\000\000\000\000\007\190\by\by\012\197\000\000\000\000\000\000\012\197\000\000\000\000\by\000\000\by\000\000\000\000\by\000\000\000\000\012\197\000\000\by\by\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\002^\001\193\by\000\000\000\000\000\000\by\000\000\012)\000\000\b\209\012)\001\193\000\000\000\000\000\000\001\193\000\000\001\193\by\by\by\012)\by\by\000\000\012)\000\000\012)\000\000\001\193\000\000\000\000\000\000\0051\by\001\193\000\000\by\000\000\012)\000\000\by\000\000\0036\001\193\012)\001\193\000\000\000\000\001\193\000\000\000\000\by\000\000\001\193\001\193\001\193\000\000\000\000\012)\000\000\000\000\000\000\000\000\012)\012)\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\004\146\000\000\000\000\000\000\000\000\000\000\012)\000\000\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\001\193\001\193\000\000\000\000\000\000\000\000\012)\012)\003\030\000\000\012)\012)\001\193\001\174\002Z\002^\r\142\000\000\000\000\001\193\000\000\000\000\012)\000\000\001\193\000\000\r\166\014\154\000\000\012)\001\193\004\137\000\000\003R\001*\002\134\002r\000\000\000\000\000\000\012)\000\000\000\000\000\000\002~\014\158\000\000\000\000\000\000\000\000\000\000\014\198\000\000\000\000\000\000\005\209\000\000\000\000\002\130\003.\005\209\000\000\000\000\005\209\003:\012B\003F\004\026\004&\000\000\012J\000\000\000\000\0042\005\209\000\000\005\209\000\000\005\209\000\000\005\209\000\000\000\000\000\000\000\000\000\000\015Z\000\000\000\000\000\000\0046\000\000\005\209\000\000\000\000\000\000\000\000\000\000\005\209\005\209\000\000\000\000\000\000\012f\015n\bf\000\000\005\209\000\000\005\209\000\000\000\000\005\209\000\000\000\000\000\000\000\000\005\209\005\209\000\238\000\000\000\000\000\000\000\000\000\000\000\000\015~\000\000\000\000\001b\000\000\000\000\000\000\005\209\000\000\000\000\000\000\005\209\000\000\000\000\000\000\000\000\001j\001n\001r\001\190\001z\001~\000\000\000\000\005\209\005\209\005\209\000\000\005\209\005\209\000\000\001\194\001\198\000\000\000\000\000\000\000\000\000\000\000\000\001\202\000\000\000\000\001\206\005\209\000\000\000\000\000\000\005\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\209\001\210\001\214\001\218\001\222\001\226\000\000\000\000\000\000\001\230\000\000\000\000\000\000\000\000\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\000\000\001\242\000\000\000\000\001B\001\006\000\000\000\000\000\000\001\"\000\000\006\186\002.\027\194\001&\000\000\000\000\000\000\000\000\0022\000\000\0026\000\000\000\000\001*\002:\006\218\002>\002B\000\000\000\000\001F\000\000\000\000\006\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\000\000\000\000\007\030\002N\000\000\000\000\000\000\000\000\000\000\000\000\003F\000\000\000\000\003\246\000\000\000\000\000\000\003\250\007\146\004\002\000\000\007.\005n\005\205\000\000\000\000\005\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005r\000\000\000\000\005\205\000\000\005\205\000\000\005\205\000\000\005\205\005z\000\000\005~\000\000\000\000\0076\000\000\000\000\000\000\000\000\000\000\005\205\000\000\000\000\000\000\000\000\000\000\005\205\b\014\000\000\000\000\000\000\t\214\000\000\000\000\t\222\005\205\005\130\005\205\000\000\000\000\005\205\000\000\004j\000\000\000\000\005\205\005\205\000\238\000\000\000\000\000\000\012\213\000\000\000\000\000\000\000\000\012\213\000\000\000\000\012\213\000\000\005\205\000\000\000\000\000\000\005\205\000\000\000\000\000\000\000\000\012\213\000\000\012\213\000\000\012\213\000\000\012\213\000\000\005\205\005\205\005\205\000\000\005\205\005\205\000\000\000\000\000\000\000\000\012\213\000\000\000\000\000\000\000\000\000\000\012\213\012\213\000\000\005\205\000\000\000\000\000\000\005\205\000\000\012\213\000\000\012\213\000\000\000\000\012\213\000\000\000\000\000\000\005\205\012\213\012\213\000\238\000\000\000\000\000\000\012\217\000\000\000\000\000\000\000\000\012\217\000\000\000\000\012\217\000\000\012\213\000\000\000\000\000\000\012\213\000\000\000\000\000\000\000\000\012\217\000\000\012\217\000\000\012\217\000\000\012\217\000\000\012\213\012\213\012\213\000\000\012\213\012\213\000\000\000\000\000\000\000\000\012\217\000\000\000\000\000\000\000\000\000\000\012\217\b\014\000\000\012\213\000\000\000\000\000\000\012\213\000\000\012\217\000\000\012\217\000\000\000\000\012\217\000\000\000\000\000\000\012\213\012\217\012\217\000\238\000\000\000\000\000\000\007\146\000\000\000\000\000\000\000\000\005\229\000\000\000\000\005\229\000\000\012\217\000\000\000\000\000\000\012\217\000\000\000\000\000\000\000\000\005\229\000\000\005\229\000\000\005\229\000\000\005\229\000\000\012\217\012\217\012\217\000\000\012\217\012\217\000\000\000\000\000\000\000\000\005\229\000\000\000\000\000\000\000\000\000\000\005\229\b\014\000\000\012\217\000\000\000\000\000\000\012\217\000\000\005\229\000\000\005\229\000\000\000\000\005\229\000\000\000\000\000\000\012\217\005\229\005\229\000\238\000\000\000\000\000\000\005\233\000\000\000\000\000\000\000\000\005\233\000\000\000\000\005\233\000\000\005\229\000\000\000\000\000\000\005\229\000\000\000\000\000\000\000\000\005\233\000\000\005\233\000\000\005\233\000\000\005\233\000\000\005\229\005\229\005\229\000\000\005\229\005\229\000\000\000\000\000\000\000\000\005\233\000\000\000\000\000\000\000\000\000\000\005\233\005\233\000\000\005\229\000\000\000\000\000\000\005\229\000\000\005\233\000\000\005\233\000\000\000\000\005\233\000\000\000\000\000\000\005\229\005\233\005\233\005\233\000\000\000\000\000\000\005\225\000\000\000\000\000\000\000\000\005\225\000\000\000\000\005\225\000\000\005\233\000\000\000\000\000\000\005\233\000\000\000\000\000\000\000\000\005\225\000\000\005\225\000\000\005\225\000\000\005\225\000\000\005\233\005\233\005\233\000\000\005\233\005\233\000\000\000\000\000\000\000\000\005\225\000\000\000\000\000\000\000\000\000\000\005\225\b\014\000\000\005\233\000\000\000\000\000\000\005\233\000\000\005\225\000\000\005\225\000\000\000\000\005\225\000\000\000\000\000\000\b6\005\225\005\225\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003Q\000\000\002^\003Q\000\000\005\225\000\000\000\000\000\000\005\225\000\000\000\000\000\000\000\000\003Q\000\000\002Z\002^\003Q\000\000\003Q\000\000\005\225\005\225\005\225\000\000\005\225\005\225\000\000\000\000\000\000\000\000\003Q\000\000\000\000\000\000\001*\002\134\003Q\000\000\000\000\005\225\000\000\000\000\000\000\005\225\0036\003Q\000\000\003Q\000\000\000\000\003Q\000\000\000\000\000\000\005\225\003Q\003Q\003Q\002\130\003>\000\000\000\000\000\000\000\000\003:\000\000\003F\004\026\004&\000\000\000\000\003Q\003Q\0042\000\000\004\146\000\000\003M\000\000\002^\003M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003Q\003Q\0046\003M\003Q\003Q\026\022\003M\000\000\003M\000\000\000\000\000\000\000\000\000\000\000\000\003Q\000\000\000\000\000\000\000\000\003M\000\000\003Q\000\000\000\000\026\002\003M\003Q\000\000\000\000\000\000\000\000\000\000\003Q\0036\003M\000\000\003M\000\000\000\000\003M\000\000\000\000\000\000\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\000\000\001\205\000\000\012\182\001\205\000\000\000\000\001\"\000\000\003M\003M\000\000\000\000\004\146\000\000\001\205\000\000\000\000\000\000\001\205\000\000\001\205\000\000\002Z\002^\000\000\003M\003M\000\000\000\000\003M\003M\000\000\001\205\000\000\000\000\000\000\000\000\000\000\001\205\000\000\000\000\003M\001*\002\134\000\000\012\186\000\000\001\205\003M\001\205\000\000\000\000\001\205\003M\000\000\000\000\000\000\001\205\001\205\003M\012\198\000\000\000\000\000\000\000\000\000\000\002\130\003>\000\000\000\000\000\000\000\000\003:\001\205\003F\004\026\004&\001\205\000\000\000\000\000\000\0042\000\000\001Q\000\000\000\000\001Q\000\000\000\000\005~\001\205\001\205\000\000\000\000\001\205\001\205\000\000\001Q\0046\001Q\000\000\001Q\005\001\001Q\000\000\000\000\001\205\000\000\000\000\000\000\000\000\000\000\000\000\001\205\000\000\001Q\000\000\000\000\000\000\000\000\000\000\001Q\026\002\000\000\001\205\001Q\000\000\000\000\000\000\000\000\001Q\000\000\001Q\000\000\000\000\001Q\000\000\000\000\000\000\000\000\001Q\001Q\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Q\000\000\001M\000\000\000\000\001M\001Q\000\000\000\000\000\000\001Q\000\000\000\000\000\000\000\000\000\000\001M\000\000\001M\000\000\001M\000\000\001M\001Q\001Q\001Q\000\000\001Q\001Q\000\000\000\000\000\000\000\000\000\000\001M\000\000\000\000\000\000\000\000\001Q\001M\000\000\000\000\000\000\001M\000\000\001Q\000\000\000\000\001M\000\000\001M\000\000\000\000\001M\000\000\000\000\001Q\000\000\001M\001M\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001M\000\000\nb\000\000\000\000\007\029\001M\000\000\000\000\007\029\001M\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\000\000\000\000\001M\001M\001M\000\000\001M\001M\000\000\n\202\n\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001M\000\000\n\218\000\000\000\000\000\000\000\000\001M\000\000\000\000\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001M\nj\n\170\n\226\n\234\n\250\nb\000\000\000\000\000\000\025\154\000\000\007\029\000\000\011\002\000\000\000\000\000\000\000\000\000\000\n\154\n\178\n\186\n\162\n\194\011\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\202\n\210\000\000\001\002\001\006\000\000\000\000\011*\001\"\0112\n\242\n\218\000\000\001&\000\000\000\000\011\018\000\000\006u\000\238\000\000\000\000\000\000\001*\011\026\011\"\000\000\001.\nj\n\170\n\226\n\234\n\250\000\000\000\000\000\000\0012\000\000\003z\000\000\000\000\011\002\000\000\000\000\000\000\000\000\000\000\003\206\002N\000\000\000\000\000\000\011\n\000\000\000\000\003F\000\000\000\000\003\214\000\000\000\000\000\000\b\154\b\158\b\170\000\000\000\000\005n\011*\025\158\0112\n\242\025\170\000\000\001B\001\006\000\000\011\018\000\000\001\"\000\000\006\186\000\000\000\000\001&\011\026\011\"\000\000\000\000\005z\000\000\005~\000\000\000\000\001*\000\000\006\218\000\000\000\000\000\000\b\178\001F\b\182\000\000\006\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\018\000\000\001R\000\000\005\130\b\198\023\194\002N\007\146\t>\004j\000\000\000\000\004\129\003F\000\000\004\129\003\246\000\000\000\000\000\000\003\250\000\000\004\002\000\000\007.\005n\004\129\000\000\000\000\000\000\004\129\000\000\004\129\000\000\000\000\000\000\000\000\005r\000\000\000\000\000\000\000\000\000\000\000\000\004\129\000\000\000\000\005z\000\000\005~\004\129\b\014\000\000\000\000\004\129\000\000\000\000\bf\000\000\004\129\000\000\004\129\000\000\000\000\004\129\000\000\000\000\000\000\000\000\004\129\011\158\000\238\023\210\000\000\005\130\000\000\000\000\000\000\004\129\004\129\004j\b\005\000\000\000\000\b\005\004\129\004\129\000\000\000\000\004\129\000\000\000\000\000\000\000\000\000\000\b\005\000\000\000\000\000\000\b\005\000\000\b\005\004\129\004\129\000\000\000\000\004\129\004\129\000\000\000\000\000\000\000\000\000\000\b\005\b\"\000\000\000\000\000\000\004\129\b\005\000\000\000\000\000\000\b\005\000\000\004\129\000\000\000\000\b\005\000\000\b\005\000\000\b\001\b\005\000\000\b\001\004\129\000\000\b\005\b\005\000\238\000\000\000\000\000\000\000\000\000\000\b\001\b\005\b\005\000\000\b\001\000\000\b\001\000\000\b\005\000\000\000\000\000\000\b\005\000\000\000\000\000\000\000\000\000\000\b\001\000\000\000\000\000\000\000\000\000\000\b\001\b\005\b\005\b\005\b\001\b\005\b\005\000\000\000\000\b\001\000\000\b\001\003E\000\000\b\001\003E\000\000\b\005\000\000\b\001\b\001\000\238\000\000\000\000\b\005\000\000\003E\000\000\b\001\b\001\003E\000\000\003E\000\000\000\000\b\001\000\000\000\000\000\000\b\001\000\000\000\000\000\000\000\000\003E\012\206\000\000\000\000\000\000\000\000\003E\000\000\b\001\b\001\b\001\000\000\b\001\b\001\000\000\003E\000\000\003E\000\000\000\000\003E\000\000\000\000\000\000\b\001\003E\003E\003E\000\000\000\000\000\000\b\001\001}\000\000\0121\001}\000\000\000\000\000\000\000\000\000\000\003E\000\000\000\000\0121\003E\001}\000\000\001}\000\000\001}\000\000\001}\000\000\000\000\000\000\000\000\000\000\003E\003E\026\138\000\000\003E\003E\001}\000\000\000\000\000\000\000\000\000\000\001}\0121\000\000\000\000\003E\000\000\000\000\000\000\0121\000\000\rN\003E\000\000\000\000\001}\000\000\003E\000\000\000\000\001}\001}\001}\003E\000\000\000\000\000\000\001A\000\000\000\165\001A\000\000\000\000\000\000\000\000\000\000\001}\000\000\000\000\000\165\0121\001A\000\000\001A\000\000\001A\000\000\001A\000\000\000\000\000\000\000\000\000\000\001}\001}\001}\000\000\001}\001}\001A\000\000\000\000\000\000\000\000\000\000\001A\000\165\000\000\000\000\000\000\000\000\000\000\000\000\000\165\000\000\000\000\001}\000\000\000\000\001A\000\000\000\000\000\000\000\000\001A\001A\001A\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\001A\000\000\000\000\000\000\000\165\001B\001\006\000\000\000\000\000\000\001\"\000\000\006\186\000\000\000\000\001&\000\000\001A\001A\001A\006y\001A\001A\000\000\000\000\001*\000\000\006\218\000\000\000\000\000\000\000\000\001F\000\000\000\000\006\242\000\000\000\000\000\000\000\000\001A\000\000\000\000\019\206\000\000\001R\000\000\000\000\000\000\001^\002N\001A\000\000\000\000\000\000\000\000\000\000\003F\000\000\000\000\003\246\000\000\000\000\000\000\003\250\000\000\004\002\005b\007.\005n\001B\001\006\000\000\000\000\000\000\001\"\000\000\006\186\000\000\000\000\001&\005r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\005z\006\218\005~\000\000\005\190\018&\001F\000\000\000\000\006\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\000\000\000\000\007\030\002N\020\162\000\000\005\130\000\000\006\170\000\000\003F\000\000\004j\003\246\000\000\000\000\000\000\003\250\000\000\004\002\000\000\007.\005n\001B\001\006\000\000\000\000\000\000\001\"\000\000\006\186\000\000\000\000\001&\005r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\005z\006\218\005~\000\000\000\000\0076\001F\000\000\000\000\006\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\000\000\000\000\007\030\002N\018\186\000\000\005\130\000\000\000\000\000\000\003F\000\000\004j\003\246\000\000\001\002\001\006\003\250\000\000\004\002\001\"\007.\005n\000\000\000\000\001&\000\000\000\000\000\000\000\000\006\157\000\000\000\000\000\000\005r\001*\000\000\000\000\000\000\001.\000\000\000\000\000\000\000\000\005z\000\000\005~\000\000\0012\0076\003z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\206\002N\000\000\000\000\000\000\000\000\000\000\000\000\003F\000\000\0196\003\214\005\130\000\000\000\000\b\154\b\158\b\170\004j\000\000\005n\004i\004i\000\000\000\000\000\000\004i\000\000\000\000\000\000\000\000\004i\000\000\000\000\000\000\000\000\000\000\004i\000\000\000\000\000\000\004i\005z\000\000\005~\000\000\000\000\000\000\004i\019\134\000\000\000\000\019\158\b\178\000\000\b\182\000\000\000\000\000\000\000\000\000\000\004i\000\000\000\000\000\000\004i\004i\000\000\000\000\005\130\b\198\000\000\000\000\004i\t>\004j\004i\000\000\003E\000\238\004i\003E\004i\004i\000\000\004i\000\000\000\000\000\000\000\000\000\000\000\000\003E\000\000\000\000\000\000\003E\004i\003E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004i\000\000\004i\003E\012\206\000\000\000\000\000\000\000\000\003E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003E\000\000\003E\012)\000\000\003E\012)\000\000\000\000\004i\003E\003E\003E\000\000\000\000\004i\000\000\012)\000\000\000\000\000\000\012)\000\000\012)\000\000\000\000\003E\000\000\000\000\0051\003E\000\000\000\000\000\000\000\000\012)\000\000\000\000\000\000\000\000\000\000\012)\000\000\003E\003E\026\186\000\000\003E\003E\000\000\012)\000\000\012)\000\000\000\000\012)\000\000\000\000\000\000\000\000\012)\012)\001B\001\006\000\000\rN\003E\001\"\000\000\000\000\000\000\003E\001&\000\000\000\000\000\000\012)\005\186\000\000\003\254\012)\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\012)\012)\003\030\000\000\012)\012)\000\000\000\000\000\000\001R\000\000\000\000\000\000\001^\002N\000\000\012)\000\000\000\000\000\000\014j\003F\000\000\012)\003\246\000\000\000\000\000\000\003\250\000\000\004\002\005b\000\000\005n\012)\000\000\000\000\000\000\000\000\000\000\000\000\001B\001\006\000\000\000\000\005r\001\"\000\000\006\186\000\000\000\000\001&\000\000\000\000\000\000\005z\000\000\005~\000\000\005\190\000\000\001*\000\000\006\218\000\000\000\000\000\000\000\000\001F\000\000\000\000\006\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006^\000\000\001R\005\130\000\000\000\000\t\002\002N\000\000\004j\000\000\000\000\000\000\005\133\003F\000\000\005\133\003\246\000\000\000\000\000\000\003\250\000\000\004\002\000\000\007.\005n\005\133\000\000\000\000\000\000\005\133\000\000\005\133\000\000\000\000\000\000\000\000\005r\000\000\000\000\000\000\000\000\000\000\000\000\005\133\000\000\000\000\005z\000\000\005~\005\133\000\000\000\000\000\000\000\000\000\000\000\000\bf\000\000\005\133\000\000\005\133\000\000\000\000\005\133\000\000\000\000\000\000\000\000\005\133\005\133\000\238\000\000\000\000\005\130\000\000\000\000\000\000\000\000\000\000\004j\005\137\000\000\000\000\005\137\005\133\005\133\000\000\000\000\005\133\000\000\000\000\000\000\000\000\000\000\005\137\000\000\000\000\000\000\005\137\000\000\005\137\005\133\005\133\000\000\000\000\005\133\005\133\000\000\000\000\000\000\000\000\000\000\005\137\000\000\000\000\000\000\000\000\000\000\005\137\000\000\000\000\000\000\000\000\000\000\005\133\bf\000\000\005\137\000\000\005\137\003E\000\000\005\137\003E\000\000\005\133\000\000\005\137\005\137\000\238\000\000\000\000\000\000\000\000\003E\000\000\000\000\000\000\003E\000\000\003E\000\000\000\000\005\137\005\137\000\000\000\000\005\137\000\000\000\000\000\000\000\000\003E\012\206\000\000\000\000\000\000\000\000\003E\000\000\005\137\005\137\000\000\000\000\005\137\005\137\000\000\003E\000\000\003E\006-\000\000\003E\006-\000\000\000\000\000\000\003E\003E\003E\000\000\000\000\000\000\005\137\006-\000\000\000\000\000\000\006-\000\000\006-\000\000\000\000\003E\005\137\000\000\000\000\003E\000\000\000\000\000\000\000\000\006-\000\000\000\000\000\000\000\000\000\000\006-\000\000\003E\003E\r.\000\000\003E\003E\000\000\006-\000\000\006-\000\000\000\000\006-\000\000\000\000\000\000\000\000\006-\006-\000\238\000\000\000\000\rN\003E\000\000\011\233\000\000\001\006\011\233\000\000\000\000\028\154\000\000\006-\000\000\000\000\028\158\006-\000\000\011\233\000\000\000\000\000\000\000\000\000\000\011\233\000\000\000\000\000\000\000\000\006-\006-\r\242\000\000\006-\006-\000\000\011\233\000\000\000\000\000\000\000\000\000\000\011\233\000\000\000\000\006-\000\000\000\000\000\000\001\186\002N\011\233\006-\011\233\001\174\000\000\011\233\002\182\000\000\000\000\000\000\011\233\000\000\006-\000\000\000\000\000\000\000\000\003N\028\162\001B\001\006\004\149\000\000\003R\001\"\000\000\011\233\000\000\000\000\001&\011\233\000\000\000\000\000\000\000\000\003^\006r\000\000\000\000\001*\000\000\011\182\028\166\011\233\011\233\000\000\001F\011\233\000\000\000\000\003\226\000\000\020\238\000\000\000\000\012B\000\000\000\000\000\000\001R\012J\000\000\000\000\001^\002N\000\000\011\233\007\146\000\000\000\000\000\000\003F\007%\000\000\003\246\007%\012R\000\000\003\250\000\000\004\002\005b\000\000\005n\000\000\000\000\007%\000\000\000\000\000\000\007%\000\000\007%\012f\012\170\005r\000\000\004\149\004\149\000\000\000\000\000\000\000\000\000\000\007%\005z\000\000\005~\000\000\005\190\007%\b\014\000\000\000\000\000\000\000\000\018\014\000\000\000\000\007%\000\000\007%\001\209\000\000\007%\001\209\000\000\000\000\000\000\007%\007%\000\238\005\130\000\000\000\000\000\000\001\209\000\000\004j\000\000\001\209\000\000\001\209\000\000\000\000\007%\000\000\000\000\000\000\007%\000\000\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\000\000\001\209\000\000\007%\007%\000\000\000\000\007%\007%\000\000\001\209\000\000\001\209\0061\000\000\001\209\0061\000\000\000\000\000\000\001\209\001\209\000\000\000\000\000\000\000\000\007%\0061\000\000\000\000\000\000\0061\000\000\0061\000\000\000\000\001\209\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\0061\000\000\000\000\000\000\000\000\000\000\0061\000\000\001\209\001\209\000\000\000\000\001\209\001\209\000\000\0061\000\000\0061\000\000\000\000\0061\000\000\000\000\000\000\001\209\0061\0061\000\238\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\r\210\000\000\000\000\000\000\000\000\0061\001\209\000\000\000\000\0061\000\000\000\000\000\000\000\000\b5\b5\000\000\000\000\000\000\b5\000\000\000\000\0061\0061\b5\000\000\0061\0061\000\000\000\000\003\238\000\000\000\000\000\000\b5\000\000\000\000\000\000\0061\000\000\000\000\b5\000\000\000\000\000\000\0061\000\000\004\129\000\000\000\000\004\129\000\000\000\000\000\000\b5\000\000\0061\000\000\b5\b5\000\000\004\129\000\000\000\000\000\000\004\129\b5\004\129\004\129\b5\000\000\000\000\000\000\b5\000\000\b5\b5\000\000\b5\004\129\000\000\000\000\000\000\004\129\000\000\004\129\000\000\000\000\000\000\000\000\b5\000\000\004>\000\000\004\129\000\000\004\129\004\129\000\000\004\129\b5\000\000\b5\004\129\004\129\011\158\000\000\000\000\000\000\000\000\000\000\000\000\004\129\000\000\004\129\000\000\000\245\004\129\000\000\000\245\004\129\000\000\004\129\011\158\004\129\000\000\000\000\b5\000\000\000\000\000\245\000\000\000\000\b5\000\245\000\000\000\245\004\129\004\129\000\000\000\000\004\129\004\129\000\000\000\000\000\000\000\000\000\000\000\245\004J\000\000\000\000\000\000\007\190\000\245\004\129\004\129\000\000\000\000\004\129\004\129\000\000\000\000\000\245\000\000\000\245\000\249\000\000\000\245\000\249\000\000\004\129\000\000\000\245\000\245\000\238\000\000\000\000\004\129\000\000\000\249\000\000\000\000\026\130\000\249\000\000\000\249\000\000\000\000\000\245\000\000\000\000\000\000\000\245\000\000\000\000\000\000\000\000\000\249\000\000\000\000\000\000\000\000\000\000\000\249\000\000\000\245\000\245\000\000\000\000\000\245\000\245\000\000\000\249\000\000\000\249\000\000\000\000\000\249\000\000\000\000\000\000\000\000\000\249\000\249\000\238\000\000\000\000\000\000\000\245\000\000\000\000\002Z\003\"\000\000\000\000\000\000\001\"\000\000\000\249\000\245\000\000\000\000\000\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\002\134\002r\003&\000\249\000\249\000\000\000\000\000\249\000\249\002~\000\000\000\000\000\000\000\000\000\000\000\000\007!\000\000\000\000\007!\000\000\000\000\000\000\003*\003.\000\000\000\249\000\000\000\000\003:\007!\003F\004\026\004&\007!\000\000\007!\000\249\r\170\000\000\r\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007!\000\000\000\000\000\000\000\000\000\000\007!\0046\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007!\000\000\007!\006%\005~\007!\006%\000\000\000\000\000\000\007!\007!\000\000\000\000\012\150\000\000\r\186\006%\000\000\000\000\000\000\006%\000\000\006%\000\000\000\000\007!\000\000\000\000\000\000\007!\000\000\000\000\r\190\000\000\006%\000\000\000\000\000\000\000\000\000\000\006%\000\000\007!\007!\011\202\000\000\007!\007!\000\000\006%\000\000\006%\011\149\000\000\006%\011\149\000\000\000\000\000\000\006%\006%\000\000\014\218\000\000\000\000\007!\011\149\000\000\000\000\000\000\011\149\000\000\011\149\000\000\000\000\006%\000\000\000\000\000\000\006%\000\000\000\000\000\000\000\000\011\149\000\000\000\000\000\000\000\000\000\000\011\149\000\000\006%\006%\000\000\000\000\006%\006%\000\000\011\149\000\000\011\149\000\000\000\000\011\149\000\000\000\000\000\000\000\000\011\149\000\000\000\000\000\000\000\000\000\000\006%\000\000\011\153\000\000\000\000\011\153\000\000\000\000\000\000\000\000\011\149\nF\000\000\000\000\011\149\000\000\011\153\000\000\000\000\000\000\011\153\000\000\011\153\000\000\000\000\000\000\000\000\011\149\011\149\000\000\000\000\011\149\011\149\000\000\011\153\000\000\000\000\000\000\000\000\000\000\011\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\153\011\149\011\153\000\000\000\000\011\153\000\000\000\000\000\000\000\000\011\153\000\000\011:\000\000\000\000\002Z\003\"\000\000\000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\011\153\nV\000\000\000\000\011\153\000\000\000\000\000\000\000\000\001*\002\134\002r\000\000\000\000\000\000\000\000\000\000\011\153\011\153\002~\000\000\011\153\011\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003*\003.\004Y\000\000\000\000\004Y\003:\011\153\003F\004\026\004&\000\000\000\000\000\000\000\000\r\170\004Y\026Z\011:\000\000\004Y\000\000\004Y\007\146\000\000\000\000\000\000\000\000\005\145\000\000\000\000\005\145\0046\000\000\004Y\000\000\000\000\000\000\000\000\000\000\004Y\000\000\005\145\000\000\005~\000\000\005\145\000\000\005\145\004Y\000\000\004Y\000\000\000\000\004Y\000\000\026f\000\000\000\000\004Y\005\145\000\000\000\000\000\000\000\000\000\000\005\145\b\014\000\000\000\000\000\000\000\000\000\000\r\190\000\000\004Y\000\000\000\000\000\000\004Y\005\145\000\000\000\000\000\000\000\000\005\145\005\145\000\238\000\000\000\000\000\000\000\000\004Y\004Y\000\000\000\000\004Y\004Y\000\000\000\000\000\000\005\145\000\000\000\000\000\000\000\000\000\000\004Q\000\000\000\000\004Q\000\000\000\000\000\000\004q\004Y\000\000\004q\005\145\005\145\000\000\004Q\005\145\005\145\000\000\004Q\012\018\004Q\004q\000\000\000\000\000\000\004q\000\000\004q\000\000\000\000\000\000\000\000\004Q\000\000\005\145\000\000\000\000\000\000\004Q\004q\000\000\000\000\000\000\000\000\000\000\004q\000\000\004Q\000\000\004Q\000\000\000\000\004Q\000\000\004q\000\000\004q\004Q\000\000\004q\000\000\000\000\000\000\000\000\004q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004Q\000\000\000\000\000\000\004Q\000\000\000\000\004q\000\000\000\000\000\000\004q\004A\000\000\000\000\004A\000\000\004Q\004Q\000\000\000\000\004Q\004Q\000\000\004q\004q\004A\000\000\004q\004q\004A\000\000\004A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004Q\000\000\000\000\000\000\004A\000\000\000\000\004q\000\000\000\000\004A\016\194\000\000\000\000\000\000\000\000\000\000\000\000\017\166\004A\000\000\004A\000\000\000\000\004A\000\000\000\000\000\000\000\000\004A\002Z\002^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\129\000\000\000\000\004\129\004A\000\000\003\254\000\000\004A\001*\002\134\002r\000\000\000\000\004\129\000\000\000\000\000\000\004\129\002~\004\129\004A\004A\000\000\000\000\004A\004A\000\000\000\000\000\000\000\000\000\000\004\129\002\130\003.\000\000\000\000\000\000\004\129\003:\000\000\003F\004\026\004&\004A\000\000\000\000\000\000\0042\000\000\011\249\000\000\004\129\011\249\000\000\020\194\000\000\004\129\011\158\007\169\000\000\000\000\000\000\000\000\011\249\0046\000\000\000\000\000\000\000\000\011\249\000\000\000\000\004\129\000\000\000\000\007\169\007\169\000\000\007\169\007\169\000\000\011\249\000\000\000\000\000\000\000\000\000\000\011\249\000\000\004\129\004\129\000\000\000\000\004\129\004\129\000\000\011\249\000\000\011\249\007\169\000\000\011\249\000\000\007\141\000\000\004f\011\249\004j\000\000\000\000\000\000\000\000\004\129\000\000\000\000\000\000\000\000\r\210\000\000\000\238\007\141\007\141\011\249\007\141\007\141\000\000\011\249\000\000\007\173\000\000\000\000\000\000\000\000\000\000\007\169\000\000\000\000\000\000\000\000\011\249\011\249\000\000\000\000\011\249\007\141\007\173\007\173\000\000\007\173\007\173\000\000\028\138\007\169\000\000\007\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\249\000\000\007\141\000\000\000\000\007\161\007\169\007\173\000\000\005\222\007\169\000\000\000\000\000\000\007\169\000\000\007\169\007\141\004I\000\000\007\169\004I\007\161\007\161\000\000\007\161\007\161\000\238\000\000\000\000\000\000\000\000\004I\000\000\000\000\007\141\004I\007\141\004I\000\000\000\000\000\000\007\173\000\000\000\000\000\000\007\161\000\000\000\000\000\000\004I\007\141\002Z\002^\005\222\007\141\004I\000\000\000\000\007\141\007\173\007\141\007\173\000\000\000\000\007\141\000\238\000\000\000\000\000\000\004I\000\000\001*\002\134\002r\004I\007\173\000\000\000\000\005\222\007\173\007\161\002~\000\000\007\173\015\174\007\173\000\000\000\000\000\000\007\173\004I\000\000\000\000\000\000\000\000\002\130\017\002\000\000\007\161\016&\007\161\003:\000\000\003F\004\026\004&\000\000\004I\004I\000\000\017\018\004I\004I\000\000\0062\000\000\000\000\005\222\007\161\000\000\004y\000\000\007\161\004y\007\161\000\000\000\000\0046\007\161\001\174\004I\000\000\002\182\000\000\004y\000\000\000\000\000\000\004y\000\000\004y\017N\000\000\028\226\000\000\002Z\002^\000\000\000\000\003R\000\000\000\000\004y\000\000\000\000\000\000\000\000\000\000\004y\000\000\000\000\003^\000\000\000\000\000\000\001*\002\134\011\182\000\000\000\000\000\000\000\000\004y\000\000\000\000\000\000\003\226\004y\020\238\000\000\000\000\012B\000\000\000\000\000\000\000\000\012J\006\245\006\245\002\130\003>\000\000\000\000\004y\000\000\003:\000\000\003F\004\026\004&\000\000\000\000\012R\000\000\0042\000\000\028\146\006\245\006\245\006\245\004y\004y\000\000\000\000\004y\004y\000\000\006\245\000\000\012f\012\170\0046\000\000\004\189\000\000\005\005\000\000\012\221\012\221\000\000\000\000\006\245\006\245\004y\000\000\000\000\000\000\006\245\000\000\006\245\006\245\006\245\018\014\000\000\017\206\026\002\006\245\012\221\012\221\012\221\007\166\000\000\000\000\000\000\000\000\001\174\000\000\012\221\r\142\000\000\000\000\000\000\000\000\006\245\000\000\000\000\000\000\000\000\000\000\014\154\000\000\012\221\012\221\004\137\000\000\003R\000\000\012\221\000\000\012\221\012\221\012\221\001\174\000\000\000\000\002\182\012\221\014\158\002Z\002^\024\246\000\000\000\000\014\198\000\000\000\000\004\181\000\000\000\000\000\000\000\000\000\000\003R\012\221\000\000\000\000\000\000\012B\001*\002b\002r\004\222\012J\000\000\003^\000\000\000\000\000\000\002~\000\000\011\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\003\226\000\000\020\238\002\130\003.\012B\000\000\000\000\000\000\003:\012J\003F\004\026\004&\000\000\000\000\012f\015n\0042\000\000\004\137\004\137\000\000\000\000\000\000\000\000\012R\002Z\002^\000\000\000\000\000\000\000\000\000\000\000\000\0046\000\000\000\000\000\000\015~\000\000\000\000\000\000\012f\012\170\000\000\000\000\001*\002b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\014\000\000\000\000\000\000\000\000\002\130\0036\000\000\000\000\000\000\000\000\003:\000\000\003F\004\026\004&\000\000\000\000\000\000\000\000\0042\000\000\012\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0046")) + ((16, "6\224@~;\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023\018;\198\000\000\000\000\022\022;\1986\224@~\022\022\000\003\000\000\000\000@~\022\022\000\003@~\022\022\000\003\000\000\000\000\000\000\018\022;,\021\218<\194K\216\000\000\000\025\000\000\000\000\001\030\000\000\000\000=\168\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\002\248\002\160\000\t\000\000\000\000\002\236\000\000>\206Qx\022\022?\170\022|\003\168\0001X2\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\234\001\132\000\157\000\000\000\168\004B\000\000\000\242\000\226\004J\000\000\005L\002\000\n\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\234\000\000\000\000\002\160K\b\000\000\000\000\000h\000\000\000\000K\170\003<\003\168\000\000\000\0009J\000h\000\000=\210\022\022>\206\005.\005\000\003\168\004\176\000\000\022\0226\224@D\022\022M\\\000\000\001<\000\000G\018\004\250\000\000\028x\000\000\000\016\000\000\000\000\001\166\000\000\000h\000\000\000\000\000\000\001\206\000\000\028x\000\000\004\004jjq\130X\200s\164<6G\000I\238\000\000[\140\026\018K\b;\1986\2246\224\000\000\000\000\000\000=L=L\003\168\004\176\004\176\022\022?\170\025\174\000\208\005\182\000\000\004\144\005\186\000\000\000\000\000\000\000\000\000\000\022\022\000\000\000\000\000\000@~\022\022\000\003@~\022\022\000\0034\212c\220AP\000\252?\170@~\022\022o~\000\000K\216g\154j\222\000\000\005\182\000\000\005\130\000\000\023\1648NI4\000\0008NI4\000\0008Nu\240\007\028\006\194\004\004\002\164\000\000\006F\000\000\000\000\b0\000\000\000\000\000\0008N\000h\000\000\000\000M\\8NL\146I\238\000\000\006\196\028\2529JI\238\006r8N\000\000\000\000\000\000\000\000\000\000\000\000H\242I\238I\220\007\028\000\000\000\000\000\000\003~\000\000\000\000ON\007\140\000h\000\000\000\000J\198\000\000\000\000\000\000\003(\000\0008N\000\000\021\024xt\000\0008N\007V8N\030.\000\000\031,\000\000\bT\0040\000\000\007`8N\004|\000\000\004\146\000\000\003\138\000\000\000\003\006b\000\000\000\000\000\000$\152\tXK\216@~\022\022K\216\000\000\007\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000G\250\030\140\000\000\000\000\000\000\001\254\026\002j\222\000\000d^\022\022K\216\000\000\000\000HHK\216u\218K\216vh\000\000N\000\000\000\000\000N\164=\168\004\180\004\180\000\000\b~K\216\000\000\000\000\000\000\bB\b\186\000\000\027\138\000\000K\216v\2068N\b\n\000\000K\216v\232\0001\000\000\000\000\000\000\b\202\000\000\022Z\000\000m\168\000\000\tx\000\0006\136K\216\000\000\000\0006\140\tB\005\182\t\156\000\000\000\000\000\000\000\000\b\220\000\000<\176\006\022\011\b\007\1748N\016\186\011\144\000\000\000\000\007l\011\b\t\018\000\003K\216P(\002\254\000\000K\216\024\1448N\017\138\t\018\011\166\000\000\000\000\000\000>\164\004\180\012B\000\000K\216\000\000\000\003@~=\210=L\003\168\004\176\003~\002\004\000\t\000\000\011\144>\206>\206\012H>\206\003~\002\004\002\004\000\000\012p>\206\000\000]\184\001LG\018\005\182\005\248x\142\000\0008NYn8NR\206Y\2468N\005l8NZ\128\000\000\t\134\n\150\006\140>\206^@\000\000\tZ\011\148Q\188\000\000\000\000\000\000\000\000>\206^\200>\206_P\000\218\004\004SX\005\186\004\004S\226\000\000_\216\001L\000\000\000\000``\023f\000\000\025\228\000\000\012\220\004\176\000\000RFP\200\000\000\000$\000\000>\206\026P\000\000\000\000\000\000P\238\000\000\000$\000\003AP\005\234\t\170?\170\024\0069\222\018\022?\170@~\022\022\018\022@~\022\0227\220@~\022\022\000\003d^\022\022K\216K\2168&\000\003d^\022\022<\176\000\000Z\208\000\000\000\000\003ZI\238\t\240\012\248FFd^\022\022K\216\027\254K\216\000\000\000\000d^\022\022K\216\028N\000\003d^\022\022K\216\027\138\000\003\018\022\000\000\000\000\000\000\000\000\001\250\023r5\218\000\000B$B\248=L\003\168\004\176\006\192>\206\026b\000\000C\204D\160g\154\029L8N\t\174\000\003@~\022\022\018\022\024\006\018\022\003\002\017\254?\170d^\022\022K\216\028\252?\170\018\022\n\200\r8\007\2208N#\1548N\028\n8N#\250\r\162\000\000\000\000\r\204\000\000\018\022\004\n\r\232\000\000$\236\000\003\014b\000\000\029\250?\170\019\020\025\004\000\000\000\000\000\000\000\000\b\224\000\003\000\000\000\000\t\202\000\003\000\000\000\000\030\248?\170\031\246?\170\000\000\020\018\026\002?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170 \244?\170\000\000?\170\000\000?\170\000\000?\170\000\000?\170\000\000\000\000\000\000\000\003;\198\000\003\000\000\r\186\000\000\022\022K\216\029\1348N\n\208\000\003\000\000\031\130\000\003\000\000K\216 FK\216 \128K\216!D\0001\000\000\000\000\000\000!~K\216\"B\000\000d\210;\1986\224K\216;R\000\003\000\000:\250\025\174\000\208\000hq\224>\206n\020d\210d\210\000\000\000\000\004\002\005\n\000\t\006\n\004\176kR>\206\005\198\004\176k\220d\210t\002\002\160\000\t\006\nd\210t\002\000\000\006\n\000\000\000\000\006\nd\210\000\000;\1986\224;\1986\224=L\003\168\004\176d\210\000\000\022|\003\168\0001\r\202K\b\n\n\000h\000\0008Ne6\r\248\014\166rD\000\000d\210\000\000e\1568\236\022\022\005\170\000\000\n\146\014\160\000\000\015\bl@I\238\000=\000\000\014\230\014tK\b\011\0308N$\248\022\022\011\152\021\220\000\000%x\015D\000\000\000\248\000\000\000\000\015\144I\238Tj\000\000[n\006\178\n\168\002\004\011\224\014\216\022\022d\210\000\000Mn\011\246I\238\015jI\238`\232U\018\015lI\238a\134U\186\022\022d\210\000\000\000\000\\D@D\022\022X\\G\018\011\208jjq\130u\240\000=\015\150\000\000\000\000b\bf\000\022\022\000\000nx\005\170\000\000\000\000o\194\000\000\000\000\000\000l\164\025z\026x\000=\015\152\000\000\000\000\000\000f\000\022\022\000\000\000=\015\182\000\000\000\000\000\000\000\000\000\000o\194\000\000\015\174\027\226\000\000\022\232o\194\000\000\000\000\000\000\000\000\012\028p^q\130\000\000o\194\000\000\000\000o\194\000\000\015\208\027\226\022\232o\194\000\000x\240\023\152\002\248\000\208\004\004o\194\000\000\000\208\004\004o\194\000\000;f\025\174\000\208\000hq\224>\206o\194\000\000\004\002\006\194\bn\004\004o\194\000\000\000\t\0158>\206o\194G\164\002\160\000\t\015:>\206o\194G\164\000\000\000\000\007\018\000\003o\230\000\000>\206t6d\210\000\000\007\018\000\000=\210\022\022>\206o\194\000\0008\236\022\022\005\170f\000#\242\030\200\021\220\017\184\000\000\012v\028x\012`\000\000\015\206\015z\0312\021\218I\0028N\012N\000\000Er\003\218\006\242\011\232\000\000\012`\000\000\015\224\015`8NAP\000\000\003\168\017\180\012*\000\000\r^\000\000\015\246\015vK\b>\022\000\000\022\022\0312\016\026\004j\000\208\000\003\002X\03128N\r^\007\028\000\0008N\b\238\n\234\000\000\000\000b\174\000\000\000\003\005\204\0312c8AP\000\000\022\0228N\012\1688N5\218>\022\000\000\015\168\000\000>\022\000\000\000\000Er\000\000d\210t\212\021\220\017\184\012v\016\012\015\184\0312d\210t\212\000\000\000\000\021\220\017\184\012v\016 \015\158v\254F\228I\238\016@v\254u\240\030\198\016Xv\254I\238\016^v\254f\128g\000\000\000O\216\000\000\000\000d\210wr\021\220\017\184\012v\016X\015\214v\254d\210wr\000\000\000\000\000\000x\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000d\210\000\000t\226\022\022:*\016\\jj\000\000o\194t\226\000\000\000\000w\140\022\022:*\016^\015\224q\130\000\000o\194w\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\026#\242\021\220\017\184\012v\016ng\1548\006\021\218<\194B\248\022f\002\210\000=\016\132\n\012\000\003\000\000\016.\000\003\000\000>\022\000\000\007\222\012\230\000\000\r\194\000\000\016\166\01668N7D\016\188\012\b\000\003\000\000\016j\000\003\000\000\022\138\003\168\r(\016\204h\028K\b\004\180\016n8N\rv\000\003\000\000\016\134\000\003\000\000\000\000\r\006\000\000\016\152FF\000\000\000\000\000\000>\022\000\000\021\182\014\016\000\000\014\\\000\000\016\248\016xK\b\000\000\017\bh\158L\212\004\180\016\1548N\r\166\000\003\000\000\016\182\000\003\000\000\000\000\022\022\000\003>\022\000\000\022<\022\0228\0068\006i\146;\198\022\022o~K\216\n\200\000\000\021\178\000\208\000\003\r<8\0068N\014\\\005\182\000\000\022\022g\154g\1548\006\r\1948\006\000\0009\204\018\022\005\018\006\026:\198\000\000\000\000\000\000V\030\000\000\000\000V\168\000\000\000\000W2\000\003\014:8\006W\188o~K\216\n\200\000\000\007\012\000\000v\254\017Z\000\0004\212\017 \000\000>\022\000\0008\0064\212>\022\000\000\022\0228N>\022\000\000\016\206\000\000>\022\000\000\000\000B\248\000\000plv\254\016\2368\006q\bg\154\000\000d\210u~\021\220\017\184\012v\017Xg\154d\210u~\000\000\000\000\000\000m\138@~\022\022o~K\216d\210\000\000\000\000\000\000\000\000\000\000\000\000r\168\000\000\000\000s*\000\000d\210\000\000t\226\000\000\000\000\000\000\000\000d\210m\138\000\000\000\000r\168\000\000s*\017\148\000\000\017\150\000\000\017\180\000\000\000\000\000\000\000\003\017\186\000\000\000\003\017\232\000\000\t\"\018\252?\170\017\242\000\000\029\130?\170\000\000?\170\018\006\000\000?\170\018\018\000\000\000\000\019\250?\170\018&\007\"?\170!\242?\170\0188\b ?\170\"\240?\170\018:\t\030?\170#\238&\232\000\003\018L\n\028?\170$\236\000\003\018J\011\026?\170%\234\000\003\018\\\012\024?\170&\232\012\230\020\248?\170\018d\r\022?\170'\230?\170\018p\014\020?\170(\228?\170\018\134\015\018?\170)\226\016\016?\170*\224\021\016\000\000\018\146\000\000?\170\018\150\000\000?\170\018\150\000\000\000\000\"|\000\003\000\000\007\214\000\003\000\000K\216\000\000\000\000i\016\018\158\000\000Er\000\000\017\216\000\000Er\000\000\018\158\000\000\005\234\0182\000\000\024\006\028\250\005\182\000\000\031\192\011T\rP\023|\000\000\000\000\018\186\000\000\001t\027\000>\170\000\000\014\176\000\000\000\000\000\003\018\020\000\003\018\030\000\000\0186\000\003\018N\000\000\000\003\014\176\000\003\018L\000\003\018Z\000\000\000\000\018\224\000\003\000\000\000\003\000\000\000\000\000\000+\222\019$?\170,\220?\170-\218\000\000\018\130\000\000\027\000\014D\000\000\017\014\019\030\000\000#\150\014L\014\190\000\000\000\000\018\188\000\000\019:\000\000\000\000\003\168\004\176\023\160\000\003\000\000\002\248\002\160\000\t\006\n\018\214\000\003\000\0008\236\022\022\005\170\000\230\003~\018\216\000\003\000\000\000\000\000\000\000\000\019`\000\000\000\000y\030\004\180\018\1828N\014\176\000\003\000\000\014\1788N\014\200\000\003\000\000\018\218\000\003\000\000\000\000d\210\000\000.\216\000\000\018\194\000\000\000\000=L\003\168\004\176\024\232\000\000>\206\027N\000\000\nT\000\000\019\144\000\000\019\194K\216/\214\019\196K\2160\212\022\022\000\000>\206\027`\000\000>\206\027\210\000\000>\206\028\246\000\000d\210\000\000\003\168\004\176d\210\000\000d\210m\138\000\000\000\000\019\152\000\000\021\006\011\166\022\022a\006\000\000\000\000!\004b2\000\000\000\000\019\028\000\000\019r8N\000\000\r\156\n,\007\028\000\000\000\0008N\005V\007\1588N\012\148\000=\019\168\000\000\000\000n\220\000\000\000\000\019\170\027\226\029P\005\170f\000\006\178\022\022\000\000d\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000j\006\006\178\022\022\000\000\015\140jj\019\176\027\226\029Pd\210\000\000\019,\000\000\\\162\029\206\000\000d\210\000\000\019H\000\000\030r\000\000\028N\000\0008N\0158\000\000B\248\019\\\000\000\020&K\2161\2102\208K\2163\206\000\003\000\000\000\003\000\000\019T\000\003\019^\000\000\020\016\000\000\000\003\019l\000\003\019t\000\000\019\156\000\000\000\000?\170\019\160\000\000\000\000#\238X2\020H\000\000\000\000\000\000\012T\017\196]\020\020J\000\000\000\000\000\000\000\000\000\000\000\000\019\194\000\000\006\178\000\000\019\196\000\0008N\000\000\t\252\000\000\000\003\019\212\000\000\000\000\004\004\000\000\bl\000\000\000\003\000\000\001\212\000\000\004\176\000\000\005\190\000\000>\206\000\000\026P\000\000\n\150\000\000\019\236\000\000K\216\024\144\000\000\000\000\024\216\019\242\000\000\000\000\019\234\025\1787\220\000hm&\000\000\000\000\000\000\000\000\000\000v\b\000\000\000\000\020\156\000\000yT\000\000\015\176\020\158\000\000\020\160\000\0008\2168\216w\250w\250\000\000\000\000d\210w\250\000\000\000\000\000\000d\210w\250\020\002\000\000\020\016\000\000"), (16, "\0039\000\006\000\246\001\142\001\146\0039\001\002\001\006\0039\001\n\001\022\001\"\0039\rF\0039\012\129\001&\0039\007\130\0039\0039\0039\006\025\0039\0039\0039\001*\001\186\002N\001\254\001.\0039\003V\003Z\011\150\0039\012\129\0039\006\217\0012\b\154\003z\002\230\0039\0039\003\174\003\178\0039\003\182\003\194\003\206\003\218\003\226\007\018\007b\002\234\0039\0039\003F\001J\002f\003\214\0039\0039\0039\b\194\b\198\b\210\b\226\b\142\005\150\0039\0039\0039\0039\0039\0039\0039\0039\0039\b\250\001N\0039\000\238\0039\0039\0039\001J\t\006\t\030\tj\t~\005\162\0039\005\166\0039\0039\0039\b\190\0039\0039\0039\0039\b\218\002j\b\222\002\006\024B\0039\001N\0039\0039\004\133\0039\0039\0039\0039\0039\0039\005\170\b\238\0039\0039\0039\t\146\004j\t\246\012\169\0039\0039\0039\0039\012\169\012\169\012\169\012\169\b\158\002\022\012\169\012\169\012\169\012\169\001\250\012\169\012\169\003\157\012\169\012\169\012\169\003\189\012\169\012\169\012\169\012\169\r>\012\169\004\133\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012y\012\169\rF\012\169\000\238\012\169\012\169\012\169\012\169\012\169\007\190\006\025\012\169\012\169\012\169\003a\012\169\003\222\012\169\012\169\012\169\012y\001\137\012\169\012\169\012\169\012\169\012\169\012\169\012\169\003a\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\bB\012\169\012\169\007\250\012\169\012\169\012\169\001V\001\250\003\157\bJ\002\242\012\169\012\169\012\169\012\169\012\169\012\169\bN\012\169\012\169\012\169\012\169\012\169\012\169\012\169\r\190\012\169\012\169\001Z\012\169\012\169\002\246\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\012\169\003\n\001\137\012\169\012\169\012\169\012\169\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\002&\001\137\002\202\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\023\214\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\003]\001\137\001\137\001\137\001\137\001\137\007~\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\028W\001\137\001\137\001\137\001\137\001\137\001\137\001\137\bJ\004\133\004\133\003\014\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\004F\t\170\001\137\005\218\001\137\001\137\r\170\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\001\137\016\170\001\137\001\137\001\137\001\137\001\137\nY\002\029\002\029\004>\007\030\nY\nY\nY\nY\002J\001\154\nY\nY\nY\nY\000\238\nY\nY\004\133\nY\nY\nY\bJ\nY\nY\nY\nY\004\133\nY\000\n\nY\nY\nY\nY\nY\nY\nY\nY\001\246\nY\000\238\nY\005\n\nY\nY\nY\nY\nY\007\"\007>\nY\nY\nY\002\014\nY\002\030\nY\nY\nY\002\029\004J\nY\nY\nY\nY\nY\nY\nY\002V\nY\nY\nY\nY\nY\nY\nY\nY\nY\nY\nY\002v\nY\nY\004\218\nY\nY\nY\004\133\0075\004\133\004\133\005f\nY\nY\nY\nY\nY\nY\004\133\nY\nY\nY\nY\nY\n\014\nY\001\158\nv\nY\004\133\nY\nY\004\133\nY\nY\nY\nY\nY\nY\nY\nY\nY\nY\nY\nY\nY\000\238\nY\nY\nY\nY\nY\003\229\004\133\004\133\004\133\002^\003\229\003\229\003\229\003\229\004\133\005\014\003\229\003\229\003\229\003\229\000\238\003\229\003\229\004\133\003\229\003\229\003\229\005j\003\229\003\229\003\229\003\229\004\133\003\229\t>\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\004\133\003\229\000\238\003\229\005F\003\229\003\229\003\229\003\229\003\229\003\026\006\165\003\229\003\229\003\229\006\173\003\229\004\133\003\229\003\229\003\229\005\014\000\238\003\229\003\229\003\229\003\229\003\229\003\229\003\229\002z\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\005V\n\006\nn\002\n\003\229\003\229\003\229\002\026\003r\002\170\001\006\005^\003\229\003\229\003\229\003\229\003\229\003\229\002\174\003\229\003\229\003\229\003\229\003\229\n\014\003\229\0069\nv\003\229\001*\003\229\003\229\000\238\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\003\229\012}\003\229\003\229\003\229\003\229\003\229\003\213\003n\001\142\001\146\006*\003\213\003\213\003\213\003\213\003F\t%\003\213\003\213\003\213\003\213\012}\003\213\003\213\012Z\003\213\003\213\003\213\002\158\003\213\003\213\003\213\003\213\b!\003\213\002\162\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\007v\003\213\016\158\003\213\003\142\003\213\003\213\003\213\003\213\003\213\005\014\001\250\003\213\003\213\003\213\003\157\003\213\t\r\003\213\003\213\003\213\005\014\0069\003\213\003\213\003\213\003\213\003\213\003\213\003\213\000\238\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\004\014\n\006\nn\r&\003\213\003\213\003\213\001\"\006\194\001\006\007\186\003\146\003\213\003\213\003\213\003\213\003\213\003\213\000\238\003\213\003\213\003\213\003\213\003\213\n\014\003\213\004\241\nv\003\213\000\238\003\213\003\213\002\214\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\003\213\r*\003\213\003\213\003\213\003\213\003\213\003\209\003\134\b6\003\150\b\142\003\209\003\209\003\209\003\209\r6\007\238\003\209\003\209\003\209\003\209\t\r\003\209\003\209\000\238\003\209\003\209\003\209\000\238\003\209\003\209\003\209\003\209\b\202\003\209\004N\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\005\166\003\209\016\226\003\209\007~\003\209\003\209\003\209\003\209\003\209\006\230\006\254\003\209\003\209\003\209\028g\003\209\012r\003\209\003\209\003\209\005r\024\154\003\209\003\209\003\209\003\209\003\209\003\209\003\209\bJ\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\007\202\n\006\nn\001\006\003\209\003\209\003\209\001\"\004\158\012b\001\142\015^\003\209\003\209\003\209\003\209\003\209\003\209\007\210\003\209\003\209\003\209\003\209\003\209\n\014\003\209\015n\nv\003\209\012j\003\209\003\209\016>\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\r\162\003\209\003\209\003\209\003\209\003\209\t\249\b\142\004>\004>\002^\t\249\t\249\t\249\t\249\r6\020\174\t\249\t\249\t\249\t\249\000\238\t\249\t\249\016F\t\249\t\249\t\249\b\006\t\249\t\249\t\249\t\249\006!\t\249\004j\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\005\166\t\249\b.\t\249\007~\t\249\t\249\t\249\t\249\t\249\0036\004\133\t\249\t\249\t\249\000\238\t\249\022Z\t\249\t\249\t\249\004V\004\142\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\206\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\004\234\t\249\t\249\004\218\t\249\t\249\t\249\007\006\025\022\015\166\000\238\003\197\t\249\t\249\t\249\t\249\t\249\t\249\018\218\t\249\t\249\t\249\t\249\t\249\t\249\t\249\020\178\t\249\t\249\015\178\t\249\t\249\004\133\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\t\249\000\238\n\t\t\249\t\249\t\249\t\249\n\t\n\t\n\t\n\t\018\226\006j\n\t\n\t\n\t\n\t\004N\n\t\n\t\006\025\n\t\n\t\n\t\004\133\n\t\n\t\n\t\n\t\005N\n\t\005*\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\006\229\n\t\003\197\n\t\023V\n\t\n\t\n\t\n\t\n\t\026v\t)\n\t\n\t\n\t\000\238\n\t\022n\n\t\n\t\n\t\004Z\006\238\n\t\n\t\n\t\n\t\n\t\n\t\n\t\0066\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n:\n\t\n\t\nB\n\t\n\t\n\t\001V\004>\005\217\000\238\023^\n\t\n\t\n\t\n\t\n\t\n\t\006N\n\t\n\t\n\t\n\t\n\t\n\t\n\t\006\138\n\t\n\t\001Z\n\t\n\t\t)\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\b\249\n\001\n\t\n\t\n\t\n\t\n\001\n\001\n\001\n\001\005\217\028G\n\001\n\001\n\001\n\001\007]\n\001\n\001\004J\n\001\n\001\n\001\t)\n\001\n\001\n\001\n\001\015b\n\001\005\217\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\006\190\n\001\000\238\n\001\004\237\n\001\n\001\n\001\n\001\n\001\n\170\007U\n\001\n\001\n\001\007U\n\001\022\130\n\001\n\001\n\001\001\006\007\254\n\001\n\001\n\001\n\001\n\001\n\001\n\001\006\162\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\004>\n\001\n\001\006\198\n\001\n\001\n\001\007%\006\218\b\249\007E\007\014\n\001\n\001\n\001\n\001\n\001\n\001\011\170\n\001\n\001\n\001\n\001\n\001\n\001\n\001\022\018\n\001\n\001\003\142\n\001\n\001\002^\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\005\134\t\237\n\001\n\001\n\001\n\001\t\237\t\237\t\237\t\237\000\238\b\022\t\237\t\237\t\237\t\237\002^\t\237\t\237\012\238\t\237\t\237\t\237\0079\t\237\t\237\t\237\t\237\007E\t\237\0036\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\n\186\t\237\b\206\t\237\t\242\t\237\t\237\t\237\t\237\t\237\000\238\025\154\t\237\t\237\t\237\006\181\t\237\022\154\t\237\t\237\t\237\0036\004\198\t\237\t\237\t\237\t\237\t\237\t\237\t\237\001\162\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\001f\t\237\t\237\028'\t\237\t\237\t\237\002*\011\170\018\186\026^\001f\t\237\t\237\t\237\t\237\t\237\t\237\012\246\t\237\t\237\t\237\t\237\t\237\t\237\t\237\n:\t\237\t\237\nB\t\237\t\237\002j\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\t\237\b\245\t\245\t\237\t\237\t\237\t\237\t\245\t\245\t\245\t\245\n2\nZ\t\245\t\245\t\245\t\245\n:\t\245\t\245\nB\t\245\t\245\t\245\012\014\t\245\t\245\t\245\t\245\000\238\t\245\012\238\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\004\157\t\245\000\238\t\245\006\234\t\245\t\245\t\245\t\245\t\245\r.\007E\t\245\t\245\t\245\007E\t\245\022\174\t\245\t\245\t\245\006J\011\190\t\245\t\245\t\245\t\245\t\245\t\245\t\245\b\026\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\006\250\t\245\t\245\rj\t\245\t\245\t\245\003\177\004\157\b\245\026\"\007:\t\245\t\245\t\245\t\245\t\245\t\245\002^\t\245\t\245\t\245\t\245\t\245\t\245\t\245\003\146\t\245\t\245\rZ\t\245\t\245\002j\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\t\245\b\206\t\241\t\245\t\245\t\245\t\245\t\241\t\241\t\241\t\241\002^\012\238\t\241\t\241\t\241\t\241\014\018\t\241\t\241\016B\t\241\t\241\t\241\r\174\t\241\t\241\t\241\t\241\006)\t\241\005%\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\016n\t\241\016J\t\241\007R\t\241\t\241\t\241\t\241\t\241\016.\007\138\t\241\t\241\t\241\014\214\t\241\022\194\t\241\t\241\t\241\016\014\bU\t\241\t\241\t\241\t\241\t\241\t\241\t\241\007\150\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\004>\t\241\t\241\t\017\t\241\t\241\t\241\006%\007\174\019\002\r\198\000\238\t\241\t\241\t\241\t\241\t\241\t\241\002=\t\241\t\241\t\241\t\241\t\241\t\241\t\241\n:\t\241\t\241\nB\t\241\t\241\016\006\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\t\241\000\238\t\253\t\241\t\241\t\241\t\241\t\253\t\253\t\253\t\253\000\238\027\222\t\253\t\253\t\253\t\253\b\130\t\253\t\253\018\222\t\253\t\253\t\253\003\014\t\253\t\253\t\253\t\253\012\213\t\253\tJ\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\014\182\t\253\016v\t\253\016\254\t\253\t\253\t\253\t\253\t\253\t\017\023\190\t\253\t\253\t\253\tQ\t\253\022\222\t\253\t\253\t\253\016\182\bE\t\253\t\253\t\253\t\253\t\253\t\253\t\253\n6\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\022\206\t\253\t\253\003\142\t\253\t\253\t\253\bQ\026Z\007e\018\230\nV\t\253\t\253\t\253\t\253\t\253\t\253\020\030\t\253\t\253\t\253\t\253\t\253\t\253\t\253\n:\t\253\t\253\nB\t\253\t\253\000\238\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\t\253\bJ\n\r\t\253\t\253\t\253\t\253\n\r\n\r\n\r\n\r\000\238\006\029\n\r\n\r\n\r\n\r\nb\n\r\n\r\019>\n\r\n\r\n\r\016\190\n\r\n\r\n\r\n\r\019\130\n\r\nr\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\020F\n\r\019\138\n\r\019\186\n\r\n\r\n\r\n\r\n\r\024\146\012\225\n\r\n\r\n\r\026j\n\r\022\242\n\r\n\r\n\r\020*\n\130\n\r\n\r\n\r\n\r\n\r\n\r\n\r\011b\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\012\230\n\r\n\r\r\002\n\r\n\r\n\r\bI\011\170\r\006\023\230\r2\n\r\n\r\n\r\n\r\n\r\n\r\020\146\n\r\n\r\n\r\n\r\n\r\n\r\n\r\012\238\n\r\n\r\024z\n\r\n\r\t9\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\bJ\n\005\n\r\n\r\n\r\n\r\n\005\n\005\n\005\n\005\b\202\011b\n\005\n\005\n\005\n\005\000\238\n\005\n\005\003\254\n\005\n\005\n\005\016\190\n\005\n\005\n\005\n\005\000\238\n\005\rN\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\rR\n\005\027B\n\005\t=\n\005\n\005\n\005\n\005\n\005\025.\rz\n\005\n\005\n\005\023\234\n\005\023\006\n\005\n\005\n\005\025:\025B\n\005\n\005\n\005\n\005\n\005\n\005\n\005\002^\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\r\142\n\005\n\005\000\238\n\005\n\005\n\005\006\134\r\206\r\222\014&\014r\n\005\n\005\n\005\n\005\n\005\n\005\004\157\n\005\n\005\n\005\n\005\n\005\n\005\n\005\014\146\n\005\n\005\014\178\n\005\n\005\026\238\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\n\005\014\250\nI\n\005\n\005\n\005\n\005\nI\nI\nI\nI\015v\015\142\nI\nI\nI\nI\012\014\nI\nI\016\022\nI\nI\nI\016\026\nI\nI\nI\nI\016R\nI\016V\nI\nI\nI\nI\nI\nI\nI\nI\016~\nI\016\130\nI\016\154\nI\nI\nI\nI\nI\017\018\017B\nI\nI\nI\017F\nI\023\018\nI\nI\nI\017j\017n\nI\nI\nI\nI\nI\nI\nI\017~\nI\nI\nI\nI\nI\nI\nI\nI\nI\nI\nI\017\142\nI\nI\017\154\nI\nI\nI\017\206\017\210\018\"\018J\018N\nI\nI\nI\nI\nI\nI\018\146\nI\nI\nI\nI\nI\nI\nI\003\201\nI\nI\018\182\nI\nI\018\198\nI\nI\nI\nI\nI\nI\nI\nI\nI\nI\nI\nI\nI\018\238\t\225\nI\nI\nI\nI\t\225\t\225\t\225\t\225\018\242\018\254\t\225\t\225\t\225\t\225\019\014\t\225\t\225\019&\t\225\t\225\t\225\000\238\t\225\t\225\t\225\t\225\0196\t\225\019J\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\019b\t\225\019\146\t\225\019\150\t\225\t\225\t\225\t\225\t\225\019\162\019\178\t\225\t\225\t\225\019\198\t\225\003\201\t\225\t\225\t\225\020\186\020\198\t\225\t\225\t\225\t\225\t\225\t\225\t\225\020\246\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\021\026\n\006\nn\004A\t\225\t\225\t\225\016j\021B\015\254\021\218\021\226\t\225\t\225\t\225\t\225\t\225\t\225\b\026\t\225\t\225\t\225\t\225\t\225\n\014\t\225\021\234\nv\t\225\021\254\t\225\t\225\016r\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\t\225\000\238\t\225\t\225\t\225\t\225\t\225\002M\022\n\bM\022\030\012\205\002M\001\002\001\006\002M\027\226\002j\001\"\002M\n.\002M\0226\001&\002M\012\205\002M\002M\002M\022B\002M\002M\002M\001*\004A\n^\022V\001.\002M\002M\002M\002M\002M\nf\002M\n\018\0012\022j\003z\022~\002M\002M\002M\002M\002M\022\150\022\170\003\206\002N\002M\023*\002M\0236\002M\002M\003F\022\190\022\218\003\214\002M\002M\002M\b\194\b\198\b\210\022\238\020R\005\150\002M\002M\002M\002M\002M\002M\002M\002M\002M\023\002\n\006\nn\023&\002M\002M\002M\0232\023>\023r\023\130\023\146\005\162\002M\005\166\002M\002M\002M\023\158\002M\002M\002M\002M\b\218\022J\b\222\023\206\022\138\002M\023\246\002M\002M\023\254\002M\002M\002M\002M\002M\002M\005\170\b\238\002M\002M\002M\t\146\004j\024\006\n5\002M\002M\002M\002M\n5\001\002\001\006\n5\024\014\024\"\001\"\n5\n5\n5\024*\001&\n5\0246\n5\n5\n5\024V\n5\n5\n5\001*\024n\n5\024\134\001.\n5\n5\n5\n5\n5\n5\n5\022\022\0012\024\162\003z\024\170\n5\n5\n5\n5\n5\024\218\024\250\003\206\002N\n5\022.\n5\022:\n5\n5\003F\025\018\025&\003\214\n5\n5\n5\b\194\b\198\b\210\025N\n5\005\150\n5\n5\n5\n5\n5\n5\n5\n5\n5\025n\n5\n5\025\162\n5\n5\n5\025\170\025\182\026\022\026F\026N\005\162\n5\005\166\n5\n5\n5\026\134\n5\n5\n5\n5\b\218\n5\b\222\026\158\n5\n5\026\246\n5\n5\027\n\n5\n5\n5\n5\n5\n5\005\170\b\238\n5\n5\n5\t\146\004j\027&\n1\n5\n5\n5\n5\n1\001\002\001\006\n1\027N\027V\001\"\n1\n1\n1\027~\001&\n1\027\134\n1\n1\n1\027\142\n1\n1\n1\001*\027\154\n1\027\162\001.\n1\n1\n1\n1\n1\n1\n1\022N\0012\027\171\003z\027\187\n1\n1\n1\n1\n1\027\206\027\234\003\206\002N\n1\022b\n1\022v\n1\n1\003F\028\007\028\023\003\214\n1\n1\n1\b\194\b\198\b\210\0283\n1\005\150\n1\n1\n1\n1\n1\n1\n1\n1\n1\028\135\n1\n1\028\163\n1\n1\n1\028\174\028\227\028\247\028\255\029;\005\162\n1\005\166\n1\n1\n1\029C\n1\n1\n1\n1\b\218\n1\b\222\000\000\n1\n1\000\000\n1\n1\000\000\n1\n1\n1\n1\n1\n1\005\170\b\238\n1\n1\n1\t\146\004j\000\000\002\133\n1\n1\n1\n1\002\133\001\002\001\006\002\133\000\000\000\000\001\"\002\133\n.\002\133\004\133\001&\002\133\000\000\002\133\002\133\002\133\000\000\002\133\002\133\002\133\001*\004\133\n^\000\000\001.\002\133\002\133\002\133\002\133\002\133\nf\002\133\022\210\0012\000\000\003z\005\026\002\133\002\133\002\133\002\133\002\133\000\000\000\000\003\206\002N\002\133\022\230\002\133\022\250\002\133\002\133\003F\000\238\000\000\003\214\002\133\002\133\002\133\b\194\b\198\b\210\000\238\020R\005\150\002\133\002\133\002\133\002\133\002\133\002\133\002\133\002\133\002\133\000\000\004\133\002\133\000\000\002\133\002\133\002\133\019~\004\133\000\000\004\133\000\000\005\162\002\133\005\166\002\133\002\133\002\133\000\000\002\133\002\133\002\133\002\133\b\218\000\000\b\222\004\133\000\000\002\133\000\000\002\133\002\133\019\134\002\133\002\133\002\133\002\133\002\133\002\133\005\170\b\238\002\133\002\133\002\133\t\146\004j\004\133\004\133\002\133\002\133\002\133\002\133\004\133\004\133\bE\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\000\000\004\133\000\238\004\133\004\133\004\133\004\133\004\133\004\133\025\194\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\000\000\004\133\004\133\000\238\000\238\004\133\004\133\000\000\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\006\146\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\000\238\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\004\133\020\018\004\133\000\000\004\133\004\133\004\133\004\133\004\133\004\133\000\238\004\133\000\n\004\133\004\133\004\133\004\133\004\133\004\133\004\133\000\000\004\133\004\133\004\133\000\000\000\238\004\133\004\133\002\029\002\029\004\133\000\238\004\133\004\133\000\000\004\133\004\133\000\000\004\133\r&\011b\025\198\002\029\001\"\025\210\004\133\004\133\004\133\000\000\000\238\004\133\004\133\004\133\004\133\000\129\000\129\004\133\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\000\000\129\000\000\000\129\000\129\019\230\000\129\000\129\000\000\006Z\000\129\000\129\006\006\000\129\000\129\000\129\000\129\r*\000\129\006n\000\129\000\129\000\000\006v\000\129\000\129\018\170\000\129\000\129\000\129\007\186\000\129\r6\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\003\146\019\026\000\129\000\129\000\000\001\006\000\129\000\129\br\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\005\166\002\029\000\129\000\000\tU\000\129\000\000\000\129\000\000\000\129\000\000\000\000\000\000\b6\000\129\000\129\000\129\000\129\000\129\000\129\007=\000\129\000\129\000\129\007=\t\174\002N\000\129\000\n\014B\000\129\003\134\000\129\000\238\000\222\000\000\023v\000\000\000\129\000\000\023\134\023\150\023\162\000\000\000\129\000\129\000\129\000\129\b\142\002}\000\129\000\129\000\129\000\129\002}\001\002\001\006\002}\002\029\000\000\001\"\002}\000\238\002}\000\000\001&\002}\000\000\002}\002}\002}\000\000\002}\002}\002}\001*\000\000\024\190\000\000\001.\002}\002}\002}\002}\002}\000\000\002}\000\000\0012\000\000\003z\000\000\002}\002}\002}\002}\002}\007=\000\000\003\206\b\214\002}\000\000\002}\000\000\002}\002}\003F\000\000\000\000\003\214\002}\002}\002}\b\194\b\198\b\210\004\022\015\018\005\150\002}\002}\002}\002}\002}\002}\002}\002}\002}\000\000\n\006\nn\000\000\002}\002}\002}\000\000\000\000\000\000\004=\000\000\005\162\002}\005\166\002}\002}\002}\000\000\002}\002}\002}\002}\b\218\n\014\b\222\000\000\nv\002}\000\000\002}\002}\001\006\002}\002}\002}\002}\002}\002}\005\170\b\238\002}\002}\002}\t\146\004j\000\000\002\145\002}\002}\002}\002}\002\145\000\238\025\134\002\145\000\000\000\000\000\000\002\145\000\000\002\145\000\000\000\000\002\145\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\000\000\000\000\001\186\002N\000\000\002\145\002\145\002\145\002\145\002\145\b\142\002\145\000\000\004=\000\000\028\147\000\000\002\145\002\145\002\145\002\145\002\145\000\000\000\000\000\238\000\000\002\145\000\000\002\145\006Z\002\145\002\145\006\006\007*\000\000\000\000\002\145\002\145\002\145\006n\r&\000\000\000\000\006v\001\"\002\145\002\145\002\145\002\145\002\145\002\145\002\145\002\145\002\145\000\000\n\006\nn\000\000\002\145\002\145\002\145\000\000\014f\000\000\000\000\000\000\002\029\002\145\003\146\002\145\002\145\002\145\000\000\002\145\002\145\002\145\002\145\025\138\n\014\000\000\000\000\nv\002\145\r*\002\145\002\145\007\186\002\145\002\145\002\145\002\145\002\145\002\145\000\n\000\000\002\145\002\145\002\145\r6\000\000\014\138\002\141\002\145\002\145\002\145\002\145\002\141\bz\003\146\002\141\002\029\001\186\002N\002\141\000\000\002\141\005M\000\000\002\141\000\000\002\141\002\141\002\141\002\029\002\141\002\141\002\141\005\166\000\000\005M\b6\000\000\002\141\002\141\002\141\002\141\002\141\000\000\002\141\014\150\007\186\000\000\000\000\000\000\002\141\002\141\002\141\002\141\002\141\007\186\000\238\005\222\000\000\002\141\000\000\002\141\014.\002\141\002\141\000\000\005M\b\166\003\246\002\141\002\141\002\141\006\150\r&\004\002\000\000\t\214\001\"\002\141\002\141\002\141\002\141\002\141\002\141\002\141\002\141\002\141\000\000\n\006\nn\b6\002\141\002\141\002\141\000\000\000\000\000\000\005M\000\000\b6\002\141\005M\002\141\002\141\002\141\000\000\002\141\002\141\002\141\002\141\000\238\n\014\000\000\000\000\nv\002\141\r*\002\141\002\141\000\238\002\141\002\141\002\141\002\141\002\141\002\141\000\000\000\000\002\141\002\141\002\141\r6\003B\014j\002\129\002\141\002\141\002\141\002\141\002\129\000\000\003\146\002\129\000\000\000\000\028w\002\129\000\000\002\129\000\000\000\000\002\129\000\000\002\129\002\129\002\129\000\000\002\129\002\129\002\129\005\166\000\000\000\000\000\000\000\000\002\129\002\129\002\129\002\129\002\129\000\000\002\129\014v\007\186\000\000\000\000\000\000\002\129\002\129\002\129\002\129\002\129\007\186\000\000\t\174\023\218\002\129\000\000\002\129\014.\002\129\002\129\000\000\000\000\025\146\023v\002\129\002\129\002\129\023\134\023\150\023\162\000\000\025\206\000\000\002\129\002\129\002\129\002\129\002\129\002\129\002\129\002\129\002\129\000\000\n\006\nn\b6\002\129\002\129\002\129\000\000\000\000\000\000\006V\000\000\b6\002\129\000\000\002\129\002\129\002\129\000\000\002\129\002\129\002\129\002\129\000\238\n\014\007\186\000\000\nv\002\129\000\000\002\129\002\129\000\238\002\129\002\129\002\129\002\129\002\129\002\129\000\000\bE\002\129\002\129\002\129\bE\000\000\025\218\002E\002\129\002\129\002\129\002\129\002E\000\238\000\000\002E\000\000\000\000\000\000\002E\000\000\002E\014\182\000\000\002E\000\000\002E\002E\002E\b6\002E\002E\002E\012E\012E\000\000\000\000\012E\002E\002E\002E\002E\002E\bE\002E\000\000\t\142\000\000\000\000\000\238\002E\002E\002E\002E\002E\000\000\000\000\000\000\bE\002E\000\000\002E\006Z\002E\002E\006\006\006b\000\000\0276\002E\002E\002E\006n\000\000\012u\000\000\006v\000\238\002E\002E\002E\002E\002E\002E\002E\002E\002E\bE\000\000\002E\000\000\002E\002E\002E\000\000\012u\000\000\000\000\002\194\025\222\002E\002\198\002E\002E\002E\000\000\002E\002E\002E\002E\012E\000\238\000\000\000\000\002\210\002E\bE\002E\002E\000\000\002\025\002E\002E\002E\002E\002E\tz\nJ\002E\002E\t^\007\186\000\000\023\170\002\025\002E\002E\002E\002E\002\025\000\000\004N\002\025\002\222\024\018\000\000\002\025\000\000\002\025\000\000\000\000\002\025\025\230\002\025\002\025\002\025\000\000\002\025\002\025\002\025\006Z\000\000\000\000\006\006\027:\002\025\002\025\002\025\002\025\002\025\006n\002\025\000\000\000\000\006v\b6\000\000\002\025\002\025\002\025\002\025\002\025\000\000\r&\004\146\004Z\002\025\001\"\002\025\000\000\002\025\002\025\002\226\004\026\004&\000\238\002\025\002\025\002\025\0042\000\000\000\000\000\000\000\000\000\000\002\025\002\025\002\025\002\025\002\025\002\025\002\025\002\025\002\025\n\006\nn\002\025\000\000\002\025\002\025\002\025\022&\t-\000\000\t-\t-\r*\002\025\000\000\002\025\002\025\002\025\000\000\002\025\002\025\002\025\002\025\n\014\007\229\007\186\nv\r6\002\025\000\000\002\025\002\025\000\000\002\025\002\025\002\025\002\025\002\025\002\025\000\000\000\000\002\025\002\025\t^\000\000\000\000\027\022\002\137\002\025\002\025\002\025\002\025\002\137\n\149\000\000\002\137\005\166\007\229\000\000\002\137\000\000\002\137\000\000\000\000\002\137\000\000\002\137\002\137\002\137\b6\002\137\002\137\002\137\007\229\000\000\000\000\007\229\t\234\002\137\002\137\002\137\002\137\002\137\007\229\002\137\026\166\n\149\007\229\000\000\000\238\002\137\002\137\002\137\002\137\002\137\000\000\b\225\000\000\000\000\002\137\011b\002\137\n\149\002\137\002\137\n\149\011\182\007\186\t-\002\137\002\137\002\137\n\149\000\000\000\000\000\000\n\149\000\000\002\137\002\137\002\137\002\137\002\137\002\137\002\137\002\137\002\137\000\000\027.\002\137\000\000\002\137\002\137\002\137\000\000\000\000\001&\b\225\000\000\000\000\002\137\000\000\002\137\002\137\002\137\000\000\002\137\002\137\002\137\002\137\000\000\b6\000\000\001F\002\029\002\137\000\000\002\137\002\137\b\225\n\138\002\137\002\137\002\137\002\137\002\137\001R\000\000\002\137\002\137\002\137\000\238\b\245\000\000\0035\002\137\002\137\002\137\002\137\0035\000\000\000\000\0035\000\000\000\n\000\000\0035\000\000\0035\000\000\005\150\n\202\000\000\0035\011\146\0035\b\225\0035\0035\0035\004\230\002\029\000\000\b\225\000\000\n\210\n\234\n\242\n\250\011\002\002^\0035\005\162\000\238\002\029\002\029\000\000\0035\0035\011\n\011\018\0035\000\000\b\221\000\000\000\000\0035\000\000\0035\001*\011\026\0035\000\000\000\000\000\000\000\000\0035\0035\000\238\005\170\000\000\000\000\016\030\000\000\000\000\0035\0035\011\"\011*\0112\011:\011B\0035\0035\0036\000\000\0035\016\150\0035\0035\011J\003F\b\245\000\000\b\221\000\000\000\000\0035\016\174\0035\0035\011R\t)\0035\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\0035\000\000\0035\0035\b\221\0035\0035\011Z\011j\0035\0035\000\000\007e\0035\011r\0035\007e\000\000\000\000\002\021\0035\0035\011z\011\130\002\021\000\238\000\000\002\021\000\000\000\000\000\000\002\021\000\000\002\021\000\000\000\000\n\202\000\000\002\021\002\021\002\021\b\221\002\021\002\021\002\021\004\230\000\000\000\000\b\221\000\000\n\210\n\234\n\242\n\250\011\002\000\000\002\021\000\000\011\202\000\000\000\000\000\000\002\021\002\021\011\n\011\018\002\021\000\000\000\000\000\000\000\000\002\021\000\000\002\021\011\210\011\026\002\021\011\218\000\000\000\000\000\000\002\021\002\021\000\238\011\226\000\000\000\000\000\000\011\234\007e\002\021\002\021\011\"\011*\0112\011:\011B\002\021\002\021\000\000\000\000\002\021\000\000\002\021\002\021\011J\n:\000\000\000\000\nB\000\000\000\000\002\021\000\000\002\021\002\021\011R\000\000\002\021\002\021\002\021\002\021\000\000\000\238\000\000\000\000\000\000\002\021\000\000\002\021\002\021\000\000\002\021\002\021\011Z\011j\002\021\002\021\000\000\000\000\002\021\011r\002\021\000\000\000\000\000\000\002\225\002\021\002\021\011z\011\130\002\225\007\249\000\000\002\225\000\000\007\225\000\000\002\225\000\000\002\225\002^\000\000\002\225\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\007\225\000\000\0266\006\006\000\000\002\225\002\225\002\225\002\225\002\225\007\225\002\225\000\000\007\249\007\225\000\000\000\000\002\225\002\225\002\225\002\225\002\225\000\000\000\000\000\000\000\000\002\225\000\000\002\225\007\249\002\225\002\225\006\006\0036\000\000\000\000\002\225\002\225\002\225\007\249\000\000\000\000\000\000\007\249\000\000\002\225\002\225\002\225\002\225\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\000\000\002\225\002\225\002\225\000\000\000\000\000\000\004\198\000\000\000\000\002\225\005)\002\225\002\225\002\225\000\000\002\225\002\225\002\225\002\225\000\000\000\238\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\011b\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\002\225\002\225\000\000\000\000\000\000\003\r\002\225\002\225\002\225\002\225\003\r\b\t\000\000\003\r\000\000\b\r\000\000\003\r\000\000\003\r\000\000\000\000\003\r\000\000\003\r\003\r\003\r\000\000\003\r\003\r\003\r\006Z\000\000\000\000\006\006\000\000\003\r\003\r\003\r\003\r\003\r\b\r\003\r\000\000\b\t\b\r\000\000\000\000\003\r\003\r\003\r\003\r\003\r\000\000\000\000\000\000\000\000\003\r\000\000\003\r\011\254\003\r\003\r\b\t\000\000\000\000\000\000\003\r\003\r\003\r\b\t\000\000\000\000\000\000\b\t\000\000\003\r\003\r\003\r\003\r\003\r\003\r\003\r\003\r\003\r\000\000\000\000\003\r\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\000\000\003\r\000\000\003\r\003\r\003\r\000\000\003\r\003\r\003\r\003\r\000\000\000\238\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\011b\003\r\003\r\003\r\003\r\003\r\000\000\000\000\003\r\003\r\003\r\000\000\000\000\000\000\003\029\003\r\003\r\003\r\003\r\003\029\000\238\000\000\003\029\000\000\007\221\000\000\003\029\000\000\003\029\000\000\000\000\003\029\000\000\003\029\003\029\003\029\000\000\003\029\003\029\003\029\007\221\000\000\000\000\006\006\000\000\003\029\003\029\003\029\003\029\003\029\007\221\003\029\000\000\023J\007\221\000\000\000\000\003\029\003\029\003\029\003\029\003\029\000\000\000\000\000\000\000\000\003\029\000\000\003\029\011\210\003\029\003\029\011\218\000\000\000\000\000\000\003\029\003\029\003\029\011\226\000\000\000\000\000\000\011\234\000\000\003\029\003\029\003\029\003\029\003\029\003\029\003\029\003\029\003\029\000\000\000\000\003\029\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\000\000\003\029\000\000\003\029\003\029\003\029\000\000\003\029\003\029\003\029\003\029\007I\000\000\012M\012M\007I\003\029\012M\003\029\003\029\000\000\011b\003\029\003\029\003\029\003\029\003\029\000\000\000\000\003\029\003\029\003\029\000\000\000\000\000\000\003\021\003\029\003\029\003\029\003\029\003\021\002\029\001\162\003\021\000\000\015\242\001\"\003\021\000\000\003\021\000\000\000\000\003\021\000\000\003\021\003\021\003\021\000\238\003\021\003\021\003\021\012I\012I\000\000\000\000\012I\003\021\003\021\003\021\003\021\003\021\000\n\003\021\000\000\000\000\007I\000\000\000\000\003\021\003\021\003\021\003\021\003\021\000\000\000\000\027\198\002j\003\021\002\029\003\021\012M\003\021\003\021\000\000\000\000\000\000\000\000\003\021\003\021\003\021\r6\002\029\002\029\000\000\011b\000\238\003\021\003\021\003\021\003\021\003\021\003\021\003\021\003\021\003\021\000\000\000\000\003\021\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\000\000\003\021\005\166\003\021\003\021\003\021\000\000\003\021\003\021\003\021\003\021\012I\000\000\007A\000\000\000\000\003\021\007A\003\021\003\021\000\000\011b\003\021\003\021\003\021\003\021\003\021\000\000\000\000\003\021\003\021\003\021\000\000\000\000\000\000\003\001\003\021\003\021\003\021\003\021\003\001\000\000\001\006\003\001\000\000\000\000\000\000\003\001\000\000\003\001\000\000\000\000\003\001\000\000\003\001\003\001\003\001\000\238\003\001\003\001\003\001\b9\000\000\000\000\000\000\b9\003\001\003\001\003\001\003\001\003\001\000\000\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\000\000\nz\003\134\003\001\000\000\003\001\007A\003\001\003\001\000\000\000\000\000\000\000\000\003\001\003\001\003\001\021\246\000\000\022\002\000\000\000\000\b9\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\000\000\003\001\003\001\003\001\000\000\000\000\000\000\b5\000\000\b9\003\001\b5\003\001\003\001\003\001\000\000\003\001\003\001\003\001\003\001\000\000\000\000\000\000\000\000\000\000\003\001\000\000\003\001\003\001\000\000\011b\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\003\001\003\001\000\000\000\000\000\000\003\t\003\001\003\001\003\001\003\001\003\t\004\230\b5\003\t\000\000\000\000\000\000\003\t\000\000\003\t\000\000\000\000\003\t\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\000\000\000\000\000\000\b5\000\000\003\t\003\t\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\000\000\000\000\000\000\000\000\003\t\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\004\230\003\t\003\t\003\t\003\t\003\t\003\t\003\t\003\t\003\t\000\000\000\000\003\t\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\011b\003\t\003\t\003\t\003\t\003\t\000\000\000\000\003\t\003\t\003\t\000\000\000\000\000\000\003\005\003\t\003\t\003\t\003\t\003\005\000\000\001\006\003\005\000\000\000\000\000\000\003\005\000\000\003\005\000\000\000\000\003\005\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\000\000\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\000\000\000\000\022\142\003\134\003\005\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\003\005\003\005\003\005\022\162\000\000\022\182\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\000\000\000\000\003\005\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\011b\003\005\003\005\003\005\003\005\003\005\000\000\000\000\003\005\003\005\003\005\000\000\000\000\000\000\003\017\003\005\003\005\003\005\003\005\003\017\000\000\000\000\003\017\000\000\000\000\000\000\003\017\000\000\003\017\000\000\000\000\003\017\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\000\000\000\000\000\000\003\017\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\011b\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\003\017\003\017\000\000\000\000\000\000\003!\003\017\003\017\003\017\003\017\003!\000\000\000\000\003!\000\000\000\000\000\000\003!\000\000\003!\000\000\000\000\003!\000\000\003!\003!\003!\000\000\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003!\000\000\003!\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003!\000\000\000\000\000\000\000\000\003!\000\000\003!\000\000\003!\003!\000\000\000\000\000\000\000\000\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003!\003!\003!\003!\003!\000\000\000\000\003!\000\000\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\000\000\003!\000\000\003!\003!\003!\000\000\003!\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\011b\003!\003!\003!\003!\003!\000\000\000\000\003!\003!\003!\000\000\000\000\000\000\003\025\003!\003!\003!\003!\003\025\000\000\000\000\003\025\000\000\000\000\000\000\003\025\000\000\003\025\000\000\000\000\003\025\000\000\003\025\003\025\003\025\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\000\000\003\025\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\000\000\000\000\000\000\000\000\003\025\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\000\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\003\025\003\025\003\025\003\025\000\000\000\000\003\025\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\000\000\003\025\000\000\003\025\003\025\003\025\000\000\003\025\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\003\025\000\000\003\025\003\025\000\000\011b\003\025\003\025\003\025\003\025\003\025\000\000\000\000\003\025\003\025\003\025\000\000\000\000\000\000\002\253\003\025\003\025\003\025\003\025\002\253\000\000\000\000\002\253\000\000\000\000\000\000\002\253\000\000\002\253\000\000\000\000\002\253\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\000\000\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\000\000\000\000\000\000\000\000\002\253\000\000\002\253\000\000\002\253\002\253\000\000\000\000\000\000\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\002\253\002\253\002\253\002\253\000\000\000\000\002\253\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\000\000\002\253\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\011b\002\253\002\253\002\253\002\253\002\253\000\000\000\000\002\253\002\253\002\253\000\000\000\000\000\000\ta\002\253\002\253\002\253\002\253\ta\000\000\000\000\ta\000\000\000\000\000\000\ta\000\000\ta\000\000\000\000\ta\000\000\ta\ta\ta\000\000\ta\ta\ta\000\000\000\000\000\000\000\000\000\000\ta\ta\ta\ta\ta\000\000\ta\000\000\000\000\000\000\000\000\000\000\ta\ta\ta\ta\ta\000\000\000\000\000\000\000\000\ta\000\000\ta\000\000\ta\ta\000\000\000\000\000\000\000\000\ta\ta\ta\000\000\000\000\000\000\000\000\000\000\000\000\ta\ta\ta\ta\ta\ta\ta\ta\ta\000\000\000\000\ta\000\000\ta\ta\ta\000\000\000\000\000\000\000\000\000\000\000\000\ta\000\000\ta\ta\ta\000\000\ta\ta\ta\ta\000\000\000\000\000\000\000\000\000\000\ta\000\000\ta\ta\000\000\ta\ta\ta\ta\ta\ta\000\000\000\000\ta\ta\t^\000\000\000\000\000\000\002q\ta\ta\ta\ta\002q\000\000\000\000\002q\000\000\000\000\000\000\002q\000\000\002q\000\000\000\000\002q\000\000\002q\002q\002q\000\000\002q\002q\002q\000\000\000\000\000\000\000\000\000\000\002q\002q\002q\002q\002q\000\000\002q\000\000\000\000\000\000\000\000\000\000\002q\002q\002q\002q\002q\000\000\000\000\000\000\000\000\002q\000\000\002q\000\000\002q\002q\000\000\000\000\000\000\000\000\002q\002q\002q\000\000\000\000\000\000\000\000\000\000\000\000\002q\002q\002q\002q\002q\002q\002q\002q\002q\000\000\000\000\002q\000\000\002q\002q\002q\000\000\000\000\000\000\000\000\000\000\000\000\002q\000\000\002q\002q\002q\000\000\002q\002q\024^\002q\000\000\000\000\000\000\000\000\000\000\002q\000\000\002q\002q\000\000\011b\002q\002q\002q\002q\002q\000\000\000\000\002q\002q\002q\000\000\000\000\000\000\002m\002q\002q\002q\002q\002m\000\000\000\000\002m\000\000\000\000\000\000\002m\000\000\002m\000\000\000\000\002m\000\000\002m\002m\002m\000\000\002m\002m\002m\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\002m\002m\000\000\002m\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\002m\002m\000\000\000\000\000\000\000\000\002m\000\000\002m\000\000\002m\002m\000\000\000\000\000\000\000\000\002m\002m\002m\000\000\000\000\000\000\000\000\000\000\000\000\002m\002m\002m\002m\002m\002m\002m\002m\002m\000\000\000\000\002m\000\000\002m\002m\002m\000\000\000\000\000\000\000\000\000\000\000\000\002m\000\000\002m\002m\002m\000\000\002m\002m\002m\002m\000\000\000\000\000\000\000\000\000\000\002m\000\000\002m\002m\000\000\011b\002m\002m\002m\002m\002m\000\000\000\000\002m\002m\002m\000\000\000\000\000\000\002\249\002m\002m\002m\002m\002\249\000\000\000\000\002\249\000\000\000\000\000\000\002\249\000\000\002\249\000\000\000\000\002\249\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\000\000\000\000\000\000\002\249\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\011b\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\002\249\002\249\000\000\000\000\000\000\002e\002\249\002\249\002\249\002\249\002e\000\000\000\000\002e\000\000\000\000\000\000\002e\000\000\002e\000\000\000\000\002e\000\000\002e\002e\002e\000\000\002e\002e\002e\000\000\000\000\000\000\000\000\000\000\002e\002e\002e\002e\002e\000\000\002e\000\000\000\000\000\000\000\000\000\000\002e\002e\002e\002e\002e\000\000\000\000\000\000\000\000\002e\000\000\002e\000\000\002e\002e\000\000\000\000\000\000\000\000\002e\002e\002e\000\000\000\000\000\000\000\000\000\000\000\000\002e\002e\002e\002e\002e\002e\002e\002e\002e\000\000\000\000\002e\000\000\002e\002e\002e\000\000\000\000\000\000\000\000\000\000\000\000\002e\000\000\002e\002e\002e\000\000\002e\002e\002e\002e\000\000\000\000\000\000\000\000\000\000\002e\000\000\002e\002e\000\000\002e\002e\002e\002e\002e\002e\000\000\000\000\002e\002e\t^\000\000\000\000\000\000\001\245\002e\002e\002e\002e\001\245\000\000\000\000\001\245\000\000\000\000\000\000\001\245\000\000\001\245\000\000\000\000\001\245\000\000\001\245\001\245\001\245\000\000\001\245\001\245\001\245\000\000\000\000\000\000\000\000\000\000\001\245\001\245\001\245\001\245\001\245\000\000\001\245\000\000\000\000\000\000\000\000\000\000\001\245\001\245\001\245\001\245\001\245\000\000\000\000\000\000\000\000\001\245\000\000\001\245\000\000\001\245\001\245\000\000\000\000\000\000\000\000\001\245\001\245\001\245\000\000\000\000\000\000\000\000\000\000\000\000\001\245\001\245\001\245\001\245\001\245\001\245\001\245\001\245\001\245\000\000\000\000\001\245\000\000\001\245\001\245\001\245\000\000\000\000\000\000\000\000\000\000\000\000\001\245\000\000\001\245\001\245\001\245\000\000\001\245\001\245\001\245\001\245\000\000\000\000\000\000\000\000\000\000\001\245\000\000\001\245\001\245\000\000\001\245\001\245\001\245\001\245\001\245\001\245\000\000\000\000\001\245\001\245\t^\000\000\000\000\000\000\002i\001\245\001\245\001\245\001\245\002i\000\000\000\000\002i\000\000\000\000\000\000\002i\000\000\002i\000\000\000\000\002i\000\000\002i\002i\002i\000\000\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002i\000\000\002i\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002i\000\000\000\000\000\000\000\000\002i\000\000\002i\000\000\002i\002i\000\000\000\000\000\000\000\000\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002i\002i\002i\002i\002i\000\000\000\000\002i\000\000\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\000\000\002i\000\000\002i\002i\002i\000\000\002i\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\002i\000\000\002i\002i\000\000\002i\002i\002i\002i\002i\002i\000\000\000\000\002i\002i\t^\000\000\000\000\000\000\027b\002i\002i\002i\002i\001\249\000\000\000\000\001\249\000\000\000\000\000\000\001\249\000\000\001\249\000\000\000\000\001\249\000\000\001\249\001\249\001\249\000\000\001\249\001\249\001\249\000\000\000\000\000\000\000\000\000\000\001\249\001\249\001\249\001\249\001\249\000\000\001\249\000\000\000\000\000\000\000\000\000\000\001\249\001\249\001\249\001\249\001\249\000\000\000\000\000\000\000\000\001\249\000\000\001\249\000\000\001\249\001\249\000\000\000\000\000\000\000\000\001\249\001\249\001\249\000\000\000\000\000\000\000\000\000\000\000\000\001\249\001\249\001\249\001\249\001\249\001\249\001\249\001\249\001\249\000\000\000\000\001\249\000\000\001\249\001\249\001\249\000\000\000\000\000\000\000\000\000\000\000\000\027r\000\000\001\249\001\249\001\249\000\000\001\249\001\249\001\249\001\249\000\000\000\000\000\000\000\000\000\000\001\249\000\000\001\249\001\249\000\000\001\249\001\249\001\249\001\249\001\249\001\249\000\000\000\000\001\249\001\249\001\249\000\000\000\000\000\000\001\253\001\249\001\249\001\249\001\249\001\253\000\000\000\000\001\253\000\000\000\000\000\000\001\253\000\000\001\253\000\000\000\000\001\253\000\000\001\253\001\253\001\253\000\000\001\253\001\253\001\253\000\000\000\000\000\000\000\000\000\000\001\253\001\253\001\253\001\253\001\253\000\000\001\253\000\000\000\000\000\000\000\000\000\000\001\253\001\253\001\253\001\253\001\253\000\000\000\000\000\000\000\000\001\253\000\000\001\253\000\000\001\253\001\253\000\000\000\000\000\000\000\000\001\253\001\253\001\253\000\000\000\000\000\000\000\000\000\000\000\000\001\253\001\253\001\253\001\253\001\253\001\253\001\253\001\253\001\253\000\000\000\000\001\253\000\000\001\253\001\253\001\253\000\000\000\000\000\000\000\000\000\000\000\000\027j\000\000\001\253\001\253\001\253\000\000\001\253\001\253\001\253\001\253\000\000\000\000\000\000\000\000\000\000\001\253\000\000\001\253\001\253\000\000\001\253\001\253\001\253\001\253\001\253\001\253\000\000\000\000\001\253\001\253\t^\000\000\000\000\000\000\000\000\001\253\001\253\001\253\001\253\000\006\000\246\000\000\000\000\007-\001\002\001\006\000\000\001\n\001\022\001\"\000\000\000\000\000\000\000\000\001&\001b\000\000\000\000\000\000\001f\000\000\000\000\000\000\007-\001*\000\000\000\000\000\000\003\210\001n\t\182\t\186\001z\001~\000\000\000\000\000\000\0012\000\000\003z\000\000\025v\000\000\t\218\t\222\007-\003\182\003\194\003\206\003\218\003\226\t\226\007b\000\000\001\206\007-\003F\000\000\000\000\003\214\007-\007-\000\238\b\194\b\198\b\210\b\226\000\000\005\150\007-\007-\001\210\001\214\001\218\001\222\001\226\000\000\000\000\b\250\001\230\000\000\000\000\000\000\000\000\001\234\000\000\t\006\t\030\tj\t~\005\162\000\000\005\166\000\000\000\000\001\238\000\000\000\000\007-\000\000\000\000\b\218\001\242\b\222\000\000\000\000\000\000\000\000\000\000\007-\000\000\000\000\000\000\002.\006J\000\000\000\000\005\170\b\238\000\000\0022\000\000\023j\004j\t\246\020\194\002:\000\000\002>\002B\000\006\000\246\000\000\000\000\001\153\001\002\001\006\000\000\001\n\001\022\001\"\000\000\000\000\000\000\000\000\001&\001b\000\000\000\000\000\000\t\178\000\000\000\000\000\000\001\153\001*\000\000\000\000\000\000\003\210\001n\t\182\t\186\001z\001~\000\000\000\000\000\000\0012\000\000\003z\000\000\t\190\000\000\t\218\t\222\001\153\003\182\003\194\003\206\003\218\003\226\t\226\007b\000\000\001\206\001\153\003F\000\000\000\000\003\214\001\153\001\153\000\238\b\194\b\198\b\210\b\226\000\000\005\150\001\153\001\153\001\210\001\214\001\218\001\222\001\226\000\000\000\000\b\250\001\230\000\000\000\000\000\000\000\000\001\234\000\000\t\006\t\030\tj\t~\005\162\000\000\005\166\000\000\000\000\001\238\000\000\000\000\001\153\000\000\000\000\b\218\001\242\b\222\000\000\006\170\000\000\007Y\tE\001\153\000\000\007Y\000\000\002.\006\134\000\000\000\000\005\170\b\238\000\000\0022\000\000\023j\004j\t\246\000\000\002:\000\000\002>\002B\000\006\000\246\000\000\000\000\001\174\001\002\001\006\002\182\001\n\001\022\001\"\000\000\000\000\000\000\000\000\001&\000\000\000\000\003N\000\238\000\000\000\238\004\177\000\000\003R\001*\000\000\012\022\000\000\001.\000\000\003V\003Z\000\000\000\000\000\000\003^\000\000\0012\000\000\003z\000\000\012&\000\000\003\174\003\178\000\000\003\182\003\194\003\206\003\218\003\226\007\018\007b\012\181\000\000\012\178\003F\000\000\000\000\003\214\012\186\000\000\000\000\b\194\b\198\b\210\b\226\006Z\005\150\006Z\006\006\000\000\006\006\012\181\000\000\tE\012\194\006n\b\250\006n\000\000\006v\000\000\006v\000\000\000\000\t\006\t\030\tj\t~\005\162\000\000\005\166\012\214\r\026\012\181\000\000\004\177\004\177\000\000\000\000\b\218\000\000\b\222\000\000\012\181\000\000\000\000\000\000\000\000\012\181\012\181\000\238\000\000\000\000\r\250\018~\005\170\b\238\012\181\012\181\000\000\t\146\004j\t\246\000\006\000\246\000\000\000\000\001\174\001\002\001\006\002\182\001\n\001\022\001\"\000\000\000\000\000\000\000\000\001&\000\000\000\000\004\209\000\000\000\000\000\000\000\000\012\181\003R\001*\000\000\001\006\000\000\001.\000\000\003V\003Z\000\000\012\181\000\000\003^\000\000\0012\t\026\003z\000\000\012&\000\000\003\174\003\178\001*\003\182\003\194\003\206\003\218\003\226\007\018\007b\000\000\000\000\012\178\003F\000\000\018\154\003\214\012\186\002Z\002^\b\194\b\198\b\210\b\226\000\000\005\150\019\238\003\134\000\000\000\000\019\242\000\000\000\000\012\194\003F\b\250\024>\028\182\001*\002\134\002r\020\"\000\000\t\006\t\030\tj\t~\005\162\002~\005\166\012\214\r\026\000\000\000\000\028\215\024f\000\238\000\000\b\218\000\000\b\222\000\000\002\130\003.\000\000\0202\000\000\000\000\003:\000\000\003F\004\026\004&\018~\005\170\b\238\000\000\0042\000\000\t\146\004j\t\246\000\006\000\246\000\000\000\000\001\174\001\002\001\006\002\182\001\n\001\022\001\"\000\000\0046\000\000\000\000\001&\002\029\000\000\029\006\000\000\002\029\000\000\000\000\006Z\003R\001*\006\006\000\000\000\000\001.\000\000\003V\003Z\006n\000\000\000\000\003^\006v\0012\000\000\003z\000\000\012&\000\n\003\174\003\178\000\000\003\182\003\194\003\206\003\218\003\226\007\018\007b\000\000\004j\012\178\003F\000\000\002\029\003\214\012\186\002Z\002^\b\194\b\198\b\210\b\226\000\000\005\150\000\000\000\000\000\000\002\029\002\029\000\000\000\000\012\194\000\000\b\250\000\000\028\182\001*\002\134\002r\000\000\000\000\t\006\t\030\tj\t~\005\162\002~\005\166\012\214\r\026\000\000\000\000\004\217\002\142\000\000\000\000\b\218\002\029\b\222\000\000\002\130\003.\000\000\000\000\000\000\000\000\003:\000\000\003F\004\026\004&\018~\005\170\b\238\000\000\0042\000\000\t\146\004j\t\246\000\145\001\002\001\006\000\145\012\169\000\000\001\"\000\000\n.\000\000\000\000\001&\0046\000\000\000\145\000\000\000\145\000\000\000\145\000\000\000\145\001*\000\000\n^\005}\001.\000\000\000\000\005}\000\000\000\000\nf\000\145\000\000\0012\000\000\003z\000\000\000\145\000\000\000\000\000\000\000\145\000\000\000\000\003\206\002N\000\145\012u\000\145\000\000\000\000\000\145\003F\000\000\000\000\003\214\000\145\000\145\000\145\b\194\b\198\b\210\000\000\020R\005\150\000\145\000\145\000\000\012u\000\000\000\000\002\194\000\145\000\000\002\198\000\000\000\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\169\012\169\005\162\002\210\005\166\000\145\000\145\002\218\012a\000\145\000\145\000\000\000\000\b\218\000\000\b\222\005}\000\000\000\000\000\000\000\000\000\145\000\000\012\169\000\000\000\000\012\169\000\145\000\145\005\170\b\238\000\000\002\222\005}\t\146\004j\005}\000\145\000\000\000\145\000\169\001\002\001\006\000\169\000\000\000\000\001\"\000\000\n.\000\000\000\000\001&\000\000\000\000\000\169\000\000\000\169\000\000\000\169\000\000\000\169\001*\000\000\n^\000\000\001.\000\000\002\029\002\029\012*\000\000\nf\000\169\000\000\0012\000\000\003z\000\000\000\169\000\000\000\000\002\226\000\169\002\029\000\000\003\206\002N\000\169\000\000\000\169\000\000\002\029\000\169\003F\000\000\000\n\003\214\000\169\000\169\000\169\b\194\b\198\b\210\000\000\020R\005\150\000\169\000\169\012\030\000\000\000\000\002\029\000\000\000\169\000\000\000\000\000\000\000\169\000\000\000\000\000\n\002\029\002\029\015:\000\000\002\029\000\000\005\162\b%\005\166\000\169\000\169\000\000\002\029\000\169\000\169\002\029\002\029\b\218\000\000\b\222\000\000\000\000\002\029\000\000\000\000\000\169\000\000\002\029\000\n\002\029\000\000\000\169\000\169\005\170\b\238\000\000\002\029\002\029\t\146\004j\000\000\000\169\000\014\000\169\000\018\000\022\000\026\000\030\000\238\000\"\000&\000\000\000*\000.\0002\000\000\0006\000:\002\029\000\000\000>\000\000\000\000\000\000\000B\002\029\000\000\000\000\000\000\000\000\000\000\000F\000\000\000\000\000\000\000\000\002\029\000J\000\000\000N\000R\000V\000Z\000^\000b\000f\000\000\000\000\000\000\000j\000\000\000n\000\000\000r\000\000\000\000\000v\006Z\000\000\000\000\006\006\000\000\000\000\000\000\002Z\002^\000\000\006n\000\000\000\000\000z\006v\000\000\000~\000\130\000\000\000\000\000\000\000\000\001f\000\134\000\138\000\142\000\000\001*\002\134\002r\000\000\000\000\000\146\000\150\000\154\000\000\000\158\002~\000\000\000\162\000\166\000\170\000\000\000\000\002\142\000\174\000\178\000\182\000\000\000\000\000\000\002\130\003.\000\186\000\000\000\190\000\194\003:\000\000\003F\004\026\004&\000\000\000\198\000\000\000\202\0042\004\r\001B\001\006\004\r\000\206\000\210\001\"\000\214\006\226\000\241\000\000\001&\000\000\000\000\004\r\000\000\0046\000\000\004\r\000\000\004\r\001*\000\000\007\002\000\000\000\000\000\000\000\000\001F\000\241\000\000\007\026\004\r\000\000\000\000\000\000\000\000\000\000\004\r\000\000\000\000\001R\000\000\000\000\000\000\007F\002N\004\r\000\000\004\r\r.\000\241\004\r\003F\001>\000\000\003\246\004\r\004\r\n\145\003\250\000\241\004\002\000\000\007V\005\150\000\241\000\000\000\000\000\000\000\000\000\000\000\000\004\r\004\r\000\241\000\241\005\154\000\000\002\029\002\029\000\000\000\000\000\000\000\000\000\000\000\000\005\162\002\029\005\166\004\r\004\r\007^\000\000\004\r\004\r\000\000\000\000\000\000\002\029\000\000\000\000\000\000\000\000\000\241\000\000\000\000\000\n\n\145\n:\000\000\n\145\025\026\004\r\005\170\000\241\000\000\000\000\n\145\000\000\004j\000\000\n\145\002\029\004\r\001B\001\006\006&\000\000\000\000\001\"\002\029\000\000\000\000\000\000\001&\001b\002\029\000\000\000\000\001f\000\000\000\000\000\000\000\000\001*\002\029\002\029\000\000\001j\001n\001r\001v\001z\001~\002\029\000\000\000\000\002\029\000\000\002\029\000\000\001\130\000\000\001\194\006F\002\029\000\000\000\000\001^\002N\000\000\001\202\000\000\000\n\001\206\000\000\003F\000\000\004\157\003\246\000\000\000\000\002\029\003\250\000\000\004\002\005\138\000\000\005\150\002\029\002\029\001\210\001\214\001\218\001\222\001\226\003b\002\029\004\157\001\230\005\154\000\000\000\000\002\029\001\234\000\000\000\000\000\000\000\000\000\000\005\162\000\000\005\166\000\000\005\230\001\238\000\000\000\000\000\000\000\000\004\157\000\000\001\242\000\000\000\000\000\000\002\029\000\000\000\000\000\000\004\157\000\000\000\000\002.\006J\004\157\012\014\005\170\000\000\000\000\0022\000\000\0026\004j\004\157\004\157\002:\012\169\002>\002B\001B\001\006\007J\000\000\000\000\001\"\000\000\000\000\000\000\000\000\001&\001b\000\000\007j\000\000\001f\000\000\005\129\000\000\000\000\001*\005\129\001\162\004\157\001j\001n\001r\001v\001z\001~\000\000\000\000\000\000\001\166\004\157\000\000\007\146\001\130\000\000\001\194\006F\001*\000\000\000\000\001^\002N\000\000\001\202\000\000\000\000\001\206\000\000\003F\000\000\000\000\003\246\000\000\000\000\002\154\003\250\000\000\004\002\005\138\000\000\005\150\007\142\002j\001\210\001\214\001\218\001\222\001\226\000\000\003F\000\000\001\230\005\154\000\000\012\169\012\169\001\234\000\000\000\000\000\000\000\000\000\000\005\162\000\000\005\166\000\000\005\230\001\238\000\000\000\000\005\129\000\000\000\000\000\000\001\242\000\000\000\000\012\169\007\154\000\000\012\169\000\000\000\000\000\000\000\000\002.\006J\005\129\000\000\005\170\005\129\000\000\0022\000\000\0026\004j\000\000\000\000\002:\000\000\002>\002B\000\006\000\246\000\000\000\000\001\174\001\002\001\006\r\254\001\n\001\022\001\"\000\000\000\000\000\000\000\000\001&\000\000\000\000\015\n\000\000\t1\000\000\t1\t1\003R\001*\000\000\000\000\000\000\001.\000\000\003V\003Z\000\000\000\000\000\000\015\014\000\000\0012\000\000\003z\000\000\0156\000\000\003\174\003\178\000\000\003\182\003\194\003\206\003\218\003\226\007\018\007b\000\000\000\000\012\178\003F\000\000\000\000\003\214\012\186\000\000\000\000\b\194\b\198\b\210\b\226\000\000\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\202\000\000\b\250\000\000\000\000\002\029\002\029\000\000\000\000\000\000\n\022\t\030\tj\t~\005\162\000\000\005\166\012\214\015\222\000\000\000\000\004\165\004\165\000\000\000\000\b\218\002\029\b\222\000\000\002\029\002\029\000\000\002\029\000\n\002\029\002\029\000\000\002\029\002\029\002\029\015\238\005\170\b\238\t1\002\029\002\029\t\146\004j\t\246\002\029\002\029\000\000\000\000\000\000\002\029\000\000\000\000\000\000\002\029\000\000\002\029\002\029\000\n\002\029\000\000\007f\000\000\002\029\000\000\002\029\000\000\024\198\000\000\002\029\002\029\000\000\002\029\002\029\002\029\002\029\002\029\002\029\002\029\000\000\000\000\000\000\002\029\000\000\000\000\002\029\000\000\000\000\002\029\002\029\002\029\002\029\002\029\000\000\002\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\029\000\000\002\029\000\000\000\000\000\000\000\000\000\000\002\029\002\029\002\029\002\029\002\029\000\000\002\029\002\029\024\226\000\000\000\000\000\000\002\029\000\000\000\000\002\029\000\000\002\029\000\006\000\246\000\000\000\000\004\157\001\002\001\006\000\000\001\n\001\022\001\"\000\000\000\000\002\029\002\029\001&\000\000\000\000\002\029\002\029\002\029\000\000\003\254\000\000\004\157\001*\000\000\000\000\000\000\001.\000\000\003V\003Z\000\000\000\000\000\000\000\000\000\000\0012\000\000\003z\000\000\000\000\000\000\003\174\003\178\004\157\003\182\003\194\003\206\003\218\003\226\007\018\007b\000\000\000\000\004\157\003F\000\000\000\000\003\214\004\157\012\014\000\238\b\194\b\198\b\210\b\226\000\000\005\150\000\000\004\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\022\t\030\tj\t~\005\162\000\000\005\166\000\000\000\000\000\000\000\000\000\000\004\157\000\000\000\000\b\218\000\000\b\222\000\000\000A\000A\000\000\000\000\004\157\000A\000A\000\000\000A\000A\000A\000\000\005\170\b\238\025f\000A\000\000\t\146\004j\t\246\006\221\000\000\000\000\000\000\000\000\000A\000\000\000\000\000\000\000A\000\000\000A\000A\000\000\000\000\000\000\000\000\000\000\000A\000\000\000A\000\000\000\000\000\000\000A\000A\000\000\000A\000A\000A\000A\000A\000A\000A\000\000\000\000\000\000\000A\000\000\000\000\000A\000\000\000\000\000\000\000A\000A\000A\000A\000\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000A\000A\000A\000A\000A\000\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000A\000\000\000A\000\000\000=\000=\000\000\000\000\018\166\000=\000=\000\000\000=\000=\000=\000\000\000A\000A\000\000\000=\000\000\000A\000A\000A\006\217\000\000\000\000\000\000\003R\000=\000\000\000\000\000\000\000=\000\000\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\022\000=\000=\000=\000=\000=\000=\000=\000\000\000\000\012\178\000=\000\000\000\000\000=\012\186\000\000\000\000\000=\000=\000=\000=\000\000\000=\019\210\019\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000=\000\000\000\000\000\000\000\000\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\201\000\000\000\000\000=\000\000\000=\000\000\012\005\012\005\000\000\000\000\020\226\012\005\012\005\000\000\012\005\012\005\012\005\000\000\000=\000=\000\000\012\005\000\000\000=\000=\000=\006\233\000\000\000\000\000\000\000\000\012\005\000\000\000\000\000\000\012\005\000\000\012\005\012\005\000\000\000\000\000\000\000\000\000\000\012\005\000\000\012\005\000\000\000\000\000\000\012\005\012\005\000\000\012\005\012\005\012\005\012\005\012\005\012\005\012\005\000\000\000\000\000\000\012\005\000\000\000\000\012\005\000\000\000\000\000\000\012\005\012\005\012\005\012\005\000\000\012\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\005\012\005\012\005\012\005\012\005\000\000\012\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\005\000\000\012\005\000\000\012\001\012\001\000\000\000\000\000\000\012\001\012\001\000\000\012\001\012\001\012\001\000\000\012\005\012\005\000\000\012\001\000\000\012\005\012\005\012\005\006\229\000\000\000\000\000\000\000\000\012\001\000\000\000\000\000\000\012\001\000\000\012\001\012\001\000\000\000\000\000\000\000\000\000\000\012\001\000\000\012\001\000\000\000\000\000\000\012\001\012\001\000\000\012\001\012\001\012\001\012\001\012\001\012\001\012\001\000\000\000\000\000\000\012\001\000\000\000\000\012\001\000\000\000\000\000\000\012\001\012\001\012\001\012\001\000\000\012\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\001\012\001\012\001\012\001\012\001\000\000\012\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\001\000\000\012\001\000\006\000\246\000\000\000\000\0166\001\002\001\006\000\000\001\n\001\022\001\"\000\000\000\000\012\001\012\001\001&\000\000\000\000\012\001\012\001\012\001\000\000\023\138\000\000\003R\001*\000\000\000\000\000\000\001.\000\000\003V\003Z\000\000\000\000\000\000\000\000\000\000\0012\000\000\003z\000\000\000\000\000\000\003\174\003\178\016b\003\182\003\194\003\206\003\218\003\226\007\018\007b\000\000\000\000\012\178\003F\000\000\000\000\003\214\012\186\000\000\000\000\b\194\b\198\b\210\b\226\000\000\005\150\000\000\016\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\022\t\030\tj\t~\005\162\000\000\005\166\000\000\000\000\000\000\000\000\000\000\004\193\000\000\000\000\b\218\000\000\b\222\000\000\000\006\000\246\000\000\000\000\016\242\001\002\001\006\000\000\001\n\001\022\001\"\000\000\005\170\b\238\023z\001&\000\000\t\146\004j\t\246\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\001.\000\000\003V\003Z\000\000\000\000\000\000\000\000\000\000\0012\000\000\003z\000\000\000\000\000\000\003\174\003\178\000\000\003\182\003\194\003\206\003\218\003\226\007\018\007b\000\000\000\000\000\000\003F\000\000\000\000\003\214\000\000\000\000\000\000\b\194\b\198\b\210\b\226\000\000\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\250\000\000\000\000\000\000\005M\000\000\005M\005M\tN\t\030\tj\t~\005\162\005M\005\166\000\000\005M\000\000\005M\000\000\005M\005M\005M\b\218\005M\b\222\000\000\000\000\012u\012a\005M\000\000\005M\005M\005M\000\000\005M\005M\005M\005\170\b\238\000\000\005M\005M\t\146\004j\t\246\000\000\000\000\012u\005M\000\000\002\194\000\000\000\000\002\198\005M\005M\000\000\000\000\005M\005M\005M\005M\005M\005M\000\000\005M\002\210\000\000\005M\000\000\002\218\012a\000\000\005M\005M\005M\000\000\000\000\000\000\005M\000\000\000\000\005M\005M\000\000\000\000\000\000\000\000\000\000\005M\000\000\000\000\005M\005M\005M\002\222\005M\005M\004}\000\000\000\000\004}\000\000\000\000\000\000\000\000\005M\005M\005M\000\000\005M\005M\004}\000\000\017v\005M\004}\000\000\004}\000\000\000\000\000\000\005M\000\000\005M\005M\005M\000\000\0032\005M\004}\000\000\000\000\000\000\005M\000\000\004}\000\000\005M\n\173\005M\005M\n\173\n\173\002\226\000\000\000\000\n\173\000\000\n\173\004}\000\000\n\173\000\000\000\000\004}\n\173\n\173\000\000\n\173\n\173\000\000\n\173\000\000\n\173\000\000\000\000\000\000\000\000\n\173\000\000\004}\n\173\000\000\000\000\000\000\000\000\000\000\007\201\000\000\n\173\000\000\n\173\000\000\000\000\000\000\n\173\n\173\004}\004}\000\000\000\000\004}\004}\n\173\007\201\007\201\n\173\007\201\007\201\n\173\n\173\000\000\n\173\000\000\n\173\n\173\000\000\000\000\000\000\000\000\004}\000\000\000\000\000\000\n\173\000\000\000\000\n\173\007\201\000\000\000\000\015\130\000\000\000\000\000\000\000\000\000\000\n\173\000\000\n\173\000\000\000\000\n\173\000\000\n\173\000\000\000\000\000\000\007\201\000\000\000\000\005\198\000\000\000\000\000\000\000\000\000\000\000\000\n\173\n\173\000\000\n\173\n\173\007\201\n\173\000\000\n\173\000\000\n\173\012=\n\173\000\000\n\173\000\000\012=\000\000\002^\012=\000\000\000\000\000\000\007\201\000\249\007\201\000\000\000\000\004\190\000\000\012=\012=\012=\000\000\012=\012=\012=\000\000\000\000\005\254\000\000\000\000\007\201\007\201\000\249\000\000\000\000\007\201\012=\007\201\007\029\007\029\000\000\007\201\012=\012=\000\000\000\000\012=\000\000\000\000\000\000\0036\012=\000\000\012=\000\249\004*\012=\016&\007\029\007\029\007\029\012=\012=\012=\000\249\000\000\000\000\000\000\007\029\000\249\012=\012=\000\000\000\000\000\000\000\000\000\000\012=\000\000\000\249\000\000\004\198\007\029\007\029\000\000\012=\000\000\000\000\007\029\000\000\007\029\007\029\007\029\000\000\012=\012=\012=\007\029\012=\012=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\249\000\000\000\000\012=\000\000\012=\012=\007\029\000\000\t!\012=\000\249\000\000\000\000\t!\012=\002^\t!\000\000\012=\000\000\012=\012=\000\000\002Z\002^\t!\000\000\t!\t!\t!\000\000\t!\t!\t!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\002\134\t!\000\000\004\030\000\000\007\029\000\000\t!\t!\000\000\000\000\t!\000\000\000\000\000\000\0036\t!\000\000\t!\000\000\000\000\t!\000\000\002\130\0036\000\000\t!\t!\t!\003:\000\000\003F\004\026\004&\000\000\t!\t!\000\000\0042\000\000\rB\000\000\t!\000\000\000\000\000\000\004\198\000\000\000\000\000\000\t!\000\000\000\000\000\000\000\000\0046\000\000\000\000\000\000\t!\t!\t!\000\000\t!\t!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t!\000\000\t!\t!\000\000\000\000\t\029\t!\000\000\000\000\000\000\t\029\t!\002^\t\029\000\000\t!\000\000\t!\t!\000\000\000\000\000\000\t\029\000\000\t\029\t\029\t\029\000\000\t\029\t\029\t\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\029\000\000\002Z\002^\019.\000\000\t\029\t\029\000\000\000\000\t\029\000\000\000\000\000\000\0036\t\029\000\000\t\029\000\000\000\000\t\029\000\000\001*\002b\002r\t\029\t\029\t\029\000\000\000\000\000\000\000\000\002~\000\000\t\029\t\029\000\000\000\000\000\000\000\000\000\000\t\029\000\000\000\000\000\000\004\198\002\130\003.\000\000\t\029\000\000\000\000\003:\000\000\003F\004\026\004&\000\000\t\029\t\029\t\029\0042\t\029\t\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\029\000\000\t\029\t\029\0046\000\000\000\000\t\029\000y\000\000\000y\000y\t\029\000\000\000\000\000\000\t\029\000\000\t\029\t\029\000y\000\000\000y\000y\000\000\000\000\000y\000y\000y\000\000\b\201\000\000\001B\001\006\000\000\000\000\000\000\001\"\000\000\000\000\000y\000\000\001&\000\000\000\000\000\000\000y\000y\000\000\tI\000y\000\000\001*\000\000\000y\000y\000\000\000y\000\000\001F\000y\000\000\000\000\000\000\000\000\000y\000y\000y\000\000\000\000\000\000\000\000\001R\000\000\000y\000y\001^\002N\000\000\000\000\000\000\000y\000y\000\000\003F\000y\000\000\003\246\000\000\000y\000\000\003\250\000\000\004\002\005\138\000\000\005\150\000\000\000y\000y\000y\000\000\000y\000y\000\000\000\000\000\000\000\000\005\154\000\000\b\201\000\000\000\000\000\000\000y\000\000\000\000\000y\005\162\012A\005\166\000y\005\230\000\000\012A\000\000\000y\012A\000\000\000\000\000y\000\000\000y\000\000\000\000\000\000\004\130\000\000\012A\012A\012A\000\000\012A\012A\012A\005\170\000\000\tI\000\000\t\018\000\000\004j\000\000\000\000\000\000\000\000\012A\000\000\002Z\002^\019\170\000\000\012A\012A\000\000\000\000\012A\000\000\000\000\000\000\000\000\012A\000\000\012A\000\000\000\000\012A\000\000\001*\002b\002r\012A\012A\012A\000\000\000\000\000\000\000\000\002~\000\000\012A\012A\000\000\000\000\000\000\000\000\000\000\012A\000\000\000\000\000\000\012A\002\130\003.\000\000\012A\000\000\000\000\003:\000\000\003F\004\026\004&\000\000\012A\012A\012A\0042\012A\012A\003E\000\000\000\000\000\000\000\000\003E\012u\012a\003E\000\000\012A\000\000\012A\012A\0046\002Z\002^\012A\000\000\003E\003E\003E\012A\003E\003E\003E\012A\012u\012A\012A\002\194\000\000\000\000\002\198\000\000\001*\002b\003E\000\000\000\000\002\206\000\000\000\000\003E\004z\000\000\002\210\003E\000\000\000\000\002\218\012a\003E\000\000\003E\000\000\000\000\003E\000\000\002\130\0036\000\000\003E\003E\003E\003:\000\000\003F\004\026\004&\000\000\003E\003E\000\000\0042\002\222\rB\000\000\003E\000\000\000\000\000\000\003E\000\000\000\000\n\185\003E\000\000\001B\001\006\000\000\0046\000\000\001\"\000\000\003E\003E\003E\001&\003E\003E\000\000\n\185\n\185\000\000\n\185\n\185\000\000\001*\000\000\000\000\003E\000\000\003E\003E\001F\000\000\000\000\003E\000\000\000\000\000\000\000\000\003E\002\226\000\000\n\185\003E\001R\003E\003E\000\000\001^\002N\000\000\000\000\000\000\000\000\000\000\000\000\003F\000\000\000\000\003\246\000\000\000\000\n\185\003\250\000\000\004\002\005\138\000\000\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\185\000\000\000\000\005\154\000\000\000\000\n\181\000\000\000\000\001B\001\006\000\000\000\000\005\162\001\"\005\166\000\000\005\230\n\185\001&\n\185\000\000\000\000\n\181\n\181\000\000\n\181\n\181\000\000\001*\000\000\000\000\000\000\000\000\n\185\000\000\001F\n\185\n\185\000\000\005\170\000\000\n\185\000\000\n\185\000\000\004j\n\181\n\185\001R\000\000\000\000\000\000\006\"\002N\000\000\000\000\000\000\000\000\000\000\000\000\003F\000\000\000\000\003\246\000\000\000\000\n\181\003\250\000\000\004\002\005\138\000\000\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\181\000\000\000\000\005\154\000\000\000\000\001\177\000\000\000\000\000\000\000\000\001\177\000\000\005\162\001\177\005\166\000\000\005\230\n\181\000\000\n\181\000\000\000\000\000\000\000\000\001\177\001\177\001\177\000\000\001\177\001\177\001\177\000\000\000\000\n\181\000\000\000\000\n\181\n\181\000\000\005\170\000\000\n\181\001\177\n\181\000\000\004j\000\000\n\181\001\177\001\177\000\000\000\000\001\177\000\000\000\000\000\000\000\000\001\177\000\000\001\177\000\000\000\000\001\177\000\000\000\000\000\000\000\000\001\177\001\177\001\177\000\000\000\000\000\000\000\000\000\000\000\000\001\177\001\177\000\000\001E\000\000\000\000\001E\001\177\000\000\000\000\000\000\001\177\000\000\000\000\000\000\001\177\000\000\001E\000\000\001E\000\000\001E\000\000\001E\001\177\001\177\001\177\000\000\001\177\001\177\000\000\000\000\000\000\000\000\000\000\001E\000\000\000\000\000\000\000\000\001\177\001E\001\177\001\177\001B\001\006\000\000\001\177\000\000\001\"\000\000\006\226\001\177\000\000\001&\001E\004\230\000\000\001\177\000\000\001E\001E\000\238\000\000\001*\000\000\007\002\000\000\000\000\000\000\000\000\001F\000\000\000\000\007\026\000\000\001E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\000\000\000\000\007F\002N\000\000\000\000\000\000\001E\001E\001E\003F\001E\001E\003\246\000\000\000\000\n\145\003\250\000\000\004\002\000\000\007V\005\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001E\004I\000\000\000\000\005\154\000\000\000\000\003r\002\170\001\006\000\000\001E\000\000\000\000\005\162\000\000\005\166\002\174\000\000\007^\000\000\005\197\000\000\b\146\000\000\000\000\005\197\000\000\001*\005\197\000\000\000\000\000\000\000\000\000\000\n\145\000\000\000\000\n\145\n\145\005\197\005\170\005\197\000\000\005\197\n\145\005\197\004j\000\000\n\145\004I\000\000\003n\000\000\000\000\000\000\000\000\000\000\005\197\000\000\003F\000\000\000\000\000\000\005\197\005\197\000\000\000\000\000\000\000\000\000\000\005\197\000\000\005\197\000\000\005\197\000\000\000\000\005\197\000\000\000\000\000\000\000\000\005\197\005\197\005\197\000\000\000\000\000\000\007v\003\145\000\000\000\000\000\000\000\000\003\145\000\000\000\000\003\145\005\197\005\197\000\000\000\000\005\197\000\000\000\000\000\000\000\000\000\000\003\145\000\000\003\145\000\000\003\145\000\000\003\145\005\197\005\197\005\197\000\000\005\197\005\197\000\000\000\000\003\145\000\000\000\000\003\145\bJ\003\145\000\000\000\000\003\145\003\145\003\145\005\197\000\000\000\000\005\197\005\197\005U\000\000\003\145\003\145\003\145\003\145\000\000\003\145\000\000\003\145\005\197\000\000\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\000\000\003\145\000\000\000\000\000\000\000\000\000\000\003\145\003\145\000\000\000\000\000\000\003\145\000\000\005Y\000\000\003\145\000\000\003\145\000\000\000\000\003\145\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\003\145\000\000\000\000\005\185\000\000\000\000\000\000\005U\005\185\000\000\000\000\005\185\003\145\000\000\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\005\185\000\000\005\185\000\000\005\185\000\000\005\185\003\145\003\145\003\145\000\000\003\145\003\145\000\000\000\000\000\000\000\000\000\000\005\185\005Y\000\000\000\000\000\000\000\000\005\185\005\185\003\145\003\145\000\000\000\000\003\145\b\142\000\000\005\185\000\000\005\185\000\000\000\000\005\185\000\000\000\000\003\145\000\000\005\185\005\185\000\238\000\000\000\000\000\000\b\161\000\000\000\000\000\000\000\000\b\161\000\000\000\000\b\161\000\000\005\185\005\185\000\000\000\000\005\185\000\000\000\000\000\000\000\000\b\161\000\000\b\161\000\000\b\161\000\000\b\161\000\000\005\185\005\185\005\185\000\000\005\185\005\185\000\000\000\000\000\000\000\000\b\161\000\000\000\000\000\000\000\000\000\000\b\161\b\161\000\000\005\185\000\000\000\000\005\185\005\185\000\000\b\161\000\000\b\161\000\000\000\000\b\161\000\000\000\000\000\000\005\185\b\161\b\161\b\161\000\000\000\000\000\000\000\000\012\245\000\000\000\000\000\000\000\000\012\245\000\000\000\000\012\245\b\161\000\000\000\000\000\000\b\161\000\000\000\000\000\000\000\000\000\000\012\245\000\000\012\245\000\000\012\245\000\000\012\245\b\161\b\161\b\161\000\000\b\161\b\161\000\000\000\000\000\000\000\000\000\000\012\245\000\000\000\000\000\000\000\000\b\161\012\245\012\245\b\161\000\000\000\000\000\000\b\161\004>\000\000\012\245\000\000\012\245\000\000\000\000\012\245\004\230\000\000\b\161\000\000\012\245\012\245\012\245\000\000\000\000\000\000\000\000\012\249\000\000\000\000\000\000\000\000\012\249\000\000\000\000\012\249\012\245\000\000\000\000\000\000\012\245\000\000\000\000\000\000\000\000\000\000\012\249\000\000\012\249\000\000\012\249\000\000\012\249\012\245\012\245\012\245\000\000\012\245\012\245\000\000\000\000\000\000\000\000\000\000\012\249\004J\000\000\000\000\000\000\000\000\012\249\012\249\012\245\000\000\000\000\000\000\012\245\004>\000\000\012\249\000\000\012\249\000\000\000\000\012\249\000\000\000\000\012\245\000\000\012\249\012\249\012\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\161\000\000\002^\001\161\000\000\012\249\000\000\000\000\000\000\012\249\000\000\000\000\t\t\000\000\001\161\000\000\000\000\000\000\001\161\000\000\001\161\000\000\012\249\012\249\012\249\000\000\012\249\012\249\000\000\000\000\000\000\000\000\001\161\000\000\004J\000\000\000\000\000\000\001\161\001\161\000\000\012\249\000\000\000\000\000\000\012\249\0036\001\161\000\000\001\161\000\000\000\000\001\161\000\000\000\000\000\000\012\249\001\161\001\161\001\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\161\001\161\000\000\000\000\004\198\000\000\000\000\000\000\000\000\000\000\000\000\003u\000\000\002^\003u\000\000\000\000\001\161\001\161\000\000\000\000\001\161\001\161\t\005\000\000\003u\000\000\000\000\000\000\003u\000\000\003u\000\000\001\161\000\000\000\000\000\000\000\000\000\000\000\000\001\161\000\000\000\000\003u\000\000\001\161\000\000\000\000\000\000\003u\001\157\001\161\000\000\000\000\000\000\000\000\000\000\0036\003u\000\000\003u\000\000\000\000\003u\000\000\000\000\000\000\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\000\000\000\000\004\198\000\000\000\000\000\000\000\000\000\000\000\000\003q\000\000\002^\003q\000\000\000\000\003u\003u\000\000\000\000\003u\003u\t\005\000\000\003q\000\000\000\000\000\000\003q\000\000\003q\000\000\003u\000\000\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\003q\000\000\003u\000\000\000\000\000\000\003q\001\157\003u\000\000\000\000\000\000\000\000\000\000\0036\003q\000\000\003q\000\153\000\000\003q\000\153\000\000\000\000\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\153\000\000\000\153\000\000\000\153\000\000\000\153\000\000\000\000\003q\003q\000\000\000\000\004\198\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\000\003q\003q\000\153\000\000\003q\003q\000\000\000\153\000\000\000\153\000\000\000\000\000\153\000\000\000\000\000\000\003q\000\153\000\153\000\238\000\000\000\000\000\000\003q\000\000\000\000\000\153\000\153\003q\000\221\000\000\000\000\000\221\000\153\003q\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\221\000\000\000\221\000\000\000\221\000\153\000\153\000\000\000\000\000\153\000\153\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\153\000\221\000\000\000\000\000\000\000\221\000\153\000\153\000\000\000\000\000\221\000\000\000\221\000\000\000\000\000\221\000\153\000\000\000\153\000\000\000\221\000\221\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\000\000\161\000\000\000\000\000\161\000\221\000\000\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\161\000\000\000\161\000\000\000\161\000\000\000\161\000\221\000\221\000\000\000\000\000\221\000\221\000\000\000\000\000\000\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\221\000\161\000\000\000\000\000\000\000\161\000\221\000\221\000\000\000\000\000\161\000\000\000\161\000\000\000\000\000\161\000\221\000\000\000\221\000\000\000\161\000\161\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\000\157\000\000\000\000\000\157\000\161\000\000\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\157\000\000\000\157\000\000\000\157\000\161\000\161\000\000\000\000\000\161\000\161\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\161\000\157\000\000\000\000\000\000\000\157\000\161\000\161\000\000\000\000\000\157\000\000\000\157\000\000\000\000\000\157\000\161\000\000\000\161\000\000\000\157\000\157\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\157\000\000\000\000\000\000\001b\000\000\000\157\000\000\001f\000\000\000\157\000\000\000\000\000\000\012u\012a\000\000\001j\001n\001r\001\190\001z\001~\000\157\000\157\000\000\000\000\000\157\000\157\000\000\000\000\000\000\001\194\001\198\000\000\012u\000\000\000\000\002\194\000\157\001\202\002\198\000\000\001\206\000\000\000\157\000\157\000\000\014\n\000\000\000\000\000\000\000\000\000\000\002\210\000\157\000\000\000\157\002\218\012a\001\210\001\214\001\218\001\222\001\226\000\000\000\000\001}\001\230\000\000\001}\000\000\000\000\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001}\000\000\002\222\001\238\001}\000\000\001}\000\000\000\000\000\000\001\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001}\001}\000\000\002.\027\202\000\000\001}\000\000\000\000\000\000\0022\000\000\0026\005U\000\000\001}\002:\001}\002>\002B\001}\000\000\000\000\000\000\000\000\001}\001}\001}\000\000\000\000\000\000\000\000\000\000\002\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001}\000\000\000\000\000\000\001}\012\241\000\000\000\000\000\000\000\000\012\241\000\000\000\000\012\241\000\000\000\000\000\000\001}\001}\000\000\000\000\001}\001}\000\000\012\241\000\000\012\241\000\000\012\241\005U\012\241\000\000\000\000\001}\000\000\000\000\000\000\000\000\000\000\001}\001}\000\000\012\241\000\000\000\000\001}\000\000\000\000\012\241\012\241\000\000\001}\000\000\000\000\000\000\000\000\000\000\012\241\000\000\012\241\000\000\000\000\012\241\000\000\000\000\000\000\000\000\012\241\012\241\012\241\000\000\000\000\000\000\012\237\000\000\000\000\000\000\000\000\012\237\000\000\000\000\012\237\000\000\012\241\000\000\000\000\000\000\012\241\000\000\000\000\000\000\000\000\012\237\000\000\012\237\000\000\012\237\000\000\012\237\000\000\012\241\012\241\012\241\000\000\012\241\012\241\000\000\000\000\000\000\000\000\012\237\000\000\000\000\000\000\000\000\000\000\012\237\012\237\000\000\012\241\000\000\000\000\000\000\012\241\000\000\012\237\000\000\012\237\000\000\000\000\012\237\000\000\004\230\000\000\012\241\012\237\012\237\012\237\000\000\000\000\000\000\000\000\b\165\000\000\000\000\000\000\000\000\b\165\000\000\000\000\b\165\012\237\000\000\000\000\000\000\012\237\000\000\000\000\000\000\000\000\000\000\b\165\000\000\b\165\000\000\b\165\000\000\b\165\012\237\012\237\012\237\000\000\012\237\012\237\000\000\000\000\000\000\000\000\000\000\b\165\000\000\000\000\000\000\000\000\007\230\b\165\b\165\012\237\001B\001\006\000\000\012\237\000\000\001\"\b\165\006\226\b\165\000\000\001&\b\165\000\000\000\000\012\237\000\000\b\165\b\165\000\238\000\000\001*\000\000\007\002\000\000\000\000\000\000\000\000\001F\000\000\000\000\007\026\000\000\b\165\000\000\000\000\000\000\b\165\000\000\0031\000\000\001R\000\000\000\000\000\000\007F\002N\000\000\000\000\000\000\b\165\b\165\b\165\003F\b\165\b\165\003\246\000\000\000\000\000\000\003\250\000\000\004\002\000\000\007V\005\150\b\165\000\000\000\000\b\165\000\000\000\000\000\000\b\165\000\000\000\000\000\000\005\154\000\000\001\157\000\000\002^\001\157\000\000\b\165\000\000\000\000\005\162\000\000\005\166\000\000\t\005\0031\001\157\000\000\002Z\002^\001\157\000\000\001\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0031\000\000\001\157\0031\000\000\005\170\001*\002\134\001\157\000\000\000\000\004j\000\000\000\000\000\000\000\000\0036\001\157\000\000\001\157\000\000\000\000\001\157\000\000\000\000\000\000\000\000\001\157\001\157\001\157\002\130\003>\000\000\000\000\000\000\000\000\003:\000\000\003F\004\026\004&\000\000\000\000\001\157\001\157\0042\000\000\004\198\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\157\001\157\0046\000\000\001\157\001\157\026>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\157\001\174\002Z\002^\r\254\000\000\000\000\001\157\000\000\000\000\026*\000\000\001\157\000\000\000\000\015\n\000\000\000\000\001\157\004\165\000\000\003R\001*\002\134\002r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002~\015\014\000\000\000\000\000\000\000\000\000\000\0156\000\000\000\000\000\000\005\237\000\000\000\000\002\130\003.\005\237\000\000\000\000\005\237\003:\012\178\003F\004\026\004&\000\000\012\186\000\000\000\000\0042\005\237\000\000\005\237\000\000\005\237\000\000\005\237\000\000\000\000\000\000\000\000\000\000\015\202\000\000\000\000\000\000\0046\000\000\005\237\000\000\000\000\000\000\000\000\000\000\005\237\005\237\000\000\000\000\000\000\012\214\015\222\b\142\000\000\005\237\000\000\005\237\000\000\000\000\005\237\000\000\000\000\000\000\000\000\005\237\005\237\000\238\000\000\000\000\000\000\000\000\000\000\000\000\015\238\000\000\000\000\001b\000\000\000\000\000\000\005\237\000\000\000\000\000\000\005\237\000\000\000\000\000\000\000\000\001j\001n\001r\001\190\001z\001~\000\000\000\000\005\237\005\237\005\237\000\000\005\237\005\237\000\000\001\194\001\198\000\000\000\000\000\000\000\000\000\000\000\000\001\202\000\000\000\000\001\206\005\237\000\000\000\000\000\000\005\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\237\001\210\001\214\001\218\001\222\001\226\000\000\000\000\000\000\001\230\007\186\000\000\000\000\000\000\001\234\005\233\000\000\000\000\005\233\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\005\233\000\000\005\233\001\242\005\233\000\000\005\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002.\027\230\000\000\000\000\005\233\000\000\000\000\0022\000\000\0026\005\233\b6\000\000\002:\000\000\002>\002B\000\000\000\000\005\233\000\000\005\233\000\000\000\000\005\233\000\000\000\000\000\000\000\000\005\233\005\233\000\238\000\000\000\000\000\000\012\253\000\000\000\000\000\000\000\000\012\253\000\000\000\000\012\253\000\000\005\233\000\000\000\000\000\000\005\233\000\000\000\000\000\000\000\000\012\253\000\000\012\253\000\000\012\253\000\000\012\253\000\000\005\233\005\233\005\233\000\000\005\233\005\233\000\000\000\000\000\000\000\000\012\253\000\000\000\000\000\000\000\000\000\000\012\253\012\253\000\000\005\233\000\000\000\000\000\000\005\233\000\000\012\253\000\000\012\253\000\000\000\000\012\253\000\000\000\000\000\000\005\233\012\253\012\253\000\238\000\000\000\000\000\000\r\001\000\000\000\000\000\000\000\000\r\001\000\000\000\000\r\001\000\000\012\253\000\000\000\000\000\000\012\253\000\000\000\000\000\000\000\000\r\001\000\000\r\001\000\000\r\001\000\000\r\001\000\000\012\253\012\253\012\253\000\000\012\253\012\253\000\000\000\000\000\000\000\000\r\001\000\000\000\000\000\000\000\000\000\000\r\001\b6\000\000\012\253\000\000\000\000\000\000\012\253\000\000\r\001\000\000\r\001\000\000\000\000\r\001\000\000\000\000\000\000\012\253\r\001\r\001\000\238\000\000\000\000\000\000\007\186\000\000\000\000\000\000\000\000\006\001\000\000\000\000\006\001\000\000\r\001\000\000\000\000\000\000\r\001\000\000\000\000\000\000\000\000\006\001\000\000\006\001\000\000\006\001\000\000\006\001\000\000\r\001\r\001\r\001\000\000\r\001\r\001\000\000\000\000\000\000\000\000\006\001\000\000\000\000\000\000\000\000\000\000\006\001\b6\000\000\r\001\000\000\000\000\000\000\r\001\000\000\006\001\000\000\006\001\000\000\000\000\006\001\000\000\000\000\000\000\r\001\006\001\006\001\000\238\000\000\000\000\000\000\006\005\000\000\000\000\000\000\000\000\006\005\000\000\000\000\006\005\000\000\006\001\000\000\000\000\000\000\006\001\000\000\000\000\000\000\000\000\006\005\000\000\006\005\000\000\006\005\000\000\006\005\000\000\006\001\006\001\006\001\000\000\006\001\006\001\000\000\000\000\000\000\000\000\006\005\000\000\000\000\000\000\000\000\000\000\006\005\006\005\000\000\006\001\000\000\000\000\000\000\006\001\000\000\006\005\000\000\006\005\000\000\000\000\006\005\000\000\000\000\000\000\006\001\006\005\006\005\006\005\000\000\000\000\000\000\005\253\000\000\000\000\000\000\000\000\005\253\000\000\000\000\005\253\000\000\006\005\000\000\000\000\000\000\006\005\000\000\000\000\000\000\000\000\005\253\000\000\005\253\000\000\005\253\000\000\005\253\000\000\006\005\006\005\006\005\000\000\006\005\006\005\000\000\000\000\000\000\000\000\005\253\000\000\000\000\000\000\000\000\000\000\005\253\b6\000\000\006\005\000\000\000\000\000\000\006\005\000\000\005\253\000\000\005\253\000\000\000\000\005\253\000\000\000\000\000\000\b^\005\253\005\253\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003m\000\000\002^\003m\000\000\005\253\000\000\000\000\000\000\005\253\000\000\000\000\000\000\000\000\003m\000\000\002Z\002^\003m\000\000\003m\000\000\005\253\005\253\005\253\000\000\005\253\005\253\000\000\000\000\000\000\000\000\003m\000\000\000\000\000\000\001*\002\134\003m\000\000\000\000\005\253\000\000\000\000\000\000\005\253\0036\003m\000\000\003m\000\000\000\000\003m\000\000\000\000\000\000\005\253\003m\003m\003m\002\130\003>\000\000\000\000\000\000\000\000\003:\000\000\003F\004\026\004&\000\000\000\000\003m\003m\0042\000\000\004\198\000\000\003i\000\000\002^\003i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\0046\003i\003m\003m\005\029\003i\000\000\003i\000\000\000\000\000\000\000\000\000\000\000\000\003m\000\000\000\000\000\000\000\000\003i\000\000\003m\000\000\000\000\026*\003i\003m\000\000\000\000\000\000\000\000\000\000\003m\0036\003i\000\000\003i\000\000\000\000\003i\000\000\000\000\000\000\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\001\169\000\000\r&\001\169\000\000\000\000\001\"\000\000\003i\003i\000\000\000\000\004\198\000\000\001\169\000\000\000\000\000\000\001\169\000\000\001\169\000\000\002Z\002^\000\000\003i\003i\000\000\000\000\003i\003i\000\000\001\169\000\000\000\000\000\000\000\000\000\000\001\169\000\000\000\000\003i\001*\002\134\000\000\r*\000\000\001\169\003i\001\169\000\000\000\000\001\169\003i\000\000\000\000\000\000\001\169\001\169\003i\r6\000\000\000\000\000\000\000\000\000\000\002\130\003>\000\000\000\000\000\000\000\000\003:\001\169\003F\004\026\004&\001\169\000\000\000\000\000\000\0042\000\000\001-\000\000\000\000\001-\000\000\000\000\005\166\001\169\001\169\000\000\000\000\001\169\001\169\000\000\001-\0046\001-\000\000\001-\005!\001-\000\000\000\000\001\169\000\000\000\000\000\000\000\000\000\000\000\000\001\169\000\000\001-\000\000\000\000\000\000\000\000\000\000\001-\026*\000\000\001\169\001-\000\000\000\000\000\000\000\000\001-\000\000\001-\000\000\000\000\001-\000\000\000\000\000\000\000\000\001-\001-\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001-\000\000\001)\000\000\000\000\001)\001-\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\001)\000\000\001)\000\000\001)\000\000\001)\001-\001-\001-\000\000\001-\001-\000\000\000\000\000\000\000\000\000\000\001)\000\000\000\000\000\000\000\000\001-\001)\000\000\000\000\000\000\001)\000\000\001-\000\000\000\000\001)\000\000\001)\000\000\000\000\001)\000\000\000\000\001-\000\000\001)\001)\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001)\000\000\000\000\000\000\000\000\000\000\001)\000\000\000\000\000\000\001)\000\000\000\000\000\000\000\000\000\000\001\002\001\006\000\000\000\000\000\000\001\"\000\000\001)\001)\001)\001&\001)\001)\000\000\000\000\006\153\000\000\000\000\000\000\000\000\001*\000\000\000\000\001)\001.\000\000\000\000\000\000\000\000\000\000\001)\000\000\000\000\0012\000\000\003z\000\000\000\000\000\000\000\000\000\000\001)\000\000\000\000\003\206\002N\000\000\000\000\000\000\000\000\000\000\000\000\003F\000\000\000\000\003\214\000\000\000\000\000\000\b\194\b\198\b\210\000\000\000\000\005\150\002\029\002\029\000\000\000\000\000\000\002\029\000\000\002\029\000\000\000\000\002\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\029\005\162\002\029\005\166\000\000\000\000\000\000\002\029\000\n\000\000\002\029\000\000\b\218\000\000\b\222\000\000\000\000\000\000\000\000\000\000\002\029\000\000\000\000\000\000\002\029\002\029\000\000\000\000\005\170\b\238\000\000\000\000\002\029\t\146\004j\002\029\000\000\004\157\002\029\002\029\004\157\002\029\002\029\002\029\002\029\000\000\000\000\000\000\000\000\000\000\000\000\004\157\000\000\000\000\000\000\004\157\002\029\004\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\029\000\000\002\029\004\157\002\029\000\000\000\000\000\000\000\000\004\157\000\000\000\000\000\000\004\157\000\000\000\000\b\142\000\000\004\157\000\000\004\157\b1\000\000\004\157\b1\000\000\000\000\002\029\004\157\012\014\000\238\002\029\000\000\002\029\000\000\b1\000\000\004\157\004\157\b1\000\000\b1\000\000\000\000\004\157\004\157\000\000\000\000\004\157\000\000\000\000\000\000\000\000\b1\000\000\000\000\000\000\000\000\000\000\b1\000\000\004\157\004\157\b1\000\000\004\157\004\157\000\000\b1\000\000\b1\000\000\b-\b1\000\000\b-\000\000\004\157\b1\b1\000\238\000\000\000\000\000\000\004\157\000\000\b-\b1\b1\026\166\b-\000\000\b-\000\000\b1\004\157\000\000\000\000\b1\000\000\000\000\000\000\000\000\000\000\b-\000\000\000\000\000\000\000\000\000\000\b-\b1\b1\b1\b-\b1\b1\000\000\000\000\b-\000\000\b-\003a\000\000\b-\003a\000\000\b1\000\000\b-\b-\000\238\000\000\000\000\b1\000\000\003a\000\000\b-\b-\003a\000\000\003a\000\000\000\000\b-\000\000\000\000\000\000\b-\000\000\000\000\000\000\000\000\003a\r>\000\000\000\000\000\000\000\000\003a\000\000\b-\b-\b-\000\000\b-\b-\000\000\003a\000\000\003a\000\000\000\000\003a\000\000\000\000\000\000\b-\003a\003a\003a\000\000\000\000\000\000\b-\001Y\000\000\012Y\001Y\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\012Y\003a\001Y\000\000\001Y\000\000\001Y\000\000\001Y\000\000\000\000\000\000\000\000\000\000\003a\003a\026\174\000\000\003a\003a\001Y\000\000\000\000\000\000\000\000\000\000\001Y\012Y\000\000\000\000\003a\000\000\000\000\000\000\012Y\000\000\r\190\003a\000\000\000\000\001Y\000\000\003a\000\000\000\000\001Y\001Y\001Y\003a\000\000\000\000\000\000\001\029\000\000\0025\001\029\000\000\000\000\000\000\000\000\000\000\001Y\000\000\000\000\0025\012Y\001\029\000\000\001\029\000\000\001\029\000\000\001\029\000\000\000\000\000\000\000\000\000\000\001Y\001Y\001Y\000\000\001Y\001Y\001\029\000\000\000\000\000\000\000\000\000\000\001\029\0025\000\000\000\000\000\000\000\000\000\000\000\000\0025\000\000\000\000\001Y\000\000\000\000\001\029\000\000\000\000\000\000\000\000\001\029\001\029\001\029\001Y\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\029\000\000\000\000\000\000\0025\001B\001\006\000\000\000\000\000\000\001\"\000\000\006\226\000\000\000\000\001&\000\000\001\029\001\029\001\029\006\157\001\029\001\029\000\000\000\000\001*\000\000\007\002\000\000\000\000\000\000\000\000\001F\000\000\000\000\007\026\000\000\000\000\000\000\000\000\001\029\000\000\000\000\020>\000\000\001R\000\000\000\000\000\000\001^\002N\001\029\000\000\000\000\000\000\000\000\000\000\003F\000\000\000\000\003\246\000\000\000\000\000\000\003\250\000\000\004\002\005\138\007V\005\150\001B\001\006\000\000\000\000\000\000\001\"\000\000\006\226\000\000\000\000\001&\005\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\005\162\007\002\005\166\000\000\005\230\018\150\001F\000\000\000\000\007\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\000\000\000\000\007F\002N\021\018\000\000\005\170\000\000\006\210\000\000\003F\000\000\004j\003\246\000\000\000\000\000\000\003\250\000\000\004\002\000\000\007V\005\150\001B\001\006\000\000\000\000\000\000\001\"\000\000\006\226\000\000\000\000\001&\005\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\005\162\007\002\005\166\000\000\000\000\007^\001F\000\000\000\000\007\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\000\000\000\000\007F\002N\019*\000\000\005\170\000\000\000\000\000\000\003F\000\000\004j\003\246\000\000\001\002\001\006\003\250\000\000\004\002\001\"\007V\005\150\000\000\000\000\001&\000\000\000\000\000\000\000\000\006\193\000\000\000\000\000\000\005\154\001*\000\000\000\000\000\000\001.\000\000\000\000\000\000\000\000\005\162\000\000\005\166\000\000\0012\007^\003z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\206\002N\000\000\000\000\000\000\000\000\000\000\000\000\003F\000\000\019\166\003\214\005\170\000\000\000\000\b\194\b\198\b\210\004j\000\000\005\150\004\133\004\133\000\000\000\000\000\000\004\133\000\000\000\000\000\000\000\000\004\133\000\000\000\000\000\000\000\000\000\000\004\133\000\000\000\000\000\000\004\133\005\162\000\000\005\166\000\000\000\000\000\000\004\133\019\246\000\000\000\000\020\014\b\218\000\000\b\222\000\000\000\000\000\000\000\000\000\000\004\133\000\000\000\000\000\000\004\133\004\133\000\000\000\000\005\170\b\238\000\000\000\000\004\133\t\146\004j\004\133\000\000\003a\000\238\004\133\003a\004\133\004\133\000\000\004\133\000\000\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\003a\004\133\003a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\133\000\000\004\133\003a\r>\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\000\000\003a\012Q\000\000\003a\012Q\000\000\000\000\004\133\003a\003a\003a\000\000\000\000\004\133\000\000\012Q\000\000\000\000\000\000\012Q\000\000\012Q\000\000\000\000\003a\000\000\000\000\005M\003a\000\000\000\000\000\000\000\000\012Q\000\000\000\000\000\000\000\000\000\000\012Q\000\000\003a\003a\026\222\000\000\003a\003a\000\000\012Q\000\000\012Q\000\000\000\000\012Q\000\000\000\000\000\000\000\000\012Q\012Q\001B\001\006\000\000\r\190\003a\001\"\000\000\000\000\000\000\003a\001&\000\000\000\000\000\000\012Q\005\226\000\000\003\254\012Q\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\012Q\012Q\003\030\000\000\012Q\012Q\000\000\000\000\000\000\001R\000\000\000\000\000\000\001^\002N\000\000\012Q\000\000\000\000\000\000\014\022\003F\000\000\012Q\003\246\000\000\005\161\000\000\003\250\005\161\004\002\005\138\000\000\005\150\012Q\000\000\000\000\000\000\000\000\000\000\005\161\000\000\000\000\000\000\005\161\005\154\005\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\162\000\000\005\166\005\161\005\230\000\000\000\000\000\000\000\000\005\161\000\000\000\000\000\000\000\000\000\000\000\000\b\142\000\000\005\161\000\000\005\161\000\000\000\000\005\161\006\134\000\000\000\000\005\170\005\161\005\161\000\238\000\000\000\000\004j\000\000\000\000\000\000\000\000\000\000\000\000\005\165\000\000\000\000\005\165\005\161\005\161\000\000\000\000\005\161\000\000\000\000\000\000\000\000\000\000\005\165\000\000\000\000\000\000\005\165\000\000\005\165\005\161\005\161\000\000\000\000\005\161\005\161\000\000\000\000\000\000\000\000\000\000\005\165\000\000\000\000\000\000\000\000\000\000\005\165\000\000\000\000\000\000\000\000\000\000\005\161\b\142\000\000\005\165\000\000\005\165\003a\000\000\005\165\003a\000\000\005\161\000\000\005\165\005\165\000\238\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\003a\000\000\003a\000\000\000\000\005\165\005\165\000\000\000\000\005\165\000\000\000\000\000\000\000\000\003a\r>\000\000\000\000\000\000\000\000\003a\000\000\005\165\005\165\000\000\000\000\005\165\005\165\000\000\003a\000\000\003a\006I\000\000\003a\006I\000\000\000\000\000\000\003a\003a\003a\000\000\000\000\000\000\005\165\006I\000\000\000\000\000\000\006I\000\000\006I\000\000\000\000\003a\005\165\000\000\000\000\003a\000\000\000\000\000\000\000\000\006I\000\000\000\000\000\000\000\000\000\000\006I\000\000\003a\003a\r\158\000\000\003a\003a\000\000\006I\000\000\006I\000\000\000\000\006I\000\000\000\000\000\000\000\000\006I\006I\000\238\000\000\000\000\r\190\003a\000\000\012\017\000\000\001\006\012\017\000\000\000\000\028\190\000\000\006I\000\000\000\000\028\194\006I\000\000\012\017\000\000\000\000\000\000\000\000\000\000\012\017\000\000\000\000\000\000\000\000\006I\006I\014b\000\000\006I\006I\000\000\012\017\000\000\000\000\000\000\000\000\000\000\012\017\000\000\000\000\006I\000\000\000\000\000\000\001\186\002N\012\017\006I\012\017\001\174\000\000\012\017\002\182\000\000\000\000\000\000\012\017\000\000\006I\000\000\000\000\000\000\000\000\003N\028\198\001B\001\006\004\177\000\000\003R\001\"\000\000\012\017\000\000\000\000\001&\012\017\000\000\000\000\000\000\000\000\003^\006\154\000\000\000\000\001*\000\000\012&\028\202\012\017\012\017\000\000\001F\012\017\000\000\000\000\003\226\000\000\021^\000\000\000\000\012\178\000\000\000\000\000\000\001R\012\186\000\000\000\000\001^\002N\000\000\012\017\007\186\000\000\000\000\000\000\003F\007Q\000\000\003\246\007Q\012\194\000\000\003\250\000\000\004\002\005\138\000\000\005\150\000\000\000\000\007Q\000\000\000\000\000\000\007Q\000\000\007Q\012\214\r\026\005\154\000\000\004\177\004\177\000\000\000\000\000\000\000\000\000\000\007Q\005\162\000\000\005\166\000\000\005\230\007Q\b6\000\000\000\000\000\000\000\000\018~\000\000\000\000\007Q\000\000\007Q\001\173\000\000\007Q\001\173\000\000\000\000\000\000\007Q\007Q\000\238\005\170\000\000\000\000\000\000\001\173\000\000\004j\000\000\001\173\000\000\001\173\000\000\000\000\007Q\000\000\000\000\000\000\007Q\000\000\000\000\000\000\000\000\001\173\000\000\000\000\000\000\000\000\000\000\001\173\000\000\007Q\007Q\000\000\000\000\007Q\007Q\000\000\001\173\000\000\001\173\006M\000\000\001\173\006M\000\000\000\000\000\000\001\173\001\173\000\000\000\000\000\000\000\000\007Q\006M\000\000\000\000\000\000\006M\000\000\006M\000\000\000\000\001\173\000\000\000\000\000\000\001\173\000\000\000\000\000\000\000\000\006M\000\000\000\000\000\000\000\000\000\000\006M\000\000\001\173\001\173\000\000\000\000\001\173\001\173\000\000\006M\000\000\006M\000\000\000\000\006M\000\000\000\000\000\000\001\173\006M\006M\000\238\000\000\000\000\000\000\001\173\000\000\000\000\000\000\000\000\014B\000\000\000\000\000\000\000\000\006M\001\173\000\000\000\000\006M\000\000\000\000\000\000\000\000\ba\ba\000\000\000\000\000\000\ba\000\000\000\000\006M\006M\ba\000\000\006M\006M\000\000\000\000\003\238\000\000\000\000\000\000\ba\000\000\000\000\000\000\006M\000\000\000\000\ba\007\186\000\000\000\000\006M\000\000\004\157\000\000\000\000\004\157\000\000\000\000\000\000\ba\000\000\006M\000\000\ba\ba\000\000\004\157\000\000\000\000\000\000\004\157\ba\004\157\004\157\ba\000\000\000\000\000\000\ba\000\000\ba\ba\000\000\ba\004\157\000\000\000\000\000\000\004\157\000\000\004\157\b6\000\000\000\000\000\000\ba\000\000\004>\000\000\004\157\000\000\004\157\004\157\000\000\004\157\ba\000\000\ba\004\157\004\157\012\014\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\157\000\000\000\000\004\157\000\000\004\157\012\014\004\157\012Q\000\000\ba\012Q\000\000\000\000\000\000\000\209\ba\000\000\000\209\000\000\004\157\004\157\012Q\000\000\004\157\004\157\012Q\000\000\012Q\000\209\000\000\000\000\004J\000\209\005M\000\209\007\230\000\000\004\157\004\157\012Q\000\000\004\157\004\157\000\000\000\000\012Q\000\209\014B\000\000\bJ\000\000\000\000\000\209\004\157\000\000\000\000\000\000\000\000\000\000\012Q\004\157\000\209\000\000\000\209\012Q\012Q\000\209\000\000\000\000\000\000\000\000\000\209\000\209\000\238\000\000\000\000\000\000\000\000\000\000\000\000\012Q\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\000\000\000\000\000\000\209\000\213\000\000\000\000\000\213\000\000\012Q\012Q\003\030\000\000\012Q\012Q\000\000\000\209\000\209\000\213\000\000\000\209\000\209\000\213\000\000\000\213\012Q\000\000\000\000\000\000\014\218\000\000\000\000\012Q\000\000\000\000\000\000\000\213\000\000\000\000\000\209\000\000\000\000\000\213\012Q\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\213\000\000\000\213\000\000\000\000\000\213\000\000\000\000\000\000\000\000\000\213\000\213\000\238\000\000\000\000\002Z\003\"\000\000\000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\000\000\000\000\213\000\000\000\000\000\000\000\000\001*\002\134\002r\003&\000\000\000\000\000\000\000\000\000\213\000\213\002~\000\000\000\213\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003*\003.\007M\000\000\000\000\007M\003:\000\213\003F\004\026\004&\000\000\000\000\000\000\000\000\014\026\007M\014\030\000\213\000\000\007M\000\000\007M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0046\000\000\007M\000\000\000\000\000\000\000\000\000\000\007M\000\000\000\000\000\000\005\166\000\000\000\000\000\000\000\000\007M\000\000\007M\006A\000\000\007M\006A\014*\000\000\000\000\007M\007M\000\000\000\000\r\006\000\000\000\000\006A\000\000\000\000\000\000\006A\000\000\006A\014.\000\000\007M\000\000\000\000\000\000\007M\000\000\000\000\000\000\000\000\006A\000\000\000\000\000\000\000\000\000\000\006A\000\000\007M\007M\012:\000\000\007M\007M\000\000\006A\000\000\006A\011\189\000\000\006A\011\189\000\000\000\000\000\000\006A\006A\000\000\015J\000\000\000\000\007M\011\189\000\000\000\000\000\000\011\189\000\000\011\189\000\000\000\000\006A\000\000\000\000\000\000\006A\000\000\000\000\000\000\000\000\011\189\000\000\000\000\000\000\000\000\000\000\011\189\000\000\006A\006A\000\000\000\000\006A\006A\000\000\011\189\000\000\011\189\000\000\000\000\011\189\000\000\000\000\000\000\000\000\011\189\000\000\000\000\000\000\000\000\000\000\006A\000\000\011\193\000\000\000\000\011\193\000\000\000\000\000\000\000\000\011\189\n\170\000\000\000\000\011\189\000\000\011\193\000\000\000\000\000\000\011\193\000\000\011\193\000\000\000\000\000\000\000\000\011\189\011\189\000\000\000\000\011\189\011\189\000\000\011\193\000\000\000\000\000\000\000\000\000\000\011\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\193\011\189\011\193\000\000\000\000\011\193\000\000\000\000\000\000\000\000\011\193\000\000\011\170\000\000\000\000\002Z\003\"\000\000\000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\011\193\n\186\000\000\000\000\011\193\000\000\000\000\000\000\000\000\001*\002\134\002r\000\000\000\000\000\000\000\000\000\000\011\193\011\193\002~\000\000\011\193\011\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003*\003.\004u\000\000\000\000\004u\003:\011\193\003F\004\026\004&\000\000\000\000\000\000\000\000\014\026\004u\026~\011\170\000\000\004u\000\000\004u\007\186\000\000\000\000\000\000\000\000\005\173\000\000\000\000\005\173\0046\000\000\004u\000\000\000\000\000\000\000\000\000\000\004u\000\000\005\173\000\000\005\166\000\000\005\173\000\000\005\173\004u\000\000\004u\000\000\000\000\004u\000\000\026\138\000\000\000\000\004u\005\173\000\000\000\000\000\000\000\000\000\000\005\173\b6\000\000\000\000\000\000\000\000\000\000\014.\000\000\004u\000\000\000\000\000\000\004u\005\173\000\000\000\000\000\000\000\000\005\173\005\173\000\238\000\000\000\000\000\000\000\000\004u\004u\000\000\000\000\004u\004u\000\000\000\000\000\000\005\173\000\000\000\000\000\000\000\000\000\000\004m\000\000\000\000\004m\000\000\000\000\000\000\004\141\004u\000\000\004\141\005\173\005\173\000\000\004m\005\173\005\173\000\000\004m\012\130\004m\004\141\000\000\000\000\000\000\004\141\000\000\004\141\000\000\000\000\000\000\000\000\004m\000\000\005\173\000\000\000\000\000\000\004m\004\141\000\000\000\000\000\000\000\000\000\000\004\141\000\000\004m\000\000\004m\000\000\000\000\004m\000\000\004\141\000\000\004\141\004m\000\000\004\141\000\000\000\000\000\000\000\000\004\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004m\000\000\000\000\000\000\004m\000\000\000\000\004\141\000\000\000\000\000\000\004\141\004]\000\000\000\000\004]\000\000\004m\004m\000\000\000\000\004m\004m\000\000\004\141\004\141\004]\000\000\004\141\004\141\004]\000\000\004]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004m\000\000\000\000\000\000\004]\000\000\000\000\004\141\000\000\000\000\004]\0172\000\000\000\000\000\000\000\000\007\213\000\000\018\022\004]\000\000\004]\000\000\000\000\004]\000\000\000\000\000\000\000\000\004]\002Z\002^\000\000\007\213\007\213\000\000\007\213\007\213\000\000\000\000\000\000\012!\000\000\000\000\012!\004]\000\000\003\254\000\000\004]\001*\002\134\002r\000\000\000\000\012!\000\000\007\213\000\000\000\000\002~\012!\004]\004]\000\000\000\000\004]\004]\000\000\000\000\000\000\000\000\000\000\012!\002\130\003.\000\000\000\238\000\000\012!\003:\000\000\003F\004\026\004&\004]\000\000\007\185\012!\0042\012!\000\000\007\213\012!\000\000\000\000\0212\000\000\012!\000\000\000\000\000\000\000\000\000\000\007\185\007\185\0046\007\185\007\185\000\000\007\213\000\000\007\213\000\000\012!\000\000\000\000\000\000\012!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\213\000\000\007\185\006\006\007\213\012!\012!\000\000\007\213\012!\007\213\000\000\007\217\000\000\007\213\000\000\000\000\028\174\000\000\000\000\000\000\004f\007\185\004j\000\000\007\205\000\000\000\000\012!\007\217\007\217\000\000\007\217\007\217\000\000\000\000\000\000\007\185\000\000\002Z\002^\000\000\007\205\007\205\000\000\007\205\007\205\000\000\000\000\000\000\000\000\000\000\000\000\007\217\000\000\007\185\000\000\007\185\000\000\001*\002\134\002r\000\000\000\000\000\000\000\000\007\205\000\000\000\000\002~\000\000\007\185\016\030\000\238\006\006\007\185\000\000\000\000\000\000\007\185\000\000\007\185\000\000\002\130\017r\007\185\000\238\016\150\007\217\003:\000\000\003F\004\026\004&\000\000\000\000\004e\000\000\017\130\004e\000\000\007\205\000\000\000\000\000\000\000\000\007\217\000\000\007\217\004\149\004e\000\000\004\149\000\000\004e\0046\004e\000\000\000\000\007\205\000\000\007\205\007\217\004\149\000\000\006\006\007\217\004\149\004e\004\149\007\217\000\000\007\217\000\000\004e\006Z\007\217\000\000\006\006\007\205\000\000\004\149\000\000\007\205\000\000\007\205\000\000\004\149\004e\007\205\000\000\000\000\000\000\004e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\149\000\000\000\000\001\174\000\000\004\149\002\182\000\000\004e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\029\006\000\000\000\000\000\000\004\149\000\000\003R\000\000\004e\004e\000\000\000\000\004e\004e\000\000\000\000\000\000\000\000\003^\000\000\000\000\004\149\004\149\000\000\012&\004\149\004\149\000\000\000\000\000\000\000\000\004e\000\000\003\226\000\000\021^\000\000\000\000\012\178\000\000\000\000\000\000\017\190\012\186\004\149\000\000\000\000\000\000\007\025\007\025\000\000\000\000\000\000\000\000\000\000\018>\000\000\000\000\000\000\012\194\000\000\r\005\r\005\028\182\000\000\000\000\000\000\000\000\007\025\007\025\007\025\000\000\000\000\000\000\000\000\000\000\012\214\r\026\007\025\000\000\004\217\r\005\r\005\r\005\007\206\000\000\000\000\000\000\000\000\000\000\000\000\r\005\007\025\007\025\000\000\000\000\000\000\000\000\007\025\018~\007\025\007\025\007\025\000\000\000\000\r\005\r\005\007\025\000\000\001\174\000\000\r\005\r\254\r\005\r\005\r\005\000\000\000\000\000\000\000\000\r\005\000\000\000\000\015\n\007\025\000\000\000\000\004\165\000\000\003R\000\000\000\000\000\000\002Z\002^\025\030\000\000\r\005\000\000\000\000\000\000\015\014\000\000\000\000\000\000\000\000\000\000\0156\000\000\000\000\000\000\000\000\000\000\001*\002b\002r\000\000\000\000\000\000\001\174\000\000\012\178\002\182\002~\000\000\000\000\012\186\000\000\000\000\000\000\000\000\000\000\005\030\004\209\000\000\000\000\000\000\002\130\003.\003R\000\000\000\000\015\202\003:\000\000\003F\004\026\004&\000\000\000\000\000\000\003^\0042\000\000\000\000\000\000\000\000\012&\000\000\012\214\015\222\000\000\000\000\004\165\004\165\000\000\003\226\000\000\021^\0046\000\000\012\178\000\000\000\000\000\000\000\000\012\186\000\000\000\000\000\000\000\000\000\000\015\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\194\000\000\000\000\000\000\000\000\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\214\r\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018~")) and lhs = - (8, "\014\r\012\011\n\t\b\007\006\005\004\003\002\001\000\225\225\224\224\223\222\222\221\221\221\221\221\221\221\221\221\221\221\221\221\221\221\221\221\221\221\221\220\220\219\218\218\218\218\218\218\218\218\217\217\217\217\217\217\217\217\216\216\216\215\215\214\213\213\213\212\212\211\211\211\211\211\211\210\210\210\210\210\210\210\209\209\209\209\209\208\208\208\208\207\206\205\205\205\205\204\204\204\204\203\203\203\202\202\202\202\201\200\200\200\199\199\198\198\197\197\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\196\195\195\194\194\193\192\191\190\190\189\189\188\188\188\188\187\187\187\187\186\186\185\184\184\184\184\184\184\183\182\181\181\180\180\179\179\178\177\177\176\175\175\174\173\172\172\172\171\171\170\169\169\169\169\169\169\168\168\168\168\168\168\168\168\167\167\166\166\166\166\166\166\165\165\164\164\164\163\163\162\162\162\162\161\161\160\160\159\159\158\158\157\157\156\156\155\155\154\154\153\153\152\152\151\151\151\150\150\150\150\149\149\148\148\147\147\146\146\146\146\146\145\145\145\145\144\143\143\142\142\142\141\141\141\141\141\141\141\140\140\140\140\140\140\140\139\139\138\138\137\137\137\137\137\137\136\136\135\135\134\134\133\133\132\132\131\130\130\130\129\129\128\128\128\128\128\128\128\128\128\127\127~}}}}}}}}}}|{zyyxxxxxwvvuuttttttttttttttssrrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqppoonnmmllkkjjiihhggffeeeeeedcba`_^]\\[ZYYYYYYYXXWWVVVVVUUUUUUTTSSSSSRRQQPONNMMMMMLLKKJJJIIIIIIHHHGGFFEEDDCCBBBAA@@??>>==<<;;::99887776665554443333210000000000000000000/////....---------------------------------------------,,++++++++++++++++***************************************************))(((''&&&&&&&&&&&&&&&&&%%$$#######\"\"\"\"!! \031\031\030\029\028\028\028\027\027\026\026\026\026\026\026\026\026\026\026\025\025\024\023\023\022\021\021\021\021\021\020\019\019\018\018\018\017\017\017\016\016\016\016\016\016\015\015") + (8, "\014\r\012\011\n\t\b\007\006\005\004\003\002\001\000\235\235\234\234\233\232\232\231\231\231\231\231\231\231\231\231\231\230\230\229\228\227\227\227\227\227\227\227\227\226\226\226\226\226\226\226\226\225\225\225\224\224\223\222\222\222\221\221\220\220\220\220\220\220\219\219\219\219\219\219\219\218\218\218\218\218\217\217\217\217\216\215\214\214\214\214\213\213\213\213\212\212\212\211\211\211\211\210\209\209\209\208\208\207\207\206\206\206\205\205\205\205\205\205\205\205\205\204\204\203\203\203\203\203\203\203\203\203\203\203\202\202\201\201\200\199\198\197\196\196\195\195\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\194\193\193\192\191\191\191\191\190\190\190\190\189\189\188\187\187\187\187\187\187\186\185\184\184\183\183\182\182\181\180\180\179\178\178\177\176\175\175\175\174\174\173\172\172\172\172\172\172\171\171\171\171\171\171\171\171\170\170\169\169\169\169\169\169\168\168\167\167\167\166\166\165\165\165\165\164\164\163\163\162\162\161\161\160\160\159\159\158\158\157\157\156\156\155\155\154\154\154\153\153\153\153\152\152\151\151\150\150\149\149\149\149\149\148\148\148\148\147\146\146\145\145\145\144\144\144\144\144\144\144\143\143\143\143\143\143\143\142\142\141\141\140\140\140\140\140\140\139\139\138\138\137\137\136\136\135\135\134\133\133\133\132\132\131\131\131\131\131\131\131\131\131\130\130\129\128\128\128\128\128\128\128\128\128\128\127~}||{{{{{zyyxxwwwwwwwwwwwwwwvvuuttsssssssssssssssssssssssssssssssrrqqppoonnmmllkkjjiihhggffffffedcba`_^]\\[ZZZZZZZYYXXWWWWWVVVVVVUUTTTTTSSRRQPOONNNNNMMLLKKKJJJJJJIIIHHGGFFEEDDCCBBBAA@@??>>==<<;;::998877766655544433210000000000000000000/////....---------------------------------------------,,++++++++++++++++***************************************************))((''&&&&&&&&&&&&&&&&&%%$$#######\"\"\"\"!! \031\031\030\029\028\028\028\027\027\026\026\026\026\026\026\026\026\026\026\025\025\024\023\023\022\021\021\021\021\021\020\019\019\018\018\018\017\017\017\016\016\016\016\016\016\015\015") and goto = - ((16, "\000)\001Q\000S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000_\000<\000\026\000\251\0001\t\152\000\000\000\000\000\233\000-\t\248\000\181\001\204\nj\000\000\000\000\000\000E\006\000=\003\012\000\025:>\000\000\000\000\000\000\000\000\000\000\000\000\000\00072\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000F\003<\000\210\000\000\000\000\000\000\000\000\000\221\000\000\004\1581\226\000d\004\178\000@\001H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\244\000\000\000\000\000\000\000\000\000\000\001@\000\000\000\000\000\000\001\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000F\018\000\000\000\000\002>\000\000\000\000\000\000\000\000\000\000\000\000\000\000/\022\002B\000\000\002V\004\180\001H\000\000\000\000\005t\000k\000\000\005\168\0060\002\166\005\174\000 \000\000\000\000\000\000\000\228\000\000\000\000\002p\000\000\000\000\000\000\000\000\004\016\000\000\003<\000\000\000\000\000\000\000\000\000\000\000>\000\000\003\236\004|\000\128\000\000\003\242/\022\000\000\006\204\000\000\001\188\000\0000\\\000\194\001|\007\174\000\000\000\000\000\000\003B\003\132\005\252\001(\003\138\006\140$\146\003\222\006\144\000\243\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007n\000\000\000\000\000\000\004H\007x\n\166\004\154\007z\n\200\b\154E\006\011v\000\000$\232\004\250\b6\005\246\000\0004\2207\1588$\000\000\000u\000\000\000\000\000\000\005\208>,\006\b\000\000:\138\006t\000\000:\222A\218\000\143\000\000\000\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000;\016\005\244\000\000\000\000\000\000\b\194\000\000\001\216\000\000\000\000\004\020\001j\000\000\000\000\011\b\000\000\t\244\000\000\004\020\002\206\004\020\000\000\000\000\000\000\000\000\000\000B \000\000\bf\007\152\000\000:r\t\b\002\246\000\000\000\000\000\000\007B\000\000\000\000\000\000\000\000\007<\000\000\000\000\000\000\000\000\000\000;\146\000\000\000\000\000\000\000\000\000\000\000\000\001\024\b\012\000\000\000\000\000\000\007<\bH;\216\007\248\t.\012\026\000\000\005*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\236\000\000\000\000\000\000\000\000\t0f\007\232\000T\000\000\007\232\007\232\000\000\000\000\007\232\000\0008$\000\000\000\000\000\000\007\2328>\000\000\000\000\007\232\000\000\006\004\t\014\000\000\000\000\000\000\000\000\000\000\000\000>\\\000\000\b\162\000\000J2\007<\000\000\000\000\000\000\000\000\b\188\tF\011\1744\238B\254\t\132\000\000\004n\007\232Jt\007<\tl\000\000\000\000\000\000\000\00072\t\222\000\0008bH\206\000\000\012b\tV\t\138\t\158\t<\007\214\t\170\001\132\nR\000\000\000\000\001J\002\184\000\000\002\228\t\182\002\160\t\234\000\000\000\000\004\210\000\000\0024\000$\002\212\000\019\011T\000\000\000\0009\000\000\000P\138\n\248\000\000J\154\007\154\000\000KD%\156\n\190\t\184KR\n\204\t\232\rf\n\208\t\242\r\196\n\224\t\244\00268\170\007\232\014\026\n\248\n\002F\25472\011\156\000\000C\024\014r\011\028\n\018?f\007\232\014\200\011$\n\022?\172\007\232\015&K\140\000\000\000\000\000\000\000\000\000\000\001N\b\240\000\000\000\000\000\000\011D\n \t\194\001\172\015\132\0024\000\000\000\000\000\0004\238\000\000K\150\007<\015|\011R\nXK\154\000\000K\180\000\000\000\000\015\212%\244\000\"\000\000\000\000\012\172K\186\007<3\028\007\003\160\014\136\011\198\014\202\000\000\017\168\007L\014\148\000\000\000\000\000(\0046\n\198\000\000\017\216\0024\n\246\000\000\005`\000\000\014J\011\238\018\\\007\190\000\000\014T\011\242\tB\r&\014h\014r\012\028\016\000\000\000\014\174\004\178\000\000\000\000\000\000\000\000\002\n\012B\014\142M\022\007<\000\000\004X\012T\015J\000\000\000\000\000\000\000\000\000\000\000\000M&\b\218\000\000\012Z\015\164\000\000\000\000\000\000\000\000\000\000\000\000G4\011\030\000\000\012j\005\168\000\000\012\128\012\132\004\180\000\000\006\026Hl\000\000\006\140\000\000M6\007<\007<\000\000\000\000\tP\000\000\005\146\000\000\007\254\tP\tP\000\000\012\152I\n\007\022\000\000\012\216\000\000M\244A \007<\000\000N4\014:\000\000ND\000\000\000\000\000\000\tP\000\000\000\000\012\180\015t\012\214\016\170\015Z\000\000\000\000NV\012\248\015\154\000\000\000\000\000\0003V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\002\000\000\015\168\r\b\006\162\000\000\016\178\016j\r&\015\202\000\000\000\000\015\208\r\014\006\186\000\000\000\000/&\016\132\r0\015\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007<\015\150\rL\016\250\015\166\000\000-@\000\223\rT\015z\007D\000\178\rZ\0168\000\000\016\236\018\238\000\000\000\000\019L\000\000\r\134\000\000\003l\000\000\000\000\000\000\000\000\000\000\000\000Nl\007<\000\000\016\238\019\162\000\000\000\000\019\250\000\000\000c\rd\016\150\000\000C4GX\016P\000\000N\184\007<\020P\000\000\000\000\020\174\000\000\000\000\000\0009$\000\000\021\004\000\000\000\000\000\000\r\184\000\000\004\136\000\000\000\000\000\000\000\000\000\000\000\000Gt\000\000\000\000CrH.\016Z\000\000N\254\007<\021\\\000\000\000\000\021\178\000\000\000\000\r~\022\016\r\194\000\000\r\138\r\144\002~\005\180\r\164\bJ\r\206\016\1845x\r\232\000\000\r\222\014\014\n.\000\000\007\nI0\000\000\000]\000\000\014\020C\128C\184\011\152\015\150\012\128\000\000H\002N\158\000\000\000\000I\212\000\000\000\000\000\000\006p\000\000\000\000\006p\000\000\000\000\006p\nH\000\000\012\250\006p\016\1985\170\014>\000\000\006p\000\000OL\000\000\000\000\006p\000\000\000\000\014f\000\000\014\\\n\164\014l\000\000\014XIB\014\234\000\000\000\000\000\000\014\248\000\000\000\000\b\150\000\000\006pO\154\000\000\015\190\006pD\134\000\000\015\016\0160\014j\017R\015\254\000\000D\204\015\026\016>\000\000\000\000\000\000C\240\tV\014\130\016\2345\228\015\"\000\000\000\000\000\000\000\000\000\000\000\000\0116\000\000\000\000\011B\000\000\0158\000\000\016R\000\000\000\000\000\000\000\000\015>D\000\000\000\000\000\000\000\0116\000\000\011B\000\000\000\000\000\000\000\000\000\000\011N\022f\000\000\000\000\022\190\000\000\000\000\000\000\000\000\023\020\000\000\000\000\011N\023r\000\000\023\200\000\000\000\000\024 \000\000\000\000\000\000\000\000\024v\000\000\000\000/\190\011N\024\212\000\000\000\0000,\011N\025*\000\000\000\0000x\011N\007\138\025\130\000\000\000\0000\202\011N\025\216\000\000\000\0001r\011N\0266\000\000\000\0001\174\011N\000\000\000\000\026\140\000\000\000\0002\016\011N\026\228\000\000\000\0002h\011N\027:\000\000\000\0003\"\011N\000\0003n\011NI\212\011N\000\000\000\000\027\152\000\000\000\000\027\238\000\000\000\000\000\000\011`\028F\000\000\000\000\028\156\000\0009r\000\000\000\000K\140\000\000\000\000\028\250\000\000\000\000\000\000\029P\000\000\000\000\000\000\017\028\000\000\000\000A|\000\000\004\136\000\000\003:\000\000\016\182\000\000\b2\000\000\000\000\000\000\000\000\000\000\001N\000\000\000\000\016\016\000\000\000\000\029\168\000\000\029\254\000\000\000\000\000\000\030\\\000\000\000\000\030\178\016\020\031\n\000\000\031`\000\000\000\000\000\00072\016\182\000\000EL\007&\004\020\031\190\000\000EV\000\000\000\000\000\000E\136\000\000\000\000 \020\000\000 l\000\000\000\000\000\000\000\0009\220\000\000\000\000\000\0003\144\011N3\220\011N\000\000\000\000\000\000\000\000\011N\000\000\000\000\000\000\000\000\011N\000\000\017D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\174\012X\001\172 \194\000\000\016.\014\182\016\184\011\236\000\000! \000\000\016:\014\188\t\236\016V\014\198\000\000!v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0003\028\016\220\000\000O\204\007\000\188\001}\004v\001\244\001\251\002\246\002\137\004\245\001\255\001~\001\021\001\135\001j\001\029\000\227\003\020\006\137\000\231\001\002\002\247\005E\001b\001c\002\246\002\139\002\"\001\015\005D\001\170\005F\000\234\004\023\001\021\001\024\000\219\001#\002U\004\247\002\141\000\231\001 \001d\001s\004\024\001f\001g\005\023\004\031\005X\002\148\001\012\002\000\004\248\001\005\001\028\005Y\000\234\004\255\001\029\000\234\003t\005\015\003]\005E\006e\003N\002\001\002\139\000\231\001\015\005Z\006\243\005F\0037\003\144\001\021\001\"\003\004\006\133\002U\005L\002\141\000\231\001\015\001t\005N\001u\002<\004\023\001\021\001\024\005X\002\148\002\246\007A\003\t\005P\003\172\000\234\002\142\004\024\002\152\002\246\001\021\004\025\003\176\000\222\002\158\000\225\001\135\002\144\001\021\005Q\005Z\002\246\001\015\005:\001{\002Q\002R\001c\001\021\001\"\005L\003m\003D\003F\002\246\005N\001l\002\160\001#\000\231\002q\005;\002!\006\164\005B\001\135\005P\006\t\002r\002\142\0037\002\152\000\227\005C\006w\000\231\000\232\002\158\004^\001\135\002\144\002\137\005Q\005\001\004\019\006\131\005g\001\015\001\029\000\231\001\002\001\030\003\016\001\021\001\"\003z\003{\000\234\002\246\000\234\002\160\003)\005D\001\015\001#\004\245\004_\004\129\004`\001\021\001\"\002\246\003\131\006v\003\190\001 \003\132\003b\005!\001}\001\021\003\128\003D\003F\0019\005u\003\202\001~\002\246\001\135\001j\001,\007+\002R\001c\004\247\005\150\004a\005E\000\231\001\002\005\213\002\139\0007\002\024\005#\000\235\005F\001@\001#\004\248\000\240\000\243\006\244\002U\004\255\002\141\000\231\006\183\005\006\001(\005%\001\015\002Q\002R\001c\005X\002\148\001\021\001\024\003S\002%\004b\006z\002#\005\167\005\246\000\231\002q\002\246\002\"\004c\004d\003\219\004e\001E\002r\005&\005Z\001T\001\015\001\029\006\\\001\250\001\030\001\015\001\021\001\"\005L\002\137\003a\001\021\001\024\005N\002\246\001\165\002Q\002R\001c\004\130\000\234\002Q\002R\001c\005P\000\234\000\234\002\142\001 \002\152\000\227\002q\002\246\000\231\001\002\002\158\002q\001\135\002\144\002r\005Q\002\024\002\246\004g\002r\005\191\006\143\002$\004i\004s\007\003\007,\002\137\002\141\000\231\001<\000\251\002\137\002\160\004~\001\250\003y\001#\002\246\000\146\001Z\004\131\004\023\002\025\005\208\002\139\002#\001\163\001(\000\231\004\127\001q\006\170\006\171\004\024\001C\001z\002U\004\030\002\141\000\231\003\143\006\172\006\173\001,\002\246\001\131\001F\001\130\002\145\002\148\007\005\005'\006\174\003b\002Q\002R\001c\001\015\003\158\001\015\003\162\000\146\006\144\001\021\001\"\001\021\001\024\002\139\003\161\002q\002\149\0037\002\139\001\169\000\234\0037\002\246\002r\005#\002U\001\180\002\141\000\231\006\214\002U\004\227\002\141\000\231\002$\003\252\002\137\002\145\002\148\001\185\005%\006:\002\145\002\148\000\234\002\142\002\246\002\152\002Q\002R\001c\002\246\001\199\002\158\001\029\001\135\002\144\001\030\001/\002\149\001\196\001A\003\173\002q\002\149\001#\005&\004\023\003\136\003D\003F\002r\006\152\003D\003F\001\227\002\160\006\207\002\003\004\024\001[\001 \001r\0047\002\137\001\251\006\202\001\211\002\142\001\255\002\152\001\021\001,\002\142\004 \002\152\002\158\002\139\001\135\002\144\002\024\002\158\001E\001\135\002\144\002Q\002R\001c\001\015\002U\001\015\002\141\000\231\005#\001\021\001\"\001\021\001\"\0040\002\160\002q\002\145\002\148\0048\002\160\000\234\001(\002^\002r\005%\002#\001\202\002\000\000\231\006\204\002Q\002R\001c\003\223\003b\005=\002\137\001\213\002\149\000\234\002\139\000\234\002\001\001\222\0021\002q\000\234\002Q\002R\001c\005&\001\015\002U\002r\002\141\000\231\004\026\001\021\001\"\006c\003N\006\"\002q\000\231\002\145\002\148\002\137\002\142\0024\002\152\002r\001\210\002\024\0027\002:\002\158\006`\001\135\002\144\004\235\004\026\002@\000\231\002\137\006\180\004\026\002\149\001\029\002$\002H\001)\002M\005\b\001\216\002\246\000\231\002]\002\139\002\160\002\254\001\224\000\234\002#\002\246\002\246\000\231\001+\000\234\000\234\002U\001\237\002\141\000\231\001#\001 \002\142\005\027\002\152\0061\003b\001\239\002\145\002\148\002\158\002k\001\135\002\144\002\139\002\246\001\254\002\208\006\176\000\234\001\135\002Q\002R\001c\000\234\000\234\002U\001,\002\141\000\231\002\149\002\139\000\234\002\160\002\241\002\246\002q\002\250\002\145\002\148\000\234\002\024\000\234\002U\002r\002\141\000\231\000\234\003\006\002Q\002R\001c\002$\003\177\006Q\002\145\002\148\002\137\003\023\002\142\002\149\002\152\003\191\003\208\002q\006\162\003b\002\158\003\002\001\135\002\144\002#\002r\001\015\000\231\000\234\001\015\002\149\0069\001\021\001\"\000\234\001\021\001\"\002\015\002\137\006\029\003\212\003\028\002\142\002\160\002\152\003-\003>\006\025\003@\002\024\002\158\000\234\001\135\002\144\000\234\0020\003R\001b\001c\002\142\004\007\002\152\0023\003`\0026\000\234\005\001\002\158\002\246\001\135\002\144\002\139\0029\002\160\003f\000\234\003\024\001d\001e\002#\001f\001g\000\231\002U\002?\002\141\000\231\002$\003s\002C\002\160\001#\002Q\002R\001c\002\145\002\148\003\134\001\029\002\139\000\227\001\030\002G\000\231\000\232\000\234\002L\002q\003\171\000\234\000\234\002U\000\234\002\141\000\231\002r\001\227\002\149\001,\002\005\000\234\0066\002\\\002\145\002\148\001 \001\251\000\234\002\137\002j\001\255\003\175\001\021\004\245\003\181\002Q\002R\001c\000\234\002|\004'\006+\002$\005H\003\187\002\149\002\142\003\198\005l\005K\002q\002\157\000\234\001k\002\158\002\246\001\135\002\144\002r\001\029\002\225\000\234\004C\004\247\006!\001l\002\024\003\217\000\231\003\222\001(\002\137\000\234\002\000\002\142\002\249\002\152\002\160\004\248\002Q\002R\001c\002\158\004\255\001\135\002\144\001 \005\003\002\001\002\139\003\227\002\246\002\240\006$\002q\000\234\002#\003\011\000\234\000\231\001\015\002U\002r\002\141\000\231\002\160\001\021\001\"\000\234\003\237\002\242\000\234\006\031\002\145\002\148\002\137\000\227\002\245\003\243\000\231\000\232\003\254\002Q\002R\001c\002\246\003\014\004+\001}\004\t\002\246\000\234\002\139\000\234\002\252\002\149\001\134\002q\001\135\001j\004\027\003\r\004\r\003\007\002U\002r\002\141\000\231\002\246\004\245\003\n\006\016\004\"\002\246\000\234\006\139\002\145\002\148\002\137\002$\0042\001\015\001#\004S\002\142\004<\002\152\001\021\001\"\002Q\002R\001c\002\158\000\234\001\135\002\144\002\139\000\227\002\149\004\247\000\231\000\232\000\234\004U\002q\000\234\003\022\003\027\002U\001,\002\141\000\231\002r\000\234\004\248\002\160\002\246\004[\006\n\004\255\002\145\002\148\004h\005\000\000\234\002\137\000\234\002\142\004k\002\152\004\245\004u\002Q\002R\001c\002\158\000\234\001\135\002\144\002\139\004p\002\246\002\149\001#\000\234\004{\002\246\002q\003!\000\234\003(\002U\003'\002\141\000\231\002r\001\029\003,\002\160\004J\004\247\005\255\004\134\002\145\002\148\002\246\004\140\000\234\002\137\004\144\001,\002\142\003_\005l\004\172\004\248\002Q\002R\001c\002\158\004\255\001\135\002\144\001 \005\n\002\149\002\139\004\218\004\153\003e\003r\002q\000\234\005\025\003v\000\234\004\223\003x\002U\002r\002\141\000\231\002\160\003\133\003\142\005\240\005\011\003\147\002\246\003\159\002\145\002\148\002\137\004\194\002\142\003\157\002\152\003\160\004\220\002Q\002R\001c\002\158\003\164\001\135\002\144\000\234\004\228\002\246\002\139\000\234\002\246\002\149\000\234\002q\005\007\001\227\004\231\000\234\002\031\003\174\002U\002r\002\141\000\231\002\160\001\251\003\170\005\229\002\024\001\255\000\234\001\021\002\145\002\148\002\137\003\186\000\234\001\015\004\234\000\234\002\142\004\242\002\152\001\021\001\"\002Q\002R\001c\002\158\000\234\001\135\002\144\002\139\000\227\002\149\006W\000\231\000\232\002#\005\014\002q\000\231\003\180\003\182\002U\003\205\002\141\000\231\002r\003\193\000\234\002\160\002\000\002\246\005\221\005\030\002\145\002\148\000\234\005\024\002\246\002\137\005\028\002\142\0052\002\152\004\245\002\001\002Q\002R\001c\002\158\002\246\001\135\002\144\002\139\005>\002\246\002\149\001#\003\204\002\246\000\234\002q\003\199\000\234\003\203\002U\003\216\002\141\000\231\002r\002\246\003\221\002\160\002\246\004\247\005\180\006#\002\145\002\148\002$\006)\004;\002\137\0060\001,\002\142\003\226\002\152\0063\004\248\002Q\002R\001c\002\158\004\255\001\135\002\144\000\234\005\026\002\149\002\139\002\246\002\246\005 \002\246\002q\000\234\006V\006t\003\229\005$\003\233\002U\002r\002\141\000\231\002\160\003\241\000\234\003\248\006~\004\003\0050\005\172\002\145\002\148\002\137\0057\002\142\004:\002\152\005A\002\246\002Q\002R\001c\002\158\0043\001\135\002\144\000\234\006\128\005M\002\139\000\234\005T\002\149\000\234\002q\006\165\001\227\006\177\000\234\002`\0044\002U\002r\002\141\000\231\002\160\001\251\0049\002\135\002\024\001\255\002\246\001\021\002\145\002\148\002\137\004=\000\234\000\234\006N\006x\002\142\006\191\002\152\004>\004]\002Q\002R\001c\002\158\000\234\001\135\002\144\002\139\000\227\002\149\006u\000\231\000\232\002#\004V\002q\000\231\004W\004\\\002U\004r\002\141\000\231\002r\0074\000\234\002\160\002\000\002\246\002\147\004n\002\145\002\148\000\234\004o\000\234\002\137\004q\002\142\004}\002\152\004\245\002\001\002Q\002R\001c\002\158\004z\001\135\002\144\002\139\004|\004\133\002\149\004\135\004\136\004\141\007?\002q\004\145\004\149\004\167\002U\004\173\002\141\000\231\002r\001\227\004\177\002\160\002\244\004\247\002\151\004\208\002\145\002\148\002$\001\251\004\229\002\137\005\002\001\255\002\142\001\021\005l\005\012\004\248\002Q\002R\001c\002\158\004\255\001\135\002\144\0059\005,\002\149\002\139\0053\0054\007D\0058\002q\005?\001\227\005O\005\202\003\000\005\211\002U\002r\002\141\000\231\002\160\001\251\005\224\002\166\005\235\001\255\005\243\001\021\002\145\002\148\002\137\002\000\002\142\006\027\002\152\006(\006*\002Q\002R\001c\002\158\006/\001\135\002\144\0062\006?\002\001\002\139\006U\006^\002\149\006\160\002q\006\182\007&\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\001\227\000\000\002\165\003\184\002\000\000\000\000\000\002\145\002\148\002\137\001\251\000\000\000\000\000\000\001\255\002\142\001\021\002\152\000\000\002\001\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\001\227\002q\000\000\003\195\000\000\002U\000\000\002\141\000\231\002r\001\251\000\000\002\160\000\000\001\255\002\213\001\021\002\145\002\148\000\000\000\000\000\000\002\137\002\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\001\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\001\227\000\000\002\160\003\201\002\000\002\216\000\000\002\145\002\148\000\000\001\251\000\000\002\137\000\000\001\255\002\142\001\021\002\152\000\000\002\001\002Q\002R\001c\002\158\001\227\001\135\002\144\003\210\000\000\002\149\002\139\000\000\000\000\000\000\001\251\002q\000\000\000\000\001\255\000\000\001\021\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\002\237\000\000\000\000\000\000\000\000\002\145\002\148\002\137\002\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\001\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\002\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\001\227\000\000\004\148\003\218\000\000\000\000\002\001\002\145\002\148\002\137\001\251\000\000\000\000\000\000\001\255\002\142\001\021\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\001\227\002q\000\000\006Z\000\000\002U\000\000\002\141\000\231\002r\001\251\000\000\002\160\000\000\001\255\004\151\001\021\002\145\002\148\000\000\000\000\000\000\002\137\002\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\001\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\001\227\000\000\002\160\006i\002\000\004\166\000\000\002\145\002\148\000\000\001\251\000\000\002\137\000\000\001\255\002\142\001\021\002\152\000\000\002\001\002Q\002R\001c\002\158\001\227\001\135\002\144\006l\000\000\002\149\002\139\000\000\000\000\000\000\001\251\002q\000\000\000\000\001\255\000\000\001\021\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\004\169\000\000\000\000\000\000\000\000\002\145\002\148\002\137\002\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\001\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\002\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\001\227\000\000\004\181\006o\000\000\000\000\002\001\002\145\002\148\002\137\001\251\000\000\000\000\000\000\001\255\002\142\001\021\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\004\184\000\000\002\145\002\148\000\000\000\000\000\000\002\137\002\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\001\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\004\190\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\004\212\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\004\215\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\004\219\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\005b\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\005e\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\005j\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\005n\000\000\000\000\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\005p\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\005s\002\145\002\148\002\137\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\005x\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\005}\000\000\000\000\002\137\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\005\130\000\000\000\000\002\137\000\000\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\005\136\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\005\141\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\005\146\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\005\153\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\005\158\002\145\002\148\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\005\163\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\005\175\000\000\000\000\002\137\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\005\178\000\000\000\000\002\137\000\000\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\005\183\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\005\186\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\005\195\000\000\000\000\002\137\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\005\199\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\005\225\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\005\227\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\005\231\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\005l\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\005\234\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\005\236\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\005\238\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\005\248\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\006\001\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\006\004\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\006&\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\006-\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\0065\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\006C\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\006H\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\006K\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\006\211\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\006\213\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\006\216\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\006\221\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\006\223\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\152\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\006f\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\006O\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\006\024\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\006\019\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\005\171\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\005`\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\154\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\156\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\161\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\168\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\170\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\172\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\174\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\176\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\178\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\180\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\182\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\184\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\186\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\188\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\190\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\192\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\001b\001c\000\000\002\139\000\000\000\000\002\149\000\000\002q\000\000\000\000\000\000\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\001d\004\186\000\000\001f\001g\000\000\000\000\002\145\002\148\002\137\000\000\000\000\000\000\000\000\000\000\002\142\000\000\002\194\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\000\000\002\160\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\000\000\002\137\000\000\002\142\000\000\002\196\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\002\139\000\000\000\000\002\149\000\000\000\000\001k\000\000\002q\000\000\000\000\000\000\002U\000\000\002\141\000\231\002r\000\000\001l\002\160\000\000\000\231\000\000\004^\002\145\002\148\000\000\000\000\000\000\002\137\000\000\000\000\002\142\000\000\002\198\000\000\000\000\002Q\002R\001c\002\158\000\000\001\135\002\144\000\000\000\000\002\149\002\139\000\000\000\000\000\000\004_\002q\004`\000\000\005-\000\000\000\000\000\000\002U\002r\002\141\000\231\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\137\000\000\002\142\000\000\002\200\000\000\000\000\000\000\001}\004a\002\158\001\029\001\135\002\144\001\030\000\000\001\134\002\139\001\135\001j\002\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002U\005/\002\141\000\231\002\160\000\000\000\000\000\000\000\000\001 \000\000\001\029\002\145\002\148\001\030\004b\000\000\000\000\000\000\000\000\002\142\000\000\002\202\000\000\004c\004d\003t\004e\002\158\000\000\001\135\002\144\002\139\000\000\002\149\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\002U\000\000\002\141\000\231\000\000\000\000\001\029\002\160\004\128\001\030\001(\003t\002\145\002\148\001\029\000\000\000\000\001\030\000\000\002\142\000\000\002\204\000\000\000\000\003w\000\000\000\000\002\158\000\000\001\135\002\144\000\000\004g\001 \002\149\006\140\000\000\004i\004s\001(\001\015\001 \000\000\000\000\000\000\000\000\001\021\001\"\004~\000\000\002\160\000\000\000\000\003\156\000\000\000\000\000\000\000\000\003t\000\000\000\000\000\000\000\000\002\142\004\127\002\206\000\000\000\000\000\000\001\015\000\000\002\158\000\000\001\135\002\144\001\021\001\"\000\000\001(\000\000\000\000\000\000\002Q\002R\001c\000\000\001(\000\000\000\000\000\000\003z\003{\000\000\000\000\002\160\001<\000\000\002q\000\000\000\000\004y\000\000\001#\000\000\000\000\002r\003|\003\140\001\015\000\000\000\000\003\132\003b\000\000\001\021\001\"\001\015\000\000\002\137\003z\003{\000\000\001\021\001\"\001<\000\000\000\000\000\000\000\000\001,\000\000\001#\001F\000\000\000\000\003|\003\140\002Q\002R\001c\003\132\003b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\000\000\000\000\000\000\001,\000\000\002r\001F\000\000\001<\000\000\000\000\003z\003{\000\000\001\029\001#\001<\001\030\002\137\006\147\002Q\002R\001c\001#\002\139\000\000\000\000\003|\003\140\000\000\000\000\000\000\003\132\003b\000\000\002q\002U\000\000\002\141\000\231\000\000\001 \001,\002r\000\000\001F\000\000\000\000\002\145\002\148\001,\003:\000\000\001F\000\000\000\000\002\137\000\000\000\000\000\000\000\000\002Q\002R\001c\000\000\006}\000\000\000\000\000\000\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\002\139\000\000\000\000\000\000\000\000\002r\000\000\001(\000\000\000\000\000\000\000\000\002U\000\000\002\141\000\231\000\000\000\000\002\137\000\000\002\142\000\000\005{\000\000\002\145\002\148\000\000\000\000\002\158\000\000\001\135\002\144\000\000\000\000\000\000\000\000\000\000\001\015\002\139\000\000\000\000\000\000\000\000\001\021\001\"\000\000\002\149\000\000\000\000\000\000\002U\002\160\002\141\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\000\000\000\000\002Q\002R\001c\000\000\000\000\000\000\000\000\000\000\000\000\002\142\000\000\005\128\000\000\002\139\000\000\002q\000\000\002\158\002\149\001\135\002\144\000\000\000\000\002r\000\000\002U\001<\002\141\000\231\000\000\002Q\002R\001c\001#\000\000\000\000\002\137\002\145\002\148\000\000\002\160\000\000\000\000\000\000\000\000\002q\000\000\002\142\000\000\005\133\000\000\000\000\000\000\002r\004^\002\158\000\000\001\135\002\144\002\149\001,\000\000\000\000\003A\000\000\000\000\002\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\160\002Q\002R\001c\004_\006\192\004`\000\000\000\000\000\000\002\142\000\000\005\139\000\000\000\000\000\000\002q\000\000\002\158\002\139\001\135\002\144\000\000\000\000\002r\000\000\000\000\000\000\000\000\000\000\000\000\002U\000\000\002\141\000\231\004a\000\000\002\137\000\000\000\000\000\000\002\160\000\000\002\145\002\148\002Q\002R\001c\000\000\002\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002q\002U\000\000\002\141\000\231\002\149\000\000\000\000\002r\000\000\004b\000\000\000\000\002\145\002\148\000\000\000\000\000\000\000\000\004c\004d\002\137\004e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\142\002\149\005\144\000\000\002\139\000\000\000\000\000\000\002\158\000\000\001\135\002\144\000\000\004\130\000\000\000\000\002U\000\000\002\141\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\148\002\142\002\160\005\149\000\000\000\000\000\000\000\000\004g\002\158\000\000\001\135\002\144\004i\004s\002Q\002R\001c\000\000\002\139\001\029\002\149\000\000\001\030\004~\000\000\000\000\000\000\000\000\000\000\002q\002U\002\160\002\141\000\231\000\000\000\000\000\000\002r\004^\004\127\000\000\000\000\002\145\002\148\000\000\000\000\001 \000\000\000\000\002\142\002\137\005\156\002Q\002R\001c\000\000\006D\002\158\000\000\001\135\002\144\000\000\000\000\000\000\002\149\000\000\004_\002q\004`\002Q\002R\001c\000\000\000\000\000\000\002r\000\000\000\000\000\000\000\000\002\160\000\000\000\000\000\000\002q\000\000\000\000\000\000\002\137\000\000\000\000\001(\002r\002\142\000\000\005\161\000\000\004a\000\000\000\000\000\000\002\158\000\000\001\135\002\144\002\137\000\000\002Q\002R\001c\000\000\002\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\002q\002U\002\160\002\141\000\231\001\021\001\"\000\000\002r\000\000\004b\000\000\000\000\002\145\002\148\000\000\000\000\000\000\000\000\004c\004d\002\137\004e\000\000\000\000\000\000\000\000\002\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\149\000\000\000\000\000\000\002U\000\000\002\141\000\231\000\000\002\139\000\000\000\000\004f\000\000\000\000\000\000\002\145\002\148\000\000\001<\000\000\002U\000\000\002\141\000\231\000\000\001#\000\000\000\000\002\142\002y\005\166\000\000\002\145\002\148\000\000\004g\002\158\002\149\001\135\002\144\004i\004s\000\000\000\000\000\000\000\000\002\139\000\000\000\000\000\000\000\000\004~\001,\000\000\002\149\001F\000\000\000\000\002U\002\160\002\141\000\231\000\000\000\000\000\000\000\000\002\142\004\127\005\169\000\000\002\145\002\148\000\000\000\000\002\158\000\000\001\135\002\144\001\174\001c\000\000\000\000\000\000\002\142\000\000\006\012\000\000\001\188\001c\000\000\000\000\002\158\002\149\001\135\002\144\000\000\000\000\002\160\002\209\001s\000\000\001f\001g\000\000\001\174\001c\000\000\001d\002e\000\000\001f\001g\000\000\000\000\002\160\000\000\000\000\000\000\000\000\000\000\000\000\002\142\000\000\006\014\002\209\001s\000\000\001f\001g\002\158\000\000\001\135\002\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\214\002\226\002\227\000\000\000\000\000\000\000\000\000\000\000\000\005\181\002\226\002\227\002\160\000\000\000\000\000\000\001\174\001c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\214\002\226\002\227\000\000\000\000\000\000\000\000\000\000\001{\000\000\002\209\001s\000\000\001f\001g\001\174\001c\001{\000\000\000\000\001l\000\000\000\000\000\231\000\000\000\000\000\000\000\000\000\000\001l\000\000\000\000\000\231\000\000\001{\002\209\001s\000\000\001f\001g\000\000\000\000\000\000\000\000\001\174\001c\001l\000\000\000\000\000\231\000\000\000\000\002\214\002\226\002\227\002\230\006M\000\000\000\000\005\184\005\189\000\000\000\000\000\000\002\209\001s\000\000\001f\001g\005:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\214\002\226\002\227\000\000\002\230\002\231\001}\007:\000\000\001{\007;\000\000\000\000\005B\001~\001}\001\135\001j\000\000\000\000\000\000\001l\005C\001~\000\231\001\135\001j\000\000\000\000\002\214\002\226\002\227\001}\000\000\001{\000\000\000\000\000\000\000\000\000\000\001~\000\000\001\135\001j\000\000\000\000\001l\000\000\000\000\000\231\000\000\005D\000\000\000\000\000\000\000\000\002\230\004\230\000\000\000\000\000\000\000\000\000\000\001{\000\000\001b\001c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\000\000\000\000\000\231\001b\001c\002\230\005\r\000\000\001}\001d\001s\005E\001f\001g\000\000\000\000\001~\000\000\001\135\001j\005F\000\000\000\000\001d\001s\000\000\001f\001g\000\000\000\000\000\000\000\000\006\206\001}\002\230\005@\000\000\000\000\000\000\005G\002\148\001~\007=\001\135\001j\000\000\006\209\000\000\000\000\000\000\000\000\000\000\001t\000\000\001u\002<\000\000\000\000\001b\001c\000\000\005J\001}\000\000\000\000\000\000\001t\000\000\001u\002<\001~\005L\001\135\001j\000\000\000\000\005N\000\000\001d\001s\000\000\001f\001g\000\000\000\000\001{\000\000\005P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\000\000\001{\000\231\000\000\000\000\005Q\000\000\000\000\000\000\000\000\006\t\000\000\000\000\001l\001b\001c\000\231\000\000\000\000\000\000\000\000\000\000\000\000\001t\006\t\001u\001\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001d\001s\000\000\001f\001g\000\000\000\000\000\000\000\000\000\000\001\172\000\000\000\000\000\000\000\000\000\000\000\146\000\000\000\000\000\000\000\000\000\000\001{\000\000\000\000\000\000\000\000\000\000\001}\000\000\000\000\000\000\000\000\000\000\001l\000\000\001~\000\231\001\135\001j\000\000\000\000\001}\001t\000\000\001u\001\160\001b\001c\000\000\001~\000\000\001\135\001j\000\000\000\000\000\000\000\000\000\000\000\000\001b\001c\000\000\000\000\000\000\000\000\000\000\001d\001s\000\000\001f\001g\000\000\000\000\000\000\000\000\001{\001\158\001b\001c\001d\001s\000\000\001f\001g\000\000\000\000\004\188\001l\000\000\001\162\000\231\000\000\000\000\000\000\004\191\000\000\001}\001d\004\186\000\000\001f\001g\000\000\000\000\001~\000\000\001\135\001j\000\000\001t\000\000\001u\001\160\001b\001c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001t\000\000\001u\001\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001d\001s\000\000\001f\001g\000\000\000\000\000\000\000\000\001{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001}\000\000\000\000\000\000\001l\001{\000\000\000\231\001~\000\000\001\135\001j\000\000\001\029\000\000\000\000\001\030\001l\000\000\000\000\000\231\000\000\000\000\001k\001b\001c\001t\000\000\001u\002<\000\000\000\000\000\000\004\188\000\000\001l\000\000\000\000\000\231\000\000\001 \004\191\000\000\000\000\001d\004\186\000\000\001f\001g\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\000\001\188\001c\000\000\000\000\001}\000\000\000\000\000\000\001l\004\187\000\000\000\231\001~\000\000\001\135\001j\000\000\001}\000\000\006\005\001d\002e\001(\001f\001g\001~\000\000\001\135\001j\000\000\0067\000\000\000\000\000\000\000\000\001}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\134\000\000\001\135\001j\000\000\000\000\000\000\000\000\000\000\001\015\001b\001c\000\000\000\000\001k\001\021\001\"\000\000\000\000\005\181\002\226\002\227\000\000\000\000\000\000\000\000\001l\000\000\001}\000\231\001d\001s\000\000\001f\001g\000\000\001~\000\000\001\135\001j\000\000\000\000\000\000\000\000\000\000\000\000\001b\001c\000\000\000\000\000\000\000\000\000\000\001{\000\000\000\000\000\000\000\000\000\000\001b\001c\000\000\000\000\004\187\001<\001l\001d\001s\000\231\001f\001g\001#\000\000\001t\000\000\001u\002<\000\000\000\000\001d\001s\000\000\001f\001g\004\192\000\000\000\000\000\000\000\000\001}\000\000\000\000\001\029\000\000\000\000\001\030\005\188\001\134\001,\001\135\001j\001\236\000\000\000\000\001\029\000\000\001{\001\030\000\000\001t\0010\001u\007\027\000\000\007\029\000\000\000\000\000\000\001l\001 \000\000\000\231\001t\000\000\001u\006\196\000\000\001:\001}\006\b\0011\001 \000\000\000\000\000\000\000\000\001~\001O\001\135\001j\000\000\000\000\001{\000\000\000\000\000\000\001\029\000\000\000\000\001\030\000\000\000\000\0010\000\000\001l\001{\000\000\000\231\000\000\000\000\000\000\000\000\000\000\000\000\001(\000\000\000\000\001l\000\000\000\000\000\231\001\029\0011\001 \001\030\000\000\001(\0010\000\000\001M\000\000\001}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001~\000\000\001\135\001j\0016\001\015\000\000\000\000\0011\001 \000\000\001\021\001\"\000\000\000\000\0012\000\000\001\015\000\000\000\000\000\000\000\000\000\000\001\021\001\"\000\000\000\000\000\000\001}\001(\000\000\000\000\000\000\000\000\000\000\000\000\001~\000\000\001\135\001j\000\000\001}\000\000\000\000\000\000\000\000\0016\001\029\000\000\001~\001\030\001\135\001j\0010\001(\000\000\000\000\000\000\000\000\001\015\001<\000\000\000\000\000\000\000\000\001\021\001\"\001#\000\000\000\000\000\000\0016\001<\0011\001 \001b\001c\000\000\000\000\001#\001K\000\000\000\000\001D\001\015\000\000\000\000\000\000\004^\000\000\001\021\001\"\000\000\000\000\001,\001d\001s\001B\001f\001g\000\000\000\000\000\000\000\000\000\000\000\000\001,\000\000\000\000\001F\000\000\000\000\000\000\000\000\001<\000\000\004_\006\229\004`\001(\000\000\001#\000\000\000\000\000\000\001D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0016\000\000\001t\001<\001u\001\164\000\000\000\000\001b\001c\001#\004a\001,\001\015\001D\001F\000\000\000\000\000\000\001\021\001\"\001b\001c\000\000\000\000\000\000\000\000\000\000\001d\001s\000\000\001f\001g\000\000\000\000\001{\000\000\001,\000\000\000\000\001F\001d\001s\000\000\001f\001g\004b\001l\000\000\000\000\000\231\000\000\000\000\000\000\000\000\004c\004d\000\000\004e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001<\000\000\000\000\001t\000\000\001u\001\154\001#\000\000\001b\001c\001D\000\000\000\000\000\000\004\130\001t\000\000\001u\001\151\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001d\001s\000\000\001f\001g\001,\000\000\001{\001F\000\000\004g\006\231\000\000\001}\000\000\004i\004s\000\000\000\000\001l\001{\001~\000\231\001\135\001j\000\000\004~\000\000\000\000\000\000\000\000\000\000\001l\001b\001c\000\231\000\000\000\000\000\000\000\000\000\000\000\000\004\127\001t\000\000\001u\001w\001b\001c\000\000\000\000\000\000\000\000\001d\001s\000\000\001f\001g\000\000\000\000\001b\001c\000\000\000\000\000\000\000\000\000\000\001d\001s\000\000\001f\001g\000\000\000\000\000\000\000\000\001{\000\000\000\000\000\000\001d\001s\001}\001f\001g\000\000\000\000\000\000\001l\000\000\001~\000\231\001\135\001j\000\000\001}\001t\000\000\001u\001y\000\000\000\000\000\000\001~\000\000\001\135\001j\000\000\000\000\000\000\001t\000\000\001u\001|\001b\001c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001t\000\000\001u\001\150\000\000\000\000\001{\000\000\000\000\000\000\000\000\001d\001s\001\029\001f\001g\004G\000\000\001l\000\000\001{\000\231\000\000\000\000\001\029\000\000\000\000\001\030\001}\000\000\000\000\000\000\001l\001{\000\000\000\231\001~\000\000\001\135\001j\001 \001b\001c\000\000\000\000\001l\001b\001c\000\231\000\000\006I\001 \000\000\000\000\001t\000\000\001u\001\142\006L\000\000\000\000\001d\004\186\000\000\001f\001g\001d\001s\000\000\001f\001g\002Q\002R\001c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001}\000\000\000\000\000\000\004I\000\000\001{\000\000\001~\000\000\001\135\001j\000\000\005\205\001}\001(\000\000\000\000\001l\000\000\005\214\000\231\001~\000\000\001\135\001j\000\000\001}\001t\000\000\001u\001\147\000\000\000\000\001\015\001~\000\000\001\135\001j\000\000\001\021\004L\000\000\006\022\000\000\001\015\000\000\000\000\000\000\000\000\000\000\001\021\001\"\000\000\000\000\000\000\001k\000\000\000\000\000\000\000\000\001{\000\000\000\000\000\000\000\000\000\000\000\000\001l\000\000\000\000\000\231\000\000\001l\000\000\000\000\000\231\000\000\000\000\000\000\000\000\001}\000\000\000\000\000\000\000\000\000\000\002T\000\000\001~\000\000\001\135\001j\001b\001c\000\000\004M\000\000\000\000\005\217\001<\002\141\000\231\001\002\000\000\004\187\000\000\001#\004\024\000\000\004R\001V\004O\001d\001s\000\000\001f\001g\000\000\000\000\000\000\000\000\000\000\001,\000\000\000\000\000\000\000\000\001b\001c\000\000\001}\000\000\000\000\001,\000\000\001}\001F\005\208\001\134\000\000\001\135\001j\000\000\001~\000\000\001\135\001j\001d\001s\000\000\001f\001g\000\000\001b\001c\001t\000\000\001u\002I\001b\001c\002\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\143\000\000\001\135\002\144\001d\001s\000\000\001f\001g\000\000\001d\001s\000\000\001f\001g\000\000\001b\001c\000\000\001{\000\000\001t\000\000\001u\002N\000\000\000\000\000\000\000\000\000\000\000\000\001l\000\000\000\000\000\231\000\000\001d\001s\000\000\001f\001g\000\000\000\000\000\000\000\000\000\000\000\000\001t\000\000\001u\002\218\001b\001c\001t\001{\001u\002\220\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\000\000\000\000\000\231\000\000\001d\001s\000\000\001f\001g\000\000\000\000\000\000\001t\001{\001u\002\222\000\000\000\000\000\000\001{\000\000\000\000\000\000\000\000\000\000\001l\000\000\001}\000\231\000\000\000\000\001l\000\000\000\000\000\231\001~\000\000\001\135\001j\000\000\000\000\000\000\000\000\001b\001c\001{\000\000\001t\000\000\001u\002\229\000\000\000\000\000\000\000\000\000\000\000\000\001l\000\000\000\000\000\231\000\000\001}\001d\001s\000\000\001f\001g\000\000\000\000\001~\000\000\001\135\001j\000\000\000\000\000\000\000\000\000\000\000\000\001{\000\000\000\000\000\000\001\029\000\000\000\000\001\030\001}\000\000\001G\000\000\001l\000\000\001}\000\231\001~\000\000\001\135\001j\000\000\000\000\001~\000\000\001\135\001j\001t\000\000\001u\002\235\001I\001 \000\000\000\000\000\000\000\000\004\017\000\000\000\000\000\000\001}\000\000\002Q\002R\001c\000\000\000\000\000\000\001~\000\000\001\135\001j\005:\000\000\000\000\000\000\000\000\000\000\000\000\001{\000\000\000\000\000\000\000\000\000\000\005\205\000\000\007:\000\000\000\000\007;\001l\005\214\005B\000\231\001}\001(\000\000\000\000\000\000\000\000\000\000\005C\001~\000\000\001\135\001j\005:\000\000\000\000\000\000\000\000\000\000\0016\000\000\005\215\000\000\001\029\000\000\000\000\001\030\000\000\007:\001G\000\000\007;\001\015\000\000\005B\000\000\000\000\005D\001\021\001\"\000\000\000\000\000\000\005C\000\000\000\000\000\000\000\000\005:\001I\001 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\001}\001\030\000\000\007:\0010\002T\007;\000\000\001~\005B\001\135\001j\005D\005E\000\000\000\000\000\000\005\217\005C\002\141\000\231\001\002\005F\000\000\0015\001 \000\000\001<\000\000\000\000\000\000\000\000\000\000\000\000\001#\001(\000\000\000\000\004F\000\000\000\000\005G\002\148\000\000\007<\000\000\000\000\005D\005E\000\000\000\000\000\000\0016\000\000\000\000\000\000\005\208\005F\000\000\000\000\000\000\001,\000\000\005J\001F\001\015\000\000\000\000\000\000\000\000\001(\001\021\001\"\005L\000\000\000\000\005G\002\148\005N\007@\002\142\000\000\000\000\005E\000\000\000\000\000\000\0016\002\143\005P\001\135\002\144\005F\000\000\000\000\000\000\000\000\000\000\005J\000\000\001\015\000\000\001b\001c\000\000\005Q\001\021\001\"\005L\000\000\000\000\005G\002\148\005N\007E\001b\001c\000\000\000\000\0068\001<\000\000\001d\004\186\005P\001f\001g\001#\000\000\001b\001c\001D\000\000\005J\000\000\001d\004\186\000\000\001f\001g\005Q\000\000\000\000\005L\000\000\000\000\004\185\000\000\005N\001d\004\186\000\000\001f\001g\001,\001<\000\000\001F\000\000\005P\001b\001c\001#\000\000\000\000\000\000\001D\001b\001c\000\000\000\000\000\000\000\000\000\000\000\000\005Q\000\000\004\216\000\000\000\000\001d\004\186\000\000\001f\001g\000\000\000\000\001d\004\186\001,\001f\001g\001F\000\000\000\000\001b\001c\000\000\001k\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\001k\000\000\000\231\000\000\001d\004\186\000\000\001f\001g\005:\000\000\000\000\001l\000\000\001k\000\231\000\000\005:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\005;\000\000\000\231\005B\000\000\000\000\000\000\000\000\005;\004\187\000\000\005B\005C\000\000\000\000\000\000\000\000\000\000\001k\000\000\005C\000\000\005\249\000\000\000\000\001k\000\000\000\000\000\000\000\000\001l\000\000\000\000\000\231\000\000\001}\004\187\001l\000\000\000\000\000\231\005D\005\252\001\134\000\000\001\135\001j\000\000\001}\005D\000\000\000\000\000\000\001k\000\000\000\000\001\134\000\000\001\135\001j\001b\001c\001}\000\000\000\000\001l\000\000\004\187\000\231\000\000\001\134\000\000\001\135\001j\004\243\000\000\000\000\005E\000\000\000\000\001d\004\186\000\000\001f\001g\005E\005F\000\000\000\000\000\000\000\000\000\000\000\000\001}\005F\001b\001c\000\000\000\000\000\000\001}\001\134\004\243\001\135\001j\005G\002\148\000\000\001\134\000\000\001\135\001j\005I\005G\002\148\001d\004\186\000\000\001f\001g\005U\005\005\000\000\002Q\002R\001c\000\000\005J\001}\000\000\000\000\000\000\000\000\000\000\000\000\005J\001\134\005L\001\135\001j\000\000\000\000\005N\000\000\000\000\005L\006S\000\000\000\000\005\004\005N\000\000\000\000\005P\000\000\000\000\001k\000\000\000\000\001b\001c\005P\000\000\000\000\001b\001c\000\000\000\000\001l\005Q\000\000\000\231\000\000\000\000\000\000\000\000\000\000\005Q\000\000\001d\004\186\000\000\001f\001g\001d\004\186\000\000\001f\001g\001b\001c\001k\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\000\000\005-\000\231\000\000\000\000\001d\004\186\000\000\001f\001g\000\000\000\000\000\000\000\000\000\000\000\000\002T\000\000\000\000\000\000\000\000\000\000\000\000\005:\000\000\000\000\000\000\001}\002U\000\000\002\141\000\231\000\000\000\000\000\000\001\134\005-\001\135\001j\000\000\000\000\005;\000\000\000\000\005B\000\000\000\000\000\000\000\000\005.\000\000\001k\000\000\005C\000\000\000\000\001k\005:\000\000\000\000\000\000\001\029\001}\001l\001\030\000\000\000\231\000\000\001l\000\000\001\134\000\231\001\135\001j\000\000\0071\000\000\000\000\005B\000\000\000\000\001k\005D\000\000\0056\000\000\000\000\005C\001 \000\000\000\000\002\142\000\000\001l\000\000\000\000\000\231\000\000\003\031\002\143\005\249\001\135\002\144\000\000\000\000\005\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\190\000\000\000\000\005D\000\000\005E\000\000\005\251\000\000\000\000\000\000\000\000\005\250\001}\005F\000\000\000\000\005\249\001}\000\000\001(\001\134\000\000\001\135\001j\000\000\001\134\000\000\001\135\001j\000\000\000\000\000\000\005G\002\148\001\029\000\000\005\254\001\030\005E\006y\000\000\000\000\001}\000\000\000\000\000\000\000\000\005F\000\000\001\015\001\134\000\000\001\135\001j\005J\001\021\001\"\000\000\001b\001c\000\000\001 \000\000\000\000\005L\000\000\005G\002\148\000\000\005N\0072\003\031\000\000\000\000\000\000\000\000\000\000\000\000\001d\004\186\005P\001f\001g\000\000\000\000\000\000\003$\000\000\005J\000\000\000\000\000\000\001\029\000\000\000\000\001\030\005Q\000\000\005L\000\000\000\000\000\000\000\000\005N\001<\000\000\001(\000\000\000\000\000\000\001\029\001#\000\000\001\030\005P\003*\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\030\000\000\003\031\005Q\000\000\000\000\000\000\000\000\000\000\001\015\001 \001,\000\000\000\000\001F\001\021\001\"\004\006\000\000\000\000\003\031\000\000\000\000\000\000\001 \000\000\000\000\001k\000\000\000\000\001b\001c\000\000\000\000\003\031\004\182\000\000\001(\000\000\001l\000\000\000\000\000\231\000\000\000\000\000\000\000\000\000\000\000\000\004\203\001d\001\133\000\000\001f\001g\001(\000\000\000\000\000\000\000\000\002Q\002R\001c\000\000\001<\000\000\000\000\001\015\000\000\001(\000\000\001#\000\000\001\021\001\"\003*\005\253\000\000\000\000\000\000\000\000\000\000\000\000\004\251\000\000\001\015\000\000\000\000\000\000\000\000\001\029\001\021\001\"\001\030\000\000\000\000\000\000\000\000\001,\001\015\000\000\001F\001}\000\000\000\000\001\021\001\"\004\252\000\000\000\000\001\134\000\000\001\135\001j\000\000\000\000\000\000\001 \000\000\000\000\000\000\001\029\001<\000\000\001\030\000\000\001k\003\031\000\000\001#\000\000\000\000\000\000\003*\000\000\000\000\000\000\000\000\001l\000\000\001<\000\231\004\213\000\000\000\000\000\000\000\000\001#\001 \000\000\000\000\003*\000\000\004\017\001<\000\000\001,\002T\000\000\001F\000\000\001#\001(\001b\001c\003*\000\000\001\029\000\000\002U\001\030\002\141\000\231\000\000\001,\000\000\000\000\001F\000\000\000\000\000\000\000\000\000\000\001d\001\205\000\000\001f\001g\001,\000\000\000\000\001F\001\015\001(\001 \000\000\000\000\000\000\001\021\001\"\001\029\001}\000\000\001\030\003:\000\000\000\000\004\254\000\000\001\134\000\000\001\135\001j\000\000\000\000\000\000\000\000\000\000\003=\001\029\000\000\000\000\001\030\001\015\000\000\000\000\000\000\001 \001\029\001\021\001\"\001\030\002\142\000\000\000\000\000\000\000\000\000\000\000\000\001(\002\143\000\000\001\135\002\144\000\000\000\000\001 \001<\000\000\000\000\000\000\004\238\000\000\000\000\001#\001 \000\000\000\000\003*\001k\000\000\001\029\000\000\000\000\001\030\000\000\000\000\000\000\000\000\001\015\000\000\001l\001(\000\000\000\231\001\021\001\"\000\000\001<\000\000\001\029\001,\000\000\001\030\001F\001#\000\000\000\000\001 \004\022\000\000\001(\000\000\002Q\002R\001c\000\000\000\000\000\000\000\000\001(\000\000\001\015\000\000\000\000\000\000\000\000\001 \001\021\001\"\000\000\000\000\001,\000\000\000\000\001F\004\251\000\000\000\000\000\000\000\000\001\015\000\000\000\000\001<\000\000\000\000\001\021\001\"\006\255\001\015\001#\000\000\001(\001}\000\000\001\021\001\"\000\000\000\000\000\000\000\000\001\134\000\000\001\135\001j\000\000\000\000\001\029\000\000\000\000\001\030\001(\000\000\000\000\000\000\000\000\001<\001,\000\000\000\000\003A\000\000\001\015\001#\000\000\000\000\000\000\004#\001\021\001\"\004&\000\000\000\000\000\000\001 \001<\000\000\000\000\000\000\000\000\001\029\001\015\001#\001\030\001<\000\000\004\022\001\021\001\"\002T\001,\001#\000\000\001F\000\000\004#\000\000\000\000\005\031\001\029\000\000\002U\001\030\002\141\000\231\000\000\000\000\001 \001\029\001,\000\000\001\030\001F\000\000\000\000\000\000\000\000\001<\001,\001(\000\000\001F\000\000\000\000\001#\000\000\001 \000\000\007\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \001<\000\000\000\000\004\253\000\000\000\000\000\000\001#\000\000\000\000\000\000\001\144\000\000\001\015\000\000\001,\001(\000\000\001F\001\021\001\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\142\000\000\000\000\000\000\000\000\000\000\001,\001(\002\143\001F\001\135\002\144\002Q\002R\001c\000\000\001(\000\000\001\015\002Q\002R\001c\000\000\000\000\001\021\001\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\021\000\000\001\015\000\000\000\000\001<\000\000\006\018\001\021\001\"\000\000\001\015\001#\002Q\002R\001c\001\179\001\021\001\"\000\000\002Q\002R\001c\000\000\000\000\000\000\001\029\000\000\000\000\001\030\000\000\000\000\000\000\002Q\002R\001c\002S\000\000\001<\001,\000\000\000\000\001F\002l\001\029\001#\000\000\001\030\000\000\001\194\000\000\000\000\000\000\001 \000\000\000\000\002n\001<\000\000\000\000\000\000\000\000\000\000\000\000\001#\000\000\001<\000\000\001\241\000\000\000\000\001 \001,\001#\002T\001F\000\000\001\243\000\000\001\029\000\000\002T\001\030\000\000\000\000\000\000\002U\000\000\002\141\000\231\000\000\001,\000\000\002U\001F\002\141\000\231\000\000\001(\000\000\001,\000\000\000\000\001F\000\000\000\000\001 \000\000\000\000\000\000\002T\000\000\000\000\002Q\002R\001c\001(\002T\000\000\000\000\000\000\000\000\002U\000\000\002\141\000\231\000\000\000\000\001\015\002U\002T\002\141\000\231\000\000\001\021\001\"\002\130\000\000\000\000\000\000\000\000\000\000\002U\000\000\002\141\000\231\001\015\001\029\000\000\002\142\001\030\001(\001\021\001\"\000\000\001\029\002\142\002\143\001\030\001\135\002\144\000\000\000\000\000\000\002\143\000\000\001\135\002\144\002Q\002R\001c\000\000\000\000\000\000\001 \002Q\002R\001c\000\000\000\000\000\000\001\015\001 \001<\000\000\002\142\000\000\001\021\001\"\000\000\001#\002\140\002\142\002\143\002g\001\135\002\144\000\000\002\159\000\000\002\143\001<\001\135\002\144\000\000\002\142\000\000\000\000\001#\000\000\002T\000\000\002w\002\143\000\000\001\135\002\144\001,\001\029\001(\001F\001\030\002U\000\000\002\141\000\231\001\029\001(\000\000\001\030\000\000\000\000\000\000\000\000\001\029\001,\001<\001\030\001F\000\000\000\000\000\000\000\000\001#\000\000\001 \000\000\002{\000\000\001\015\000\000\000\000\000\000\001 \000\000\001\021\001\"\001\015\000\000\000\000\000\000\001 \000\000\001\021\001\"\002T\000\000\000\000\000\000\000\000\001,\000\000\002T\001F\000\000\000\000\000\000\002U\000\000\002\141\000\231\000\000\000\000\000\000\002U\002\142\002\141\000\231\000\000\000\000\001(\001\029\000\000\002\143\001\030\001\135\002\144\000\000\001(\000\000\000\000\000\000\000\000\000\000\001<\000\000\001(\000\000\000\000\000\000\000\000\001#\001<\000\000\000\000\002\211\000\000\000\000\001 \001#\001\015\000\000\000\000\003#\000\000\000\000\001\021\001\"\001\015\001\029\000\000\000\000\004G\000\000\001\021\001\"\001\015\000\000\001,\000\000\002\142\001F\001\021\001\"\000\000\000\000\001,\002\142\002\143\001F\001\135\002\144\000\000\000\000\000\000\002\143\001 \001\135\002\144\000\000\000\000\001\029\000\000\001(\004G\000\000\000\000\000\000\000\000\001\029\000\000\000\000\004G\000\000\000\000\001<\000\000\000\000\001\029\000\000\000\000\004G\001#\001<\000\000\000\000\003\239\000\000\001 \001\029\001#\001<\001\030\001\015\003\251\000\000\001 \000\000\001#\001\021\001\"\004I\004\021\000\000\000\000\001 \002Q\002R\001c\001,\000\000\000\000\001F\000\000\000\000\000\000\001 \001,\000\000\000\000\001F\000\000\000\000\000\000\000\000\001,\000\000\001\029\001F\004\250\001\030\001\015\000\000\004I\000\000\000\000\000\000\001\021\004L\000\000\000\000\004I\000\000\000\000\000\000\000\000\000\000\000\000\001<\000\000\004I\000\000\000\000\000\000\001 \001#\000\000\000\000\000\000\004%\000\000\001(\001\029\001\015\000\000\001\030\000\000\000\000\000\000\001\021\004L\001\015\000\000\000\000\000\000\000\000\000\000\001\021\004L\000\000\001\015\000\000\001,\000\000\000\000\001F\001\021\004L\000\000\001 \000\000\001\015\000\000\004M\000\000\000\000\000\000\001\021\001\"\001(\000\000\001\029\000\000\002T\004G\004\024\000\000\004Q\000\000\004O\000\000\000\000\000\000\000\000\000\000\002U\000\000\002\141\000\231\000\000\001,\000\000\000\000\000\000\000\000\004M\000\000\000\000\001 \001\015\000\000\000\000\000\000\004M\001(\001\021\001\"\004\024\000\000\004P\001\029\004O\004M\004G\000\000\004\024\001<\004N\000\000\004O\000\000\000\000\001,\001#\004\024\000\000\004Z\004\162\004O\000\000\001,\000\000\000\000\000\000\001\015\001\029\000\000\001 \001\030\001,\001\021\001\"\000\000\004I\000\000\000\000\000\000\000\000\002\142\000\000\001,\000\000\000\000\001F\001<\000\000\002\143\001\029\001\135\002\144\001\030\001#\001 \000\000\000\000\004\179\000\000\001\029\000\000\000\000\001\030\000\000\000\000\001\015\000\000\000\000\000\000\000\000\000\000\001\021\004L\000\000\004I\000\000\001 \000\000\000\000\000\000\001,\001<\000\000\001F\000\000\000\000\001 \000\000\001#\000\000\001\029\000\000\004\210\001\030\000\000\000\000\000\000\000\000\000\000\001(\000\000\000\000\000\000\001\029\001\015\000\000\001\030\000\000\000\000\000\000\001\021\004L\000\000\000\000\000\000\001,\000\000\001 \001F\000\000\000\000\001(\001\029\000\000\000\000\001\030\000\000\004M\000\000\001\015\001 \001(\000\000\000\000\000\000\001\021\001\"\000\000\000\000\004\024\000\000\005\018\000\000\004O\000\000\000\000\000\000\001\029\000\000\001 \001\030\001\015\000\000\000\000\001,\000\000\000\000\001\021\001\"\000\000\000\000\001\015\001(\000\000\000\000\000\000\004M\001\021\001\"\000\000\000\000\000\000\000\000\000\000\001 \001(\000\000\000\000\004\024\000\000\005*\000\000\004O\000\000\001<\000\000\000\000\000\000\000\000\000\000\000\000\001#\001\015\001,\001(\006A\000\000\000\000\001\021\001\"\000\000\000\000\000\000\000\000\000\000\001\015\001<\000\000\000\000\000\000\000\000\001\021\001\"\001#\000\000\000\000\001<\006F\001,\001(\000\000\001F\000\000\001#\001\015\000\000\000\000\006\146\000\000\000\000\001\021\001\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001,\000\000\000\000\001F\000\000\000\000\000\000\001<\000\000\001\015\001,\000\000\000\000\001F\001#\001\021\001\"\000\000\006\150\000\000\001<\000\000\000\000\000\000\000\000\000\000\000\000\001#\000\000\000\000\000\000\006\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001<\000\000\001,\000\000\000\000\001F\000\000\001#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001,\000\000\000\000\001F\000\000\000\000\000\000\000\000\000\000\000\000\001<\000\000\000\000\000\000\000\000\000\000\000\000\001#\000\000\001,\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\003<")) + ((16, "\001\228\001\139\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\252\000\000\000\000\000\153\001\000\000)\000s\0007\012\006\000\000\000\000\000S\001F\r\002\0004\001\192\r\142\000\000\000\000\000\000)n\000\\\002Z\000RH@\000\000\000\000\000\000\000\000\000\000\000\000\000\000C\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\198\002\196\001\190\000\000\000\000\000\000\000\000\000a\000\000\002\222\007\154\001\216\003>\000\130\002\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002T\000\000\000\000\000\000\000\000\000\000\002\182\000\000\000\000\000\000\002\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000<\214\000\000\000\000\002\208\000\000\000\000\000\000\000\000\000\000\000\000\000\000B\220\002\242\000\000\002\212\003\142\002\146\000\000\000\000\003\188\000j\000\000\003\198\006\208\002\222\003\228\000\005\000\000\000\000\000\000\001f\000\000\000\000\000\031\000\000\000\000\000\000\000\000\004N\000\000\003T\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000-\004\234\tR\000\000\r\170B\220\000\000#$\000\000\001N\000\000B\240\001\004\003P\b\140\000\000\000\000\000\000\003\186\0042\004\166\000\196\002&\004\240+\234\004X\005\020\000\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\024\000\000\000\000\000\000\004\142\005P\r\242\004\168\005\176\014\\\n.)n%\022\000\000,N\004\214\005\180\005\228\000\000%\212C\224D\158\000\000\000\203\000\000\000\000\000\000\005\216H(\005\246\000\000\0018\006&\000\000\002\244;\236\001\148\000\000\001\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006t\005\170\000\000\000\000\000\000!\216\000\000\004\224\000\000\000\000\005\158Hr1`\000\000W\234\000\000\000\000\000\000\000\000\000\000\000\000\004\020\006\022\004\020\002\202\000\000\000\000\000\000\005x\000\000\000\000\000\000\000\000\006\b\000\000\000\000\004\020\000\000\000\000\000\000\000\000\000\000\006\250\004\230\n\252\000\000\000\000\0050\000\000\003\160\001\132\003 \001\022\012f\000\000\000\000VH\000\000V\134\012\014\000\000K\230\005xLp\005x\000\000\001t\000\007\000\000\006\190\003\160\000\000\000\000\0116\000\000\000\000\000\000\000\000\000\000\007R\003\160\b\254\003\160\000\000\000W\000\000\000\000\002\020\000\000\000\000\000\000\012\144\000\000\000\000\003\160\003\160\000\000\003\160\000\000\000\000\004\212\000\000\000^\002&\000\000\000^\000\000\t\188\003\160\000\000\000\000\000\000\000\000\000\000\000^\015\234%j\012N\011\248-X\004\176\000\0003v-\142\011>\007\026D\022\011@\007\192\0168\011N\007\202\016\158\011P\007\230<\134D\230\007\240\016\242\011\\\b\006,Z\000\000\022L\000\000\000\000\012$\n\194\004\020\000\000\017\166\011p\b8=T\000\000Er\000\000\000\000\011t\b\128L\228\007\240\017\198\011\128\b\132MF\007\240\018tG\236\000\000\000\000\000\000\000\000\000\000\002n\nN\000\000\000\000\000\000\011\196\b\134\005\196\000^\011p\003\160\000\000\000\000\000\000*\176\000\000Mj\005x\018\148\011\242\b\144L\024\000\000X\236\000\000\000\000&\030\012 \b\184=\162\000\000-\230.\138\000\000\000\000\r\132M\142\005xF\190\005xM\242\005x\000\000\000\000\000\000\000\000\000\000Y\166\000\000\000\000\000\000\001\170\019H\000\000\000\000\000\000.HY\184\000\000\000\000\000\000\000\000\000\000\012*\019\156\000\000\000\000\012.\020\002\000\000\000\000\012@.\252\012@/T\000\000Y\238\000\000/x\000\000/\208\000\0000$\000\0000\158\000\0001\020\000\0001\144\000\0001\228\000\0002<\000\0002\158\000\0003\020\000\0003l\000\0003\206\000\0004&\000\0004\136\000\0004\224\000\0005B\000\0005\154\000\0005\252\000\0006T\000\0006\182\000\0007\014\000\000\000\000\000\000\020P\004b\020\182\000\000\000\000\000\000\b\202=\222\000\000NP\005x\021\n\000\000\012n\021\190\000\000M\186\007\240O$\007\240OD\007\240\002\190\000\000\000\000\000\000\000\000OZ\007\240\000\000\000Q\004\216\000(O\208\007\240\021\222\000\000\012\170\012\182\t\020\012\238\r\188\014\188\003\160\000b\003\016\000\000\000\000\t:\r\186\r\208\000a\005\200\000^\014\246\003\160\006\000\000^\003\184\r\156\tR\r\222\000\020\0052\r\164\000\000\004\016\000\000\000\000\006\198\005d\000\000\005\144\003\160\005\240\001\148\rX\tn\t\030\000^\000\000\rd\t\130\007\\\000\000>\n\000\000\r\142\000\000O\164\005x\000\000\014\016\014\022\000\000\0078\000\000\005x\rt\t\132\005\246\000\000\000\000\000\000\000\000\000\000\r\152'z\000\203\000\000\000\000\000\000E\172\000\000V\236\000\000\t\144\000\000\t\158\000\000\000\000\000\000\000\000\002|\000\000\000\000\000\000\015\216\004\020\000\000\004\020\000?\000\000\000\000\000\000\000\000\t\164\b`\000\000\000\218\000\0004v\000\000\019\240\004\020\004\020\000\000\024\b\004\020\004\020\t\166\t>\000\000\000\000\b\184\r|\t\184\004\176\006L\b^\004\234\nv;\236\0038\000\000\000\000\000\000\006\222\r\164\t\186\000\000\r\174\006\222\000\000\014\152\tT\000\000\000\000\000\000\005x\000}\000\240\003Z\000\000\000\000\000\000\000\000\r\180\t\204\000\000\007\218\000\000\000\000\000\000\000\000\000\000\014\156\t\194\000\000\000\000\014\144\000\000\002L\001\022\000\000\000\000\000\000\000\000\b\140\014\244\011L\014\176\t\252\000\000\014\188\n\002\000\000\000\000\014\186\005\186\002\226\000\000X\000\r\206\r\210\t\220\005\136\n&\000\000\t\224\bv\n2\000\000\r\214\r\222\t\226\014\016\r\188\017>\003\160\000\000\t\242\014\136\000\000\b\212\nD\000\000\014\138\000\000\017\248\004\228\014R\nz\014\142\000\000\018\002\006R\014V\000\000\000\000\004T\nD\nl\000\000\018 \003\160\np\000\000\0064\000\000\014\006\n\138\019\014\006\182\000\000\014\014\n\142\b\132\r\152\014\022\014\026\n\180\015\146\000\000\0142\002\230\000\000\000\000\000\000\000\000\000\215\n\196\014\004O\184\005x\000\000\001\\\n\202\014\202\000\000\000\000\000\000\000\000\000\000\000\000P,\007j\000\000\n\210\015&\000\000\000\000\000\000\000\000\000\000\000\000>^\n\250\000\000\n\220\000\252\000\000\n\230\n\234\n\188\000\000\002\184E\208\000\000\002\238\000\000PP\005x\005x\000\000\000\000\007v\000\000\011b\000\000\0068\007v\007v\000\000\011\002@\018\005xP\182\005x\011\022\000\000\000\000\000\000\011L\000\000\000\000\001\248\000\000\bF\014\130\011D\015\160\014D\000\000\000\000\b\026\b\188\014\142\000\000\000\000\011`\015\174\014P\000\000\000\000\004f\000\000WP\000\000QN7|\005x\000\000Q\146Z,\000\000Q\186\000\000\000\000\000\000\007v\000\000\000\000\011j\014\152\011l\015\190\014^\000\000\000\000R\"\012\004\014\164\000\000\000\000\000\000X\168\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\b\000\000\014\178\011p\b\216\000\000\015\182\015j\012\026\014\194\000\000\000\000\014\198\011x\t6\000\000\000\000\011\170\015p\012*\014\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005x\014z\011z\015\236\014\148\000\000R\150\001\001\011\146\014b\004\132\000x\011\154\015(\000\000\015\226\022\140\000\000\000\000\022\172\000\000\0128\000\000\002N\000\000\000\000\000\000\000\000\000\000\000\000RJ\005x\000\000\015\234\023`\000\000\000\000\023\180\000\000\000\228\011\164\015\142\000\000>*>\252\015<\000\000Rf\005x\024\026\000\000\000\000\024h\000\000\000\000\002T\000\000\000\000\024\206\000\000\000\000\000\000\012V\000\000\007\214\000\000\000\000\000\000\000\000\000\000\000\000?(\000\000\000\000?\150@8\015>\000\000R\144\005x\025\"\000\000\000\000\025\214\000\000\000\000\011\178\025\246\012\\\000\000\011\192\012D\000\245\000\167\012R\t\030\012f\015\156@\172\012d\000\000\012j\012r\011\130\000\000\004XF4\000\000\003X\000\000\012z\026d\030|\007\156\014f\bT\000\0001\210Y\248\000\000\000\000\rD\000\000\000\000\000\000\007^\000\000\000\000\007^\000\000\000\000\007^\012\180\000\000\012R\007^\015\160@\182\012\200\000\000\007^\000\000SR\000\000\000\000\007^\000\000\000\000\012\244\000\000\012\182\007\196\r*\000\000\012|F\152\r.\000\000\000\000\000\000\r8\000\000\000\000\005z\000\000\007^S\140\000\000\014\148\007^W\024\000\000\r<\014\248\012\150\016 \014\194\000\000W\144\r@\015\006\000\000\000\000\000\000\n\216\n\012\012\154\015\190A \rH\000\000\000\000\000\000\000\000\000\000\000\000\012*\000\000\000\000\012.\000\000\rN\000\000\015\"\000\000\000\000\000\000\000\000\rXF\014\000\000\000\000\012*\000\000\012.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\164\000\000\000\000\026\196\000\000\000\000\000\000\000\000&\130\000\000\000\000\000\000&\218\000\000'(\000\000\000\000'\142\000\000\000\000\000\000\000\000'\220\000\000\000\0007\178\000\000(4\000\000\000\0008(\000\000(\150\000\000\000\0008\128\000\000\006\020\027x\000\000\000\0008\186\000\000\027\204\000\000\000\00094\000\000\0282\000\000\000\0009n\000\000\000\000\000\000)\"\000\000\000\0009\194\000\000)\160\000\000\000\000:<\000\000)\214\000\000\000\000:v\000\000\000\000:\240\000\000\rD\000\000\000\000\000\000*.\000\000\000\000*\144\000\000\000\000\000\000\012n\028\128\000\000\000\000\028\230\000\000\0184\000\000\000\000G\236\000\000\000\000+^\000\000\000\000\000\000+\154\000\000\000\000\000\000\015\244\000\000\000\0000F\000\000\007\128\000\000\004<\015\146\000\000\b\002\000\000\000\000\000\000\000\000\000\000\002n\000\000\000\000\014\212\000\000\000\000\029:\000\000\029\238\000\000\000\000\000\000\030\014\000\000\000\000\030\188\014\214\030\220\000\000\031\144\000\000\000\000\000\000\000\000\031\228\000\000 J\000\000\000\000\000\000\000\000\000\000;D\000\000;~\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\164\t\154\000^ \152\000\000\014\222\012\178\015p\007\202\000\000 \254\000\000\014\226\012\218\t\\\015\004\012\232\000\000!R\000\000\000\000\000\000\000\000\000\000\000\000\000\000F\190\015\138\000\000S\244\005x\"\006\000\000\000\000T\b\005x\"&\000\000\000\000\"\212\000\000\000\000\r\138\000\000\000\000\000\000\000\000\000\000\000\000\014\234\012\244\n\004\000^\000\000\021V\003\160\000\000\016D\000\000\000\000\000\000\000\000A\200\000\000\000\000B:\000\000\000\000\000\000\022\022\003\160\000\000\0228\003\160\000\000\023&\003\160\000\000\007&\000\000\r\018\nd\007<\000\000\r\146W\166\000\000\000\000\000\000\000\000\r \000\000\r,\006\138\000\000\000\000\004\0203\188\000\000\000\000\000\000\000\000\000\000X\178\000\000\000\000\b\188\004b\000\000\000\000T\\\005x\005xT\160\005x\007\244\000\000\000\000\000\000\005x\000\000\000\000\000\000\015\232\000\208\t\158\r\164\004,\r4\000\000\000<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\180\004\140\r\146\000\000\n~\014\244\000\000\015\236\006\012\002:\000\000\000\000\000\000\000^\003\160\000\000\014\b\000\000\000\000\000\000\003\160\000\000\007\240\000\000T\246\005x\000\000\007\000\000\000\000\000\000\000B\134\000\000\000\000B\162\000\000\"\244\000\000#\168\000\000\000\000#\252\000\000\000\000\000\000\000\000$b\000\000$\176\000\000\000\000\000\000\000\000\000\000.`\000\000\000\000\000\000\0000\002\192\000\000\000\000\000\000\000\000\000\000\007\248\002\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000g\000\000\000\000\000\000G\134\000\000\005x\000\000\011\254\000\000\000\000\000\000\002\138\000\000\000\000\000\000\003\"\000\000\000\000\000\000\004\150\000\000\000^\000\000\000\145\000\000\003\160\000\000\000\147\000\000\000\000\000\000G\208\007\240\000\000\000\000\004\228\000\000\000\000\000\000\000\000\002n\005\020\015 \001\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\166\000\000\014\024\000\000\000\000\000\000\000\000\005d\007 JPU\128\000\000\000\000\014>U\142\000\000\000\000\000\000\014PU\252\000\000\000\000\000\000\000\000"), (16, "\005V\001\017\002f\002g\001m\000;\000\227\001\021\006\167\000\231\000\232\000\188\000\227\003\144\000\193\000\231\000\232\002\138\005W\005n\007 \005^\007\028\003S\000\188\002\139\006\187\001\254\001\015\000\188\005_\005o\000\197\000\227\001\021\001\024\000\231\001\002\002\162\005\017\005V\003\018\002f\002g\001m\005\017\000\194\001\003\006\245\007\004\0007\000\227\007!\001\237\000\231\000\232\007\029\002\138\005W\005n\005`\005^\002\005\002\005\005r\002\139\002\t\002\t\001\021\001\021\005_\005o\001\005\005\019\003^\003`\003b\001\237\002\162\005\019\006\203\004\180\006\229\003j\005\017\003\031\000\231\002\005\000\149\001m\005\020\002\t\002\018\001\021\0043\005\027\005\020\005a\001\021\005D\005`\005\027\002\164\003j\005r\0050\000\231\005b\0044\002\n\002\n\003\018\004K\001\015\002j\005|\002\166\000\231\005\019\001\021\001)\001\\\002\001\003\150\003\151\006\246\005s\002\173\003\018\002\011\003\018\000@\002\005\005t\002\n\005\020\002\t\005a\001\021\001\029\005\027\003'\002\164\003$\005+\000?\003\167\005b\005u\002+\003\160\003~\000\234\002\011\002j\002\"\002\166\000\231\005h\006\247\007\005\000D\001\145\005j\006\254\001\021\005s\002\173\0007\003c\0007\002\177\0007\005t\002\178\001_\003q\005l\006\175\002\n\003m\002\167\001\145\002\233\006\196\006\176\001\029\002-\005u\001\030\000\231\002\183\001@\001\145\002\169\003\144\005m\001\029\005h\003'\002\"\000\234\0035\005j\003\020\000\188\006\255\000\198\001\254\006\227\002\022\002\177\001A\001 \002\178\002\185\006\177\005l\004\182\001Y\003\018\002\167\005V\002\233\002f\002g\001m\001\"\000G\006{\006\178\002\183\002-\001\145\002\169\000\231\005m\007\000\000:\002\138\005W\005n\000\227\005^\001#\000\231\000\232\002\139\000N\005z\001\021\001)\005_\005o\002.\002\185\007\001\004\221\002\023\001&\002\162\001\015\005V\006\210\002f\002g\001m\001\021\001\024\0074\002g\001m\004\223\000\227\001\"\002,\000\231\001\002\001F\002\138\005W\006\234\005`\005^\001s\001\"\005r\002\139\000\234\006\179\006\180\001#\005_\005o\003\177\001\159\001m\001\021\001)\002.\002\162\000b\001#\006\181\006\182\003\150\003\151\001+\001\021\001)\001,\006\145\001\242\004\187\001-\001.\006\183\003~\003w\005a\002\016\000E\005`\000\231\002\164\003\178\004D\0043\003\159\005b\004\215\000\233\003\160\003~\005\248\001m\002j\001\015\002\166\000\231\003z\0044\000\234\001\021\001\024\004;\0015\005\132\005s\002\173\000\231\001\002\004F\000f\001+\005t\0009\001,\000=\005a\000\211\001-\001.\001P\002\164\001+\003\018\003\176\001,\005b\005u\004H\001-\001.\002\252\001m\002j\002\"\002\166\000\231\005h\0075\000H\002\166\000\231\005j\005\146\001/\005s\002\173\0019\000\234\002\"\002\177\004I\005t\002\178\000\188\006\141\005l\000\193\002\021\004\216\002\167\004J\002\233\002&\001\021\001\029\002-\005u\001\030\000\231\002\183\001@\001\145\002\169\001\025\005m\004\191\005h\002/\007\016\006\236\002-\005j\000\188\000\231\001\241\001\254\004F\005v\004\003\002\177\001A\001 \002\178\002\185\000m\005l\006\193\001W\003S\002\167\005V\002\233\002f\002g\001m\004H\003\018\001t\000\234\002\183\001\237\001\145\002\169\006\197\005m\000O\007\017\002\138\005W\005n\002\005\005^\001\021\000\146\002\t\002\139\001\021\006\177\004I\003\018\005_\005o\002.\002\185\000\129\003\179\003\180\001&\002\162\001\015\005V\006\178\002f\002g\001m\001\021\001\024\002.\001\015\003a\003`\003b\001\"\007\020\001\021\001\024\001F\002\138\005W\005n\005`\005^\003\160\003~\006\133\002\139\001\015\002\n\000c\001#\005_\005o\001\021\001\024\001\237\001\021\001)\002\030\002\162\001\237\003\194\000k\002\028\000\133\002\005\000\234\002\011\000\137\002\t\002\005\001\021\007\021\003S\002\t\000\231\001\021\001\237\005a\000\156\002\027\005`\003\018\002\164\003\019\005x\0043\002\005\005b\0014\003S\002\t\003\178\001\021\003\018\002j\000\163\002\166\000\231\000\227\0044\000\165\000\231\000\232\0045\0015\000\175\005s\002\173\0013\000n\004\215\002\n\001+\005t\000\192\001,\002\n\005a\000\234\001-\001.\001P\002\164\003\137\003`\003b\004/\005b\005u\001\029\002\011\000\234\004c\002\n\002j\002\011\002\166\000\231\005h\0007\003\156\003`\003b\005j\000\191\001/\005s\002\173\0019\000\166\001\233\002\177\002\011\005t\002\178\003\213\001 \005l\002f\002g\001m\002\167\000\188\002\233\003\181\001\254\000\227\003 \005u\000\231\001\002\002\183\000\170\001\145\002\169\001h\005m\000\173\005h\000\234\001\180\005\234\005\238\005j\007(\002g\001m\005\012\005\242\003(\001\029\002\177\000\176\001\015\002\178\002\185\003\169\005l\0007\001\021\001)\002\167\004e\002\233\003j\001\005\005V\000\231\002f\002g\001m\002\183\006!\001\145\002\169\006}\005m\001\"\007\024\000\234\0077\0078\003\239\002\138\007:\002\"\000\227\005^\002\004\000\231\000\232\002\139\001\015\001\233\001#\002\185\005_\007<\001\021\001\024\001\021\004h\000\234\003\018\002\162\003'\005V\000\234\002f\002g\001m\007K\003j\007*\007\025\000\231\002\"\002-\002i\005\017\000\231\007C\000\234\002\138\007D\005=\005`\005^\002 \002\026\005\245\002\139\002\166\000\231\001\002\000\218\005_\007L\001\"\003\241\001\015\006\173\003\018\001\145\002\162\002#\001\021\001)\002-\000\219\0007\000\231\005?\005\019\000\224\001#\007+\001+\002\166\000\231\004i\001\021\001)\005a\001-\001.\005`\003\018\002\164\005\237\005\020\005A\006\153\005b\0044\005\027\004n\003\224\004k\005\"\002j\000\239\002\166\000\231\002.\001\237\000\222\002\231\001\238\006\185\001/\001\145\005s\002\173\000\242\002\005\007?\002\167\0007\002\t\005B\001\021\003\193\005a\000\225\001\029\000\235\002\168\002\164\001\145\002\169\001\235\002\026\005b\005u\002.\003%\000\250\001+\000\234\002j\001,\002\166\000\231\005h\001-\001.\000\253\000\188\005j\003\132\001\254\005s\002\173\000\240\007P\002\"\002\177\002\"\003\200\002\178\003,\002\n\005l\006\192\001\021\003\005\002\167\005C\002\233\002\004\001>\001\029\001a\005u\001\030\000\234\002\183\001@\001\145\002\169\002\011\005m\001\029\005h\002s\002\"\003\026\002-\005j\002-\000\231\001\t\000\231\000\234\005?\000\234\002\177\001A\001 \002\178\002\185\000\243\005l\000\251\001B\003\018\002\167\005V\002\233\002f\002g\001m\001\"\005A\003\030\001\012\002\183\002-\001\145\002\169\000\231\005m\001\028\000\234\002\138\005W\006\194\005\179\005^\001#\000\231\001\002\002\139\003\179\003\180\001\021\001)\005_\005o\001=\002\185\003\242\005B\0018\001&\002\162\001\015\005V\001O\002f\002g\001m\001\021\001\024\002.\003\018\002.\003.\001M\001\"\003\160\003~\007C\001F\002\138\007D\005\196\005`\005^\001<\001\"\000\234\002\139\000\234\006\179\006\180\001#\005_\007G\003\230\0039\001m\001\021\001)\002.\002\162\001e\001#\006\181\006\182\003O\003~\001+\001\021\001)\001,\006\140\001|\003\241\001-\001.\006\183\003~\001\237\005a\0030\002\003\005`\004z\002\164\001I\003\018\0043\002\005\005b\003+\001\221\002\t\000\234\001\021\003\018\002j\003\018\002\166\000\231\0011\0044\005\236\000\234\003\247\004:\0015\002+\005s\002\173\004\228\004{\006\201\004|\001+\005t\001\223\001,\002+\005a\003\018\001-\001.\001P\002\164\001+\003\018\002\004\001,\005b\005u\000\234\001-\001.\006\252\002\n\002j\006\211\002\166\000\231\005h\001\232\000\234\004}\0053\005j\003'\001/\005s\002\173\0019\007J\001\237\002\177\002\011\002\r\002\178\002;\006\141\005l\006|\000\234\002\005\002\167\005?\002\233\002\t\005\241\001\021\003E\005u\006\128\004\232\002\183\001^\001\145\002\169\002\004\005m\004~\005h\003\141\003~\005A\000\227\005j\000\234\000\231\001\002\004\127\004\128\003\172\004\129\002\177\004\024\0057\002\178\002\185\000\227\005l\004<\000\231\000\232\002\167\005V\002\233\002f\002g\001m\002\n\001\175\000\234\005B\002\183\003\190\001\145\002\169\004\158\005m\003S\0066\002\138\005W\005\237\001d\005^\004z\000\234\002\011\002\139\003\018\005\017\003S\002,\005_\006\129\001\029\002\185\006\154\001\030\002>\004\131\002\162\003\018\002,\002A\004\133\004\143\000\188\000\227\004\136\001\254\000\231\001\002\004{\004\157\004|\001l\001m\002D\004\154\005\029\001\015\001 \005`\005\019\006S\0018\001\021\001\024\003\164\003`\003b\0046\006V\002J\003'\001n\002K\004\155\001p\001q\005\020\006\161\003`\003b\004}\005\027\005\237\003\018\000\227\005\031\006\253\000\231\000\232\000\188\001\015\004\146\001\254\0007\002V\005a\001\021\001)\004L\002L\002\164\001\173\003\204\001&\000\234\005b\005\029\001\029\001\021\000\234\001\030\003o\002j\001\015\002\166\000\231\004~\005\017\001\"\001\021\001)\001{\0043\000\234\005s\002\173\004\127\004\128\001\132\004\129\002]\006\132\002b\002r\001 \001#\0044\001\015\002\128\000\234\004S\001\021\001)\001\021\001)\001\141\005u\001\140\003\018\003\218\001u\005\019\003\144\002\"\004\158\001\021\005h\004T\002\136\003\018\001\237\005j\001v\002\015\000\234\000\231\001\179\002\236\005\020\002\177\002\005\0046\002\178\005\027\002\t\005l\001\021\005\028\004\131\002\167\001&\002\233\0034\004\133\004\143\002-\003\251\003~\000\231\002\183\0015\001\145\002\169\001\190\005m\001\"\006\166\004\154\001+\002M\000\234\001,\000\234\000\234\003\r\001-\001.\004\159\000\234\002f\002g\001m\001#\002\185\003\018\002\"\004\155\002\n\001\021\001)\004\214\004\220\003}\003\022\002\138\002f\002g\001m\000\234\001\135\0046\001/\002\139\003\149\0019\003\"\002\011\000\234\006f\001\144\002\138\001\145\001t\003\018\006/\002\162\003\018\002-\002\139\0033\000\231\001\195\002.\001\029\005\220\001\237\001\030\006\189\002)\0038\003I\002\162\003\150\003\151\003\018\002\005\003Z\0015\002\"\002\t\003\018\001\021\006D\003\\\000\234\001+\003n\003|\001,\003\018\001 \004\255\001-\001.\003\152\003\168\003\130\003\143\003\171\003\160\003~\001\029\005V\000\234\006<\003~\003\162\006a\003\144\003\018\002-\003\018\000\146\000\231\003\199\000\234\003\203\003\209\001/\002\164\005W\0019\002\n\005^\002.\003\215\002\"\003\186\000\146\000\234\003\189\002j\005_\002\166\000\231\002\164\001&\006\171\003~\000\234\000\234\002\011\003\235\002\170\002\173\000\231\000\234\002j\003\201\002\166\000\231\001\"\003\147\000\234\003\205\006\127\000\234\000\234\002-\002\170\002\173\000\231\005`\003\219\001\209\002\174\000\234\000\234\001#\001\206\001\029\001\212\001\015\001\030\001\021\001)\000\234\002.\001\021\001)\003\018\002\174\005Y\003\236\000\234\003\240\000\234\000\234\002\177\001\"\006-\002\178\001\220\003\226\003\018\000\234\001\226\001 \002\167\005a\002\233\003\245\004*\003\250\002\177\000\231\001#\002\178\002\183\005b\001\145\002\169\001\021\001)\002\167\003\144\002\233\001\029\003\150\003\151\001\030\003\018\003\255\0015\002\183\002.\001\145\002\169\005c\002\173\004\t\001+\002\185\004\015\001,\005e\003\018\004\026\001-\001.\003\152\003\168\004%\001&\001 \003\160\003~\0047\002\185\004)\005f\002f\002g\001m\004#\002f\002g\001m\001\"\003\184\005h\004>\003\144\000\234\001/\005j\002\138\0019\004C\001+\002\138\000\234\001,\000\234\002\139\001#\001-\001.\002\139\005l\007\012\001\021\001)\001\237\006\223\0048\002u\002\162\000\231\001\234\001&\002\162\000\234\002\005\004N\004G\001\247\002\t\005m\001\021\000\234\005\007\002Q\000\234\000\231\001\"\004\149\000\234\004X\001\249\004o\002\b\000\234\003\018\004q\003\018\004\135\000\234\002\025\000\234\004\145\004\162\001#\006(\003\018\003\150\003\151\007\014\001\021\001)\0015\000\234\003\018\004\168\006$\002:\002=\004\172\001+\003\018\002\n\001,\004\200\002@\002C\001-\001.\003\152\003\168\004\246\002I\002\164\003\160\003~\003\018\002\164\0055\003\018\002R\002\011\002U\003\018\002\\\002j\000\234\002\166\000\231\002j\002a\002\166\000\231\001/\003\150\003\151\0019\002\170\002\173\0015\000\234\002\170\002\173\002f\002g\001m\000\234\001+\000\234\004w\001,\004\132\000\234\000\234\001-\001.\003\152\003\168\002\138\002\174\004\140\003\160\003~\002\174\002q\000\234\002\139\000\227\004\151\000\234\000\231\000\232\006\216\003\018\000\234\004\181\002f\002g\001m\002\162\001/\000\234\002\177\0019\004\251\002\178\002\177\002\127\000\234\002\178\004\222\005'\002\167\004\248\002\233\003\018\002\167\005\003\002\233\005\023\005\017\005\000\002\183\005#\001\145\002\169\002\183\005\006\001\145\002\169\002\135\005\014\005:\002f\002g\001m\005$\000\227\002\149\000\231\000\231\000\232\003\018\005V\003\018\005N\002\185\005Z\002\138\003\018\002\185\003\018\006.\003\018\005\019\001\029\002\139\003\018\001\030\0064\003\018\007:\006\213\002\164\005^\003\018\005d\005*\005g\002\162\005\017\005\020\002\227\005_\000\234\002j\005\027\002\166\000\231\006;\005&\000\234\001 \002f\002g\001m\006>\002\170\002\173\0054\003\018\000\234\006`\000\234\003\018\002\253\002i\000\234\002\138\003\021\003\144\000\234\000\234\005`\005\019\003\012\002\139\006~\002j\002\174\002\166\000\231\006m\003\014\006\136\000\234\0058\000\234\005<\002\162\006\138\005\020\000\234\005@\006\174\005L\005\027\005S\001&\000\234\0056\005]\002\177\002\164\005i\002\178\002f\002g\001m\005p\005a\003\017\002\167\001\"\002\233\002j\005\025\002\166\000\231\000\234\005b\002\138\002\183\003\018\001\145\002\169\000\234\002\170\002\173\002\139\001#\003\018\000\234\003*\006X\006j\001\021\001)\006\130\005c\002\173\006\186\002\162\007;\003\024\002\167\002\185\000\234\003)\002\174\003\018\003#\003&\002\164\000\234\002\168\0032\001\145\002\169\003\018\000\234\005f\0037\003=\000\234\002j\003D\002\166\000\231\003C\003H\005h\002\177\003{\003\129\002\178\005j\002\170\002\173\003\142\003\150\003\151\002\167\003\146\002\233\0015\003\148\003\161\003\170\003\175\005l\003\187\002\183\001+\001\145\002\169\001,\006\200\003\185\002\174\001-\001.\006\164\006\165\003\188\007=\002\164\003\160\003~\005m\003\192\000\234\002f\002g\001m\003\202\002\185\003\198\002j\003\214\002\166\000\231\002\177\003\208\007H\002\178\001/\002\138\003\210\0019\002\170\002\173\002\167\007M\002\233\002\139\003\233\003\221\003\232\003\227\003\231\006C\002\183\003\244\001\145\002\169\000\227\003\249\002\162\000\231\000\232\004W\002\174\003\254\002f\002g\001m\001\237\004\001\004\005\003\016\004\r\004\020\004\031\004V\004O\002\185\002\005\004P\002\138\004U\002\t\004Y\001\021\004Z\002\177\004y\002\139\002\178\005\017\004r\004s\004x\006A\004\142\002\167\001\237\002\233\004\138\003\028\002\162\004\139\004\141\004\153\004\150\002\183\002\005\001\145\002\169\004\152\002\t\004\161\001\021\004\163\001\029\002f\002g\001m\004\164\004\169\004\173\004\177\002\164\005\019\002\n\004\195\004\201\004\205\004\236\002\185\002\138\005\001\005\030\005(\002j\005U\002\166\000\231\002\139\005O\005\020\005P\005T\002\011\006,\005\027\002\170\002\173\005[\005H\005k\002\162\005\231\002\n\002f\002g\001m\005\239\005\252\006\007\006&\0063\0065\006:\002\164\006=\006I\006_\002\174\002\138\006h\006\169\002\011\006\191\007/\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\006\027\000\000\000\000\000\000\000\000\002\170\002\173\002\162\002\177\000\000\000\000\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\001\"\002\233\000\000\002f\002g\001m\000\000\000\000\002\174\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\001#\002\138\000\000\000\000\000\000\000\000\001\021\001)\002j\002\139\002\166\000\231\000\000\000\000\002\177\006\021\002\185\002\178\000\000\000\000\002\170\002\173\002\162\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\174\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\006\r\002\185\002\170\002\173\000\000\000\000\001+\002\162\002\177\001,\000\000\002\178\000\000\001-\001.\000\000\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\002\174\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003e\000\000\002j\000\000\002\166\000\231\000\000\000\000\002\177\000\000\000\000\002\178\000\000\002\185\002\170\002\173\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\002\174\002\138\002f\002g\001m\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\000\000\002\185\002\138\000\000\000\000\002\170\002\173\002\162\002\177\000\000\002\139\002\178\000\000\000\000\000\000\000\000\006\001\000\000\002\167\000\000\002\233\000\000\001\237\002\162\000\000\003\212\000\000\002\174\002\183\000\000\001\145\002\169\002\005\000\000\000\000\000\000\002\t\000\000\001\021\000\000\000\000\000\000\000\000\001\198\001m\000\000\000\000\000\000\000\000\000\000\002\177\000\000\002\185\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\001n\002z\000\000\001p\001q\000\000\000\000\002\183\002\164\001\145\002\169\002f\002g\001m\000\000\000\000\002\n\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\164\000\000\002\138\002f\002g\001m\000\000\002\185\002\170\002\173\002\139\002\011\002j\000\000\002\166\000\231\005\249\000\000\002\138\005\210\002\254\002\255\000\000\002\162\002\170\002\173\002\139\000\000\001\237\000\000\002\174\003\223\005\209\001\237\000\000\000\000\003\229\000\000\002\005\002\162\000\000\000\000\002\t\002\005\001\021\000\000\002\174\002\t\001\237\001\021\000\000\003\238\000\000\004\218\000\000\001\133\002\178\006\012\002\005\000\000\000\000\000\000\002\t\002\167\001\021\002\233\000\000\001v\000\000\002\177\000\231\000\000\002\178\002\183\000\000\001\145\002\169\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\002\n\000\000\002\164\000\000\002\183\002\n\001\145\002\169\002f\002g\001m\000\000\002\185\005\217\002j\000\000\002\166\000\231\002\164\002\011\002\n\000\000\000\000\002\138\002\011\000\000\002\170\002\173\002\185\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\002\160\000\000\002\011\000\000\000\000\002\170\002\173\002\162\000\000\000\000\000\000\002\174\001\135\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\001\136\000\000\001\145\001t\000\000\002\174\002\138\000\000\000\000\000\000\000\000\000\000\002\177\000\000\002\139\002\178\000\000\000\000\000\000\000\000\002\172\000\000\002\167\001\237\002\233\000\000\003\246\002\162\002\177\000\000\000\000\002\178\002\183\002\005\001\145\002\169\000\000\002\t\002\167\001\021\002\233\001\029\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\185\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\002\176\002\185\002\170\002\173\000\000\000\000\000\000\002\162\000\000\002\n\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\164\000\000\000\000\000\000\002\174\002\138\000\000\000\000\002\011\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\002\234\000\000\000\000\000\000\000\000\002\170\002\173\002\162\002\177\000\000\000\000\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\001\"\002\233\000\000\002f\002g\001m\000\000\000\000\002\174\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\001#\002\138\000\000\000\000\000\000\000\000\001\021\001)\002j\002\139\002\166\000\231\000\000\000\000\002\177\002\232\002\185\002\178\000\000\000\000\002\170\002\173\002\162\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\174\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\002\241\002\185\002\170\002\173\000\000\000\000\001+\002\162\002\177\001,\000\000\002\178\000\000\001-\001.\000\000\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\002\174\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003u\000\000\002j\000\000\002\166\000\231\000\000\000\000\002\177\000\000\000\000\002\178\000\000\002\185\002\170\002\173\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\002\174\002\138\002f\002g\001m\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\002\244\002\185\002\138\000\000\000\000\002\170\002\173\002\162\002\177\000\000\002\139\002\178\000\000\000\000\000\000\000\000\003\t\000\000\002\167\000\000\002\233\000\000\001\237\002\162\000\000\006d\000\000\002\174\002\183\000\000\001\145\002\169\002\005\000\000\000\000\000\000\002\t\000\000\001\021\000\000\000\000\000\000\000\000\001l\001m\000\000\000\000\000\000\000\000\000\000\002\177\000\000\002\185\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\001n\002K\000\000\001p\001q\000\000\000\000\002\183\002\164\001\145\002\169\002f\002g\001m\000\000\000\000\002\n\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\164\000\000\002\138\002f\002g\001m\000\000\002\185\002\170\002\173\002\139\002\011\002j\000\000\002\166\000\231\004\176\000\000\002\138\000\000\000\000\000\000\000\000\002\162\002\170\002\173\002\139\000\000\000\000\000\000\002\174\001\237\004\179\000\000\006s\000\000\000\000\000\000\000\000\002\162\000\000\002\005\000\000\000\000\000\000\002\t\002\174\001\021\001\237\000\000\000\000\006v\000\000\002\177\000\000\001u\002\178\000\000\002\005\000\000\000\000\000\000\002\t\002\167\001\021\002\233\000\000\001v\000\000\002\177\000\231\000\000\002\178\002\183\000\000\001\145\002\169\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\000\000\000\000\002\164\002\n\002\183\000\000\001\145\002\169\002f\002g\001m\000\000\002\185\000\000\002j\000\000\002\166\000\231\002\164\002M\002\n\000\000\002\011\002\138\000\000\000\000\002\170\002\173\002\185\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\004\194\000\000\002\011\000\000\002N\002\170\002\173\002\162\000\000\000\000\000\000\002\174\001\135\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\001\144\000\000\001\145\001t\000\000\002\174\002\138\000\000\000\000\000\000\000\000\000\000\002\177\000\000\002\139\002\178\000\000\000\000\000\000\000\000\004\197\000\000\002\167\001\237\002\233\000\000\006y\002\162\002\177\000\000\000\000\002\178\002\183\002\005\001\145\002\169\000\000\002\t\002\167\001\021\002\233\001\029\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\185\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\004\209\002\185\002\170\002\173\000\000\000\000\000\000\002\162\000\000\002\n\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\164\000\000\000\000\000\000\002\174\002\138\000\000\000\000\002\011\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\004\212\000\000\000\000\000\000\000\000\002\170\002\173\002\162\002\177\000\000\000\000\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\001\"\002\233\000\000\002f\002g\001m\000\000\000\000\002\174\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\001#\002\138\000\000\000\000\000\000\000\000\001\021\001)\002j\002\139\002\166\000\231\000\000\000\000\002\177\000\000\002\185\002\178\000\000\000\000\002\170\002\173\002\162\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\174\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\004\240\002\185\002\170\002\173\000\000\000\000\001+\002\162\002\177\001,\000\000\002\178\000\000\001-\001.\000\000\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\002\174\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003y\000\000\002j\000\000\002\166\000\231\000\000\000\000\002\177\000\000\000\000\002\178\000\000\002\185\002\170\002\173\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\002\174\002\138\002f\002g\001m\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\004\243\002\185\002\138\000\000\000\000\002\170\002\173\002\162\004\218\000\000\002\139\002\178\004\219\000\000\000\000\000\000\004\247\000\000\002\167\000\000\002\233\000\000\000\000\002\162\000\000\000\000\000\000\002\174\002\183\000\000\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\001m\000\000\000\000\000\000\000\000\000\000\002\177\000\000\002\185\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\001n\002K\000\000\001p\001q\000\000\000\000\002\183\002\164\001\145\002\169\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\164\000\000\002\138\002f\002g\001m\000\000\002\185\002\170\002\173\002\139\000\000\002j\000\000\002\166\000\231\005\127\000\000\002\138\000\000\000\000\000\000\000\000\002\162\002\170\002\173\002\139\000\000\000\000\000\000\002\174\000\000\005\130\000\000\000\000\000\000\000\000\000\000\000\000\002\162\000\000\000\000\000\000\000\000\000\000\000\000\002\174\000\000\000\000\000\000\000\000\000\000\000\000\002\177\000\000\001u\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\000\000\001v\000\000\002\177\000\231\000\000\002\178\002\183\000\000\001\145\002\169\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\000\000\000\000\002\164\000\000\002\183\000\000\001\145\002\169\002f\002g\001m\000\000\002\185\000\000\002j\000\000\002\166\000\231\002\164\005\015\000\000\000\000\000\000\002\138\000\000\000\000\002\170\002\173\002\185\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\005\165\000\000\000\000\000\000\000\000\002\170\002\173\002\162\000\000\000\000\000\000\002\174\001\135\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\001\144\000\000\001\145\001t\000\000\002\174\002\138\000\000\000\000\000\000\000\000\000\000\002\177\005!\002\139\002\178\000\000\000\000\000\000\000\000\005\170\000\000\002\167\000\000\002\233\000\000\000\000\002\162\002\177\000\000\000\000\002\178\002\183\000\000\001\145\002\169\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\185\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\005\175\002\185\002\170\002\173\000\000\000\000\000\000\002\162\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\164\000\000\000\000\000\000\002\174\002\138\000\000\000\000\000\000\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\005\212\000\000\000\000\000\000\000\000\002\170\002\173\002\162\002\177\000\000\000\000\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\002\174\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\002\177\005\215\002\185\002\178\000\000\000\000\002\170\002\173\002\162\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\174\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\005\253\002\185\002\170\002\173\000\000\000\000\000\000\002\162\002\177\000\000\000\000\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\002\174\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\000\000\000\000\002\177\000\000\000\000\002\178\000\000\002\185\002\170\002\173\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\002\174\002\138\002f\002g\001m\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\005\255\002\185\002\138\000\000\000\000\002\170\002\173\002\162\002\177\000\000\002\139\002\178\000\000\000\000\000\000\000\000\006\003\000\000\002\167\000\000\002\233\000\000\000\000\002\162\000\000\000\000\000\000\002\174\002\183\000\000\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\001m\000\000\000\000\000\000\000\000\000\000\002\177\000\000\002\185\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\001n\002K\000\000\001p\001q\000\000\000\000\002\183\002\164\001\145\002\169\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\164\000\000\002\138\002f\002g\001m\000\000\002\185\002\170\002\173\002\139\000\000\002j\000\000\002\166\000\231\006\006\000\000\002\138\000\000\000\000\000\000\000\000\002\162\002\170\002\173\002\139\000\000\000\000\000\000\002\174\000\000\006\b\000\000\000\000\000\000\000\000\000\000\000\000\002\162\000\000\000\000\000\000\000\000\000\000\000\000\002\174\000\000\000\000\000\000\000\000\000\000\000\000\002\177\000\000\001u\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\000\000\001v\000\000\002\177\000\231\000\000\002\178\002\183\000\000\001\145\002\169\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\000\000\000\000\002\164\000\000\002\183\000\000\001\145\002\169\002f\002g\001m\000\000\002\185\000\000\002j\000\000\002\166\000\231\002\164\005\015\000\000\000\000\000\000\002\138\000\000\000\000\002\170\002\173\002\185\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\006\n\000\000\000\000\000\000\000\000\002\170\002\173\002\162\000\000\000\000\000\000\002\174\001\135\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\001\144\000\000\001\145\001t\000\000\002\174\002\138\000\000\000\000\000\000\000\000\000\000\002\177\005 \002\139\002\178\000\000\000\000\000\000\000\000\006\015\000\000\002\167\000\000\002\233\000\000\000\000\002\162\002\177\000\000\000\000\002\178\002\183\000\000\001\145\002\169\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\185\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\006\018\002\185\002\170\002\173\000\000\000\000\000\000\002\162\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\164\000\000\000\000\000\000\002\174\002\138\000\000\000\000\000\000\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\0061\000\000\000\000\000\000\000\000\002\170\002\173\002\162\002\177\000\000\000\000\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\002\174\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\002\177\0068\002\185\002\178\000\000\000\000\002\170\002\173\002\162\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\174\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\006@\002\185\002\170\002\173\000\000\000\000\000\000\002\162\002\177\000\000\000\000\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\002\174\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\000\000\001\029\002\177\000\000\001\030\002\178\000\000\002\185\002\170\002\173\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\000\000\001\145\002\169\002\164\000\000\001 \000\000\002\174\002\138\002f\002g\001m\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\006M\002\185\002\138\000\000\000\000\002\170\002\173\002\162\002\177\000\000\002\139\002\178\000\000\000\000\000\000\000\000\006R\000\000\002\167\000\000\002\233\000\000\000\000\002\162\000\000\000\000\000\000\002\174\002\183\001&\001\145\002\169\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\000\000\000\000\000\002\177\000\000\002\185\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\001#\002\233\000\000\000\000\000\000\000\000\001\021\001)\000\000\002\183\002\164\001\145\002\169\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\164\000\000\002\138\002f\002g\001m\000\000\002\185\002\170\002\173\002\139\000\000\002j\000\000\002\166\000\231\006U\000\000\002\138\000\000\000\000\000\000\000\000\002\162\002\170\002\173\002\139\000\000\000\000\001?\002\174\000\000\006\220\000\000\000\000\001\029\000\000\001+\006\147\002\162\001,\000\000\000\000\000\000\001-\001.\002\174\000\000\000\000\000\000\000\000\000\000\000\000\002\177\000\000\000\000\002\178\000\000\000\000\000\000\000\000\000\000\001 \002\167\000\000\002\233\000\000\000\000\000\000\002\177\001/\000\000\002\178\002\183\000\000\001\145\002\169\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\000\000\000\000\002\164\000\000\002\183\000\000\001\145\002\169\002f\002g\001m\000\000\002\185\000\000\002j\000\000\002\166\000\231\002\164\000\000\000\000\000\000\000\000\002\138\000\000\000\000\002\170\002\173\002\185\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\006\222\001\"\000\000\000\000\000\000\002\170\002\173\002\162\000\000\000\000\000\000\002\174\000\000\002f\002g\001m\000\000\000\000\001#\000\000\000\000\000\000\000\000\000\000\001\021\001)\000\000\002\174\002\138\000\000\000\000\000\000\000\000\000\000\002\177\000\000\002\139\002\178\000\000\000\000\000\000\000\000\006\225\000\000\002\167\000\000\002\233\000\000\000\000\002\162\002\177\000\000\000\000\002\178\002\183\000\000\001\145\002\169\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\185\002\138\000\000\001+\000\000\002j\001,\002\166\000\231\002\139\001-\001.\000\000\000\000\000\000\006\230\002\185\002\170\002\173\000\000\000\000\000\000\002\162\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\164\001/\000\000\000\000\002\174\002\138\000\000\000\000\000\000\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\006\232\000\000\000\000\000\000\000\000\002\170\002\173\002\162\002\177\000\000\000\000\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\002\174\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\002\177\000\000\002\185\002\178\000\000\006[\002\170\002\173\002\162\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\174\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\000\000\002\185\002\170\002\173\006*\000\000\000\000\002\162\002\177\000\000\000\000\002\178\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\233\000\000\000\000\000\000\002\174\001\184\001m\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\237\001}\002\177\001p\001q\002\178\000\000\002\185\002\170\002\173\000\000\000\000\002\167\000\000\002\233\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\000\000\001\145\002\169\002\164\000\000\000\000\000\000\002\174\002\138\000\000\000\000\000\000\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\002\242\002\254\002\255\002\185\000\000\000\000\005\201\002\170\002\173\002\162\000\000\000\000\000\000\002\180\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\005\137\002f\002g\001m\000\000\000\000\000\000\002\174\002\183\000\000\001\145\002\169\000\000\000\000\001\133\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\139\000\000\001v\000\000\000\000\000\231\000\000\000\000\002\185\002\180\005\135\000\000\000\000\002\162\000\000\000\000\002\167\000\000\005\137\000\000\000\000\002f\002g\001m\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\002\138\003\002\006W\002j\000\000\002\166\000\231\000\000\002\139\000\000\000\000\000\000\000\000\000\000\002\185\002\170\002\173\000\000\005\139\000\000\000\000\002\162\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\001\135\000\000\000\000\000\000\002\174\000\000\002\138\000\000\002\164\000\000\001\136\000\000\001\145\001t\002\139\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\005\141\000\000\000\000\002\162\000\000\000\000\002\180\000\000\002\170\002\173\000\000\000\000\000\000\002\167\000\000\005\137\001\029\000\000\002f\002g\001m\000\000\000\000\002\183\000\000\001\145\002\169\000\000\002\164\000\000\002\174\000\000\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\003c\002\185\000\000\000\000\000\000\005\144\002\170\002\173\002\162\000\000\002\180\002f\002g\001m\000\000\000\000\000\000\002\167\000\000\005\137\000\000\002\164\000\000\000\000\000\000\000\000\002\138\002\183\002\174\001\145\002\169\000\000\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\149\002\170\002\173\002\162\000\000\000\000\000\000\002\185\000\000\000\000\002\180\002f\002g\001m\001\"\000\000\000\000\002\167\000\000\005\137\000\000\000\000\000\000\002\174\000\000\000\000\002\138\002\183\002\164\001\145\002\169\001#\000\000\000\000\002\139\000\000\000\000\001\021\001)\000\000\002j\000\000\002\166\000\231\005\154\000\000\000\000\002\162\000\000\002\180\000\000\002\185\002\170\002\173\000\000\000\000\002\167\000\000\005\137\000\000\002f\002g\001m\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\174\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\000\000\000\000\000\000\002\185\002\170\002\173\005\159\001+\000\000\002\162\001,\000\000\000\000\002\180\001-\001.\000\000\000\000\003f\000\000\002\167\000\000\005\137\000\000\002\164\000\000\002\174\000\000\000\000\000\000\002\183\000\000\001\145\002\169\000\000\000\000\002j\000\000\002\166\000\231\003g\000\000\000\000\002f\002g\001m\000\000\000\000\002\170\002\173\000\000\000\000\002\180\000\000\002\185\000\000\000\000\000\000\002\138\002\167\000\000\005\137\000\000\000\000\000\000\000\000\002\139\000\000\000\000\002\183\002\174\001\145\002\169\002\164\000\000\000\000\005\182\000\000\000\000\002\162\000\000\002f\002g\001m\000\000\002j\000\000\002\166\000\231\000\000\000\000\000\000\000\000\002\185\000\000\000\000\002\180\002\170\002\173\000\000\000\000\000\000\000\000\002\167\006]\005\137\002f\002g\001m\000\000\000\000\000\000\000\000\002\183\000\000\001\145\002\169\000\000\000\000\002\174\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\139\000\000\000\000\000\000\002f\002g\001m\000\000\002\185\000\000\005\187\000\000\000\000\002\162\002\164\000\000\002\180\000\000\000\000\002\138\000\000\000\000\000\000\002\167\000\000\005\137\002j\002\139\002\166\000\231\000\000\000\000\000\000\002\183\000\000\001\145\002\169\005\192\002\170\002\173\002\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002f\002g\001m\000\000\002i\000\000\000\000\000\000\000\000\002\185\000\000\000\000\002\174\000\000\000\000\002\138\002j\000\000\002\166\000\231\000\000\000\000\000\000\002\139\000\000\000\000\000\000\000\000\000\000\002\164\000\000\000\000\000\000\005\204\000\000\000\000\002\162\000\000\002\180\000\000\000\000\002j\000\000\002\166\000\231\002\167\000\000\005\137\000\000\002f\002g\001m\000\000\002\170\002\173\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\000\000\002\138\000\000\001\198\001m\002j\000\000\002\166\000\231\002\139\000\000\000\000\002\174\000\000\000\000\000\000\002\185\002\170\002\173\005\207\002\167\000\000\002\162\001n\002z\000\000\001p\001q\000\000\000\000\002\168\000\000\001\145\002\169\000\000\000\000\000\000\002\164\002\180\002\174\000\000\000\000\000\000\000\000\000\000\002\167\000\000\005\137\000\000\002j\000\000\002\166\000\231\000\000\000\000\002\183\000\000\001\145\002\169\000\000\000\000\002\170\002\173\000\000\000\000\002\180\005\210\002\254\002\255\000\000\000\000\000\000\002\167\000\000\005\137\000\000\000\000\000\000\000\000\002\185\000\000\000\000\002\183\002\174\001\145\002\169\002\164\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\001\133\000\000\002\138\000\000\002\185\000\000\000\000\002\180\002\170\002\173\002\139\000\000\001v\000\000\002\167\000\231\005\137\002f\002g\001m\005\224\000\000\000\000\002\162\002\183\000\000\001\145\002\169\000\000\000\000\002\174\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\139\000\000\005\213\005\218\000\000\000\000\000\000\000\000\002\185\000\000\005\228\000\000\000\000\002\162\000\000\000\000\002\180\002f\002g\001m\000\000\000\000\000\000\002\167\000\000\005\137\000\000\000\000\000\000\000\000\000\000\000\000\002\138\002\183\000\000\001\145\002\169\000\000\000\000\001\135\002\139\000\000\000\000\000\000\000\000\000\000\000\000\002\164\000\000\001\136\000\000\001\145\001t\002\162\000\000\000\000\000\000\002\185\000\000\002j\000\000\002\166\000\231\001l\001m\000\000\000\000\002f\002g\001m\000\000\002\170\002\173\000\000\001l\001m\000\000\002\164\000\000\000\000\006B\000\000\002\138\001n\002K\000\000\001p\001q\000\000\002j\002\139\002\166\000\231\002\174\001n\002K\000\000\001p\001q\000\000\000\000\002\170\002\173\002\162\000\000\000\000\000\000\001\029\000\000\000\000\001\030\002L\000\000\001@\000\000\000\000\000\000\002\164\000\000\002\180\000\000\000\000\002L\002\174\000\000\000\000\002\167\000\000\005\137\002j\000\000\002\166\000\231\001A\001 \000\000\002\183\000\000\001\145\002\169\001U\002\170\002\173\000\000\000\000\000\000\000\000\000\000\000\000\002\180\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\005\137\000\000\002\185\000\000\001u\002\174\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\001u\001v\000\000\000\000\000\231\000\000\002j\001&\002\166\000\231\000\000\000\000\001v\000\000\000\000\000\231\002\180\002\185\002\170\002\173\000\000\000\000\001\"\002\167\000\000\006p\001F\002f\002g\001m\000\000\000\000\000\000\002\183\000\000\001\145\002\169\000\000\002M\001#\002\174\000\000\002\138\000\000\000\000\001\021\001)\000\000\000\000\002M\002\139\000\000\000\000\000\000\002f\002g\001m\002\185\000\000\004\214\004\220\000\000\000\000\002\162\000\000\000\000\002\180\000\000\001\135\002\138\002O\004\220\000\000\002\167\000\000\006Y\000\000\002\139\001\144\001\135\001\145\001t\000\000\002\183\000\000\001\145\002\169\000\000\000\000\001\144\002\162\001\145\001t\000\000\0015\000\000\000\000\000\000\002f\002g\001m\000\000\001+\000\000\000\000\001,\000\000\002\185\000\000\001-\001.\001P\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\139\000\000\000\000\000\000\000\000\000\000\002\164\000\000\000\000\000\000\000\000\000\000\000\000\002\162\001/\000\000\000\000\0019\002j\000\000\002\166\000\231\000\000\000\000\000\000\000\000\002f\002g\001m\000\000\002\170\002\173\000\000\002\164\000\000\000\000\004z\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\002\174\000\000\000\000\000\000\000\000\002\170\002\173\002f\002g\001m\002\162\000\000\004{\006\238\004|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\164\002\180\002\174\000\000\000\000\005\023\000\000\000\000\002\167\000\000\006#\000\000\002j\000\000\002\166\000\231\000\000\000\000\002\183\004}\001\145\002\169\000\000\000\000\002\170\002\173\000\000\000\000\002\180\005\199\000\000\000\000\000\000\000\000\000\000\002\167\000\000\006\030\000\000\002f\002g\001m\002\185\000\000\000\000\002\183\002\174\001\145\002\169\002\164\000\000\000\000\000\000\000\000\002\138\004~\000\000\000\000\000\000\000\000\000\000\002j\002\139\002\166\000\231\004\127\004\128\000\000\004\129\002\185\000\000\000\000\002\180\002\170\002\173\002\162\000\000\000\000\000\000\002\167\000\000\005\200\002i\002f\002g\001m\000\000\000\000\000\000\002\183\000\000\001\145\002\169\004\158\002j\002\174\002\166\000\231\002\138\000\000\000\000\002f\002g\001m\000\000\000\000\002\139\000\000\000\000\000\000\000\000\000\000\000\000\002\185\000\000\000\000\002\138\004\131\006\240\002\162\000\000\002\180\004\133\004\143\002\139\000\000\000\000\000\000\002\167\000\000\005}\000\000\005\026\000\000\000\000\000\000\004\154\002\162\002\183\002\164\001\145\002\169\000\000\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\002j\000\000\002\166\000\231\004\155\000\000\000\000\000\000\000\000\002\138\002\167\002\185\002\170\002\173\000\000\000\000\000\000\002\139\000\000\000\000\002\168\000\000\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\002\162\000\000\002\164\000\000\002\174\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\000\000\000\000\002\164\002\138\000\000\002f\002g\001m\002\170\002\173\000\000\002\139\002\180\000\000\002j\000\000\002\166\000\231\000\000\002\167\000\000\002\228\000\000\000\000\002\162\000\000\002\170\002\173\005\234\002\183\002\174\001\145\002\169\000\000\000\000\005\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\164\000\000\002\174\002f\002g\001m\000\000\002\185\000\000\000\000\002\180\000\000\002j\005\243\002\166\000\231\000\000\002\167\002\138\002\182\000\000\000\000\000\000\000\000\002\170\002\173\002\139\002\183\002\180\001\145\002\169\000\000\000\000\000\000\000\000\002\167\000\000\002\186\000\000\002\162\000\000\000\000\002\164\000\000\000\000\002\183\002\174\001\145\002\169\000\000\000\000\002\185\000\000\000\000\002j\000\000\002\166\000\231\000\000\002i\000\000\000\000\002f\002g\001m\000\000\002\170\002\173\000\000\002\185\000\000\005\245\002\180\002\166\000\231\001\002\000\000\002\138\000\000\002\167\000\000\002\188\000\000\000\000\000\000\002\139\000\000\000\000\002\174\002\183\000\000\001\145\002\169\000\000\000\000\000\000\000\000\000\000\002\162\000\000\000\000\000\000\000\000\002\164\000\000\000\000\000\000\000\000\001\029\000\000\005\237\001'\000\000\002\185\002\180\002j\000\000\002\166\000\231\000\000\000\000\002\167\000\000\002\190\002f\002g\001m\002\170\002\173\000\000\000\000\002\183\000\000\001\145\002\169\001 \000\000\000\000\002\167\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\139\002\168\002\174\001\145\002\169\000\000\000\000\000\000\002\185\000\000\002f\002g\001m\002\162\000\000\002\164\000\000\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\002j\002\180\002\166\000\231\000\000\000\000\005\023\002\138\002\167\000\000\002\192\000\000\002\170\002\173\000\000\002\139\000\000\000\000\002\183\000\000\001\145\002\169\001\"\000\000\000\000\000\000\000\000\000\000\002\162\000\000\005\024\000\000\000\000\000\000\002\174\000\000\002f\002g\001m\001#\000\000\000\000\002\185\000\000\000\000\001\021\001)\000\000\000\000\000\000\002\164\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\139\002\180\000\000\002j\000\000\002\166\000\231\000\000\002\167\000\000\002\194\000\000\000\000\002\162\000\000\002\170\002\173\000\000\002\183\000\000\001\145\002\169\000\000\000\000\002i\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\002\164\000\000\000\000\002j\002\174\002\166\000\231\000\000\002\138\002\185\001+\000\000\002j\001,\002\166\000\231\002\139\001-\001.\000\000\000\000\000\000\000\000\000\000\002\170\002\173\000\000\000\000\000\000\002\162\002\180\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\196\000\000\005\026\000\000\001/\002\164\000\000\002\174\002\183\000\000\001\145\002\169\000\000\002f\002g\001m\000\000\002j\000\000\002\166\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\138\002\170\002\173\002\167\002\185\002\180\000\000\000\000\002\139\000\000\000\000\000\000\002\167\002\168\002\198\001\145\002\169\000\000\000\000\000\000\000\000\002\162\002\183\002\174\001\145\002\169\002\164\000\000\000\000\002f\002g\001m\000\000\000\000\002f\002g\001m\000\000\002j\000\000\002\166\000\231\000\000\000\000\002\138\000\000\002\185\000\000\000\000\002\180\002\170\002\173\002\139\000\000\000\000\000\000\002\167\006 \002\200\000\000\000\000\000\000\000\000\000\000\000\000\002\162\002\183\000\000\001\145\002\169\000\000\000\000\002\174\000\000\000\000\000\000\000\000\001\029\002f\002g\001m\000\000\000\000\000\000\000\000\002\164\000\000\000\000\000\000\000\000\002\185\000\000\000\000\002\138\000\000\000\000\000\000\002j\002\180\002\166\000\231\002\139\000\000\000\000\000\000\002\167\000\000\002\202\000\000\002\170\002\173\000\000\000\000\000\000\002\162\002\183\000\000\001\145\002\169\000\000\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\002\164\000\000\002\174\000\000\000\000\002i\000\000\000\000\002\138\000\000\002\185\000\000\002j\000\000\002\166\000\231\002\139\002j\000\000\002\166\000\231\000\000\000\000\000\000\002\170\002\173\000\000\000\000\002\180\002\162\000\000\000\000\000\000\000\000\000\000\002\167\001\"\002\204\000\000\000\000\000\000\001\029\002f\002g\001m\002\183\002\174\001\145\002\169\002\164\000\000\000\000\000\000\001#\000\000\000\000\000\000\002\138\000\000\001\021\001)\002j\006\143\002\166\000\231\002\139\000\000\000\000\000\000\002\185\000\000\003c\002\180\002\170\002\173\000\000\000\000\000\000\002\162\002\167\000\000\002\206\000\000\000\000\002\167\000\000\002f\002g\001m\002\183\000\000\001\145\002\169\002\164\002\168\002\174\001\145\002\169\000\000\000\000\000\000\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\002\185\000\000\000\000\001+\002\170\002\173\001,\000\000\002\180\002\162\001-\001.\000\000\000\000\000\000\002\167\001\"\002\208\000\000\000\000\000\000\000\000\002f\002g\001m\002\183\002\174\001\145\002\169\002\164\000\000\000\000\000\000\001#\000\000\000\000\006\141\002\138\000\000\001\021\001)\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\002\185\000\000\000\000\002\180\002\170\002\173\000\000\000\000\000\000\002\162\002\167\000\000\002\210\000\000\000\000\000\000\000\000\002f\002g\001m\002\183\000\000\001\145\002\169\002\164\000\000\002\174\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\002\185\000\000\000\000\001+\002\170\002\173\001,\000\000\002\180\002\162\001-\001.\000\000\000\000\003s\002\167\000\000\002\212\000\000\000\000\000\000\000\000\002f\002g\001m\002\183\002\174\001\145\002\169\002\164\000\000\000\000\000\000\000\000\000\000\000\000\003v\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\002\185\000\000\000\000\002\180\002\170\002\173\000\000\000\000\000\000\002\162\002\167\000\000\002\214\000\000\000\000\000\000\000\000\002f\002g\001m\002\183\000\000\001\145\002\169\002\164\000\000\002\174\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\002\185\000\000\000\000\000\000\002\170\002\173\000\000\000\000\002\180\002\162\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\216\000\000\000\000\000\000\000\000\002f\002g\001m\002\183\002\174\001\145\002\169\002\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\002\185\000\000\000\000\002\180\002\170\002\173\000\000\000\000\000\000\002\162\002\167\000\000\002\218\000\000\000\000\000\000\000\000\002f\002g\001m\002\183\000\000\001\145\002\169\002\164\000\000\002\174\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\002j\000\000\002\166\000\231\002\139\000\000\000\000\000\000\002\185\000\000\000\000\000\000\002\170\002\173\000\000\000\000\002\180\002\162\000\000\000\000\000\000\000\000\000\000\002\167\000\000\002\220\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\183\002\174\001\145\002\169\002\164\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\030\000\000\002j\001Q\002\166\000\231\000\000\000\000\000\000\000\000\002\185\000\000\000\000\002\180\002\170\002\173\002f\002g\001m\000\000\002\167\000\000\002\222\001S\001 \000\000\000\000\000\000\000\000\004-\002\183\002\138\001\145\002\169\002\164\000\000\002\174\000\000\000\000\002\139\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\000\000\000\000\002\162\000\000\002\185\000\000\000\000\000\000\002\170\002\173\000\000\000\000\002\180\000\000\000\000\000\000\000\000\000\000\000\000\002\167\001&\002\224\000\000\000\000\000\000\002f\002g\001m\000\000\002\183\002\174\001\145\002\169\000\000\000\000\001\"\000\000\000\000\000\000\001F\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\139\000\000\000\000\000\000\001#\002\185\000\000\000\000\002\180\000\000\001\021\001)\000\000\002\162\000\000\002\167\000\000\002\226\002\164\000\000\000\000\002f\002g\001m\000\000\002\183\000\000\001\145\002\169\000\000\002j\000\000\002\166\000\231\000\000\000\000\002\138\000\000\000\000\000\000\000\000\000\000\002\170\002\173\002\139\000\000\000\000\000\000\000\000\002\185\002f\002g\001m\000\000\000\000\000\000\000\000\002\162\000\000\0015\000\000\000\000\000\000\000\000\002\174\002\138\000\000\001+\000\000\000\000\001,\000\000\000\000\002\139\001-\001.\004b\002\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\162\000\000\000\000\002j\002\180\002\166\000\231\000\000\000\000\000\000\000\000\002\167\000\000\005\152\001/\002\170\002\173\0019\000\000\000\000\000\000\002\183\000\000\001\145\002\169\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\164\000\000\002\174\000\000\000\000\002\138\000\000\000\000\000\000\000\000\002\185\000\000\002j\002\139\002\166\000\231\000\000\000\000\000\000\002f\002g\001m\000\000\000\000\002\170\002\173\002\162\000\000\002\180\002\164\000\000\000\000\000\000\000\000\002\138\002\167\000\000\005\157\000\000\000\000\000\000\002j\002\139\002\166\000\231\002\183\002\174\001\145\002\169\000\000\000\000\000\000\000\000\002\170\002\173\002\162\000\000\000\000\000\000\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\002\185\000\000\000\000\002\180\000\000\000\000\002\174\002\138\000\000\000\000\002\167\000\000\005\162\000\000\000\000\002\139\000\000\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\162\000\000\000\000\000\000\002\180\002j\000\000\002\166\000\231\000\000\000\000\002\167\000\000\005\168\000\000\000\000\002\185\002\170\002\173\000\000\000\000\002\183\002\164\001\145\002\169\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\000\000\002\174\002\138\000\000\000\000\000\000\000\000\002\185\002\170\002\173\002\139\000\000\000\000\000\000\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\002\162\000\000\000\000\002\164\002\180\000\000\000\000\002\174\002\138\000\000\000\000\002\167\000\000\005\173\000\000\002j\002\139\002\166\000\231\000\000\000\000\002\183\000\000\001\145\002\169\000\000\000\000\002\170\002\173\002\162\000\000\000\000\000\000\002\180\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\005\178\000\000\000\000\002\185\000\000\000\000\000\000\002\174\002\183\000\000\001\145\002\169\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\164\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\000\000\002\185\002\180\002j\002\139\002\166\000\231\000\000\000\000\002\167\000\000\005\185\000\000\000\000\000\000\002\170\002\173\002\162\000\000\002\183\002\164\001\145\002\169\002f\002g\001m\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\000\000\002\174\002\138\000\000\000\000\000\000\000\000\002\185\002\170\002\173\002\139\000\000\000\000\000\000\000\000\000\000\002f\002g\001m\000\000\000\000\000\000\000\000\002\162\000\000\000\000\000\000\002\180\000\000\000\000\002\174\002\138\000\000\000\000\002\167\000\000\005\190\000\000\000\000\002\139\000\000\000\000\000\000\000\000\002\183\002\164\001\145\002\169\000\000\000\000\000\000\000\000\002\162\000\000\000\000\000\000\002\180\002j\000\000\002\166\000\231\000\000\000\000\002\167\000\000\005\195\000\000\000\000\002\185\002\170\002\173\000\000\000\000\002\183\000\000\001\145\002\169\000\000\000\000\001\029\000\000\000\000\001\030\000\000\000\000\001Q\000\000\002\164\000\000\000\000\000\000\002\174\000\000\000\000\000\000\000\000\000\000\002\185\000\000\002j\000\000\002\166\000\231\000\000\000\000\001S\001 \000\000\000\000\000\000\000\000\002\170\002\173\000\000\000\000\000\000\002\164\002\180\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\005\198\000\000\002j\001\029\002\166\000\231\001\030\002\174\002\183\001@\001\145\002\169\000\000\000\000\002\170\002\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\001m\000\000\001&\000\000\000\000\001E\001 \000\000\002\185\002\180\000\000\000\000\002\174\000\000\000\000\000\000\002\167\001\"\006\023\001n\001}\001F\001p\001q\000\000\000\000\002\183\000\000\001\145\002\169\000\000\000\000\000\000\000\000\001#\000\000\000\000\000\000\002\180\000\000\001\021\001)\006\020\000\000\000\000\002\167\001\029\006\025\000\000\001\030\002\185\000\000\001&\000\000\000\000\002\183\000\000\001\145\002\169\000\000\000\000\000\000\000\000\001~\000\000\001\127\002F\001\"\000\000\000\000\000\000\001F\000\000\001 \000\000\000\000\000\000\000\000\000\000\002\185\000\000\000\000\000\000\003;\001#\000\000\000\000\000\000\000\000\0015\001\021\001)\000\000\000\000\000\000\000\000\000\000\001+\001\133\006\199\001,\000\000\001l\001m\001-\001.\001P\000\000\000\000\000\000\001v\000\000\000\000\000\231\000\000\000\000\000\000\000\000\000\000\001&\000\000\002Z\001n\001}\000\000\001p\001q\000\000\000\000\000\000\001/\000\000\000\000\0019\001\"\000\000\000\000\000\000\000\000\0015\000\000\001l\001m\000\000\000\000\002W\000\000\001+\000\000\000\000\001,\001#\000\000\000\000\001-\001.\001P\001\021\001)\000\000\000\000\001n\001}\000\000\001p\001q\001~\000\000\001\127\002F\000\000\001\184\001m\000\000\000\000\000\000\000\000\001\135\000\000\000\000\001/\000\000\000\000\0019\002\137\000\000\000\000\001\136\000\000\001\145\001t\002\237\001}\000\000\001p\001q\000\000\000\000\000\000\000\000\001\029\001\133\000\000\001\030\000\000\001~\0015\001\127\002F\001l\001m\000\000\000\000\001v\001+\000\000\000\231\001,\000\000\000\000\000\000\001-\001.\003F\002Z\000\000\004\213\001 \000\000\001n\002K\000\000\001p\001q\002\242\002\254\002\255\003;\000\000\000\000\001\133\000\000\001\029\000\000\000\000\001\030\000\000\001/\000\000\000\000\0019\000\000\001v\003@\000\000\000\231\000\000\002L\000\000\000\000\000\000\000\000\000\000\002Z\000\000\000\000\000\000\000\000\000\000\001 \001\133\000\000\000\000\001&\000\000\000\000\000\000\000\000\000\000\003;\001\135\000\000\001v\000\000\000\000\000\231\000\000\000\000\001\"\000\000\001\136\000\000\001\145\001t\000\000\004\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001#\000\000\000\000\001u\000\000\000\000\001\021\001)\000\000\000\000\001&\000\000\003\002\003\003\001\135\001v\001\029\000\000\000\231\001\030\000\000\000\000\000\000\000\000\001\136\001\"\001\145\001t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\030\001#\001 \001\135\000\000\000\000\000\000\001\021\001)\000\000\000\000\002M\003;\001\136\0015\001\145\001t\000\000\000\000\000\000\000\000\000\000\001+\000\000\001 \001,\000\000\000\000\004\210\001-\001.\003F\004\214\004\220\003;\000\000\000\000\000\000\000\000\000\000\000\000\001\135\000\000\000\000\000\000\001l\001m\000\000\001&\000\000\004\231\001\144\000\000\001\145\001t\001/\0015\000\000\0019\000\000\000\000\000\000\004\244\001\"\001+\001n\002K\001,\001p\001q\001&\001-\001.\003F\000\000\000\000\000\000\000\000\000\000\000\000\001#\000\000\000\000\000\000\000\000\001\"\001\021\001)\000\000\000\000\000\000\000\000\000\000\002L\000\000\000\000\000\000\001/\000\000\000\000\0019\000\000\001#\000\000\000\000\000\000\000\000\000\000\001\021\001)\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\030\000\000\000\000\000\000\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\029\000\000\0015\001\030\000\000\000\000\000\000\000\000\001 \000\000\001+\001u\000\000\001,\000\000\000\000\000\000\001-\001.\003F\000\000\000\000\000\000\001v\0015\000\000\000\231\001 \000\000\000\000\000\000\000\000\001+\000\000\000\000\001,\000\000\003;\000\000\001-\001.\003F\000\000\001/\000\000\000\000\0019\000\000\000\000\000\000\000\000\001\184\001m\004\241\001&\000\000\001\184\001m\000\000\000\000\002M\000\000\000\000\000\000\000\000\001/\000\000\000\000\0019\001\"\000\000\002\237\001}\001&\001p\001q\002\237\001}\000\000\001p\001q\004\214\004\220\000\000\000\000\000\000\001#\000\000\001\"\000\000\001\135\000\000\001\021\001)\000\000\000\000\000\000\000\000\000\000\000\000\001\144\000\000\001\145\001t\000\000\001#\000\000\000\000\000\000\001\184\001m\001\021\001)\000\000\002\242\002\254\002\255\000\000\000\000\002\242\002\254\002\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\237\001}\000\000\001p\001q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001+\001\133\000\000\001,\000\000\000\000\001\133\001-\001.\004?\000\000\0015\004B\001v\000\000\000\000\000\231\000\000\001v\001+\000\000\000\231\001,\002\242\002\254\002\255\001-\001.\003F\000\000\000\000\000\000\000\000\001/\000\000\000\000\0019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\001m\000\000\000\000\003\002\005\002\000\000\000\000\001/\003\002\005)\0019\000\000\000\000\000\000\001\133\000\000\000\000\000\000\000\000\001n\001}\000\000\001p\001q\000\000\000\000\001v\000\000\000\000\000\231\000\000\000\000\000\000\000\000\000\000\001\135\000\000\000\000\000\000\000\000\001\135\000\000\006l\000\000\000\000\001\136\000\000\001\145\001t\000\000\001\136\000\000\001\145\001t\000\000\000\000\001l\001m\000\000\000\000\000\000\003\002\005\\\001~\000\000\001\127\002F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001n\001}\000\000\001p\001q\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\135\001l\001m\000\000\000\000\001\133\006o\000\000\000\000\000\000\001\136\000\000\001\145\001t\000\000\001l\001m\001v\000\000\000\000\000\231\001n\001}\000\000\001p\001q\000\000\001~\002Z\001\127\002F\000\000\000\000\000\000\000\000\001n\001}\000\000\001p\001q\000\000\000\000\000\000\000\000\006\215\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\030\000\000\000\000\000\000\006\218\000\000\000\000\001\029\001\133\000\000\001\030\001~\000\000\001\127\002F\001l\001m\000\000\000\000\000\000\001v\000\000\000\000\000\231\001 \001~\006\150\001\127\002F\000\000\001\135\002Z\000\000\000\000\001 \001n\001}\000\000\001p\001q\001\136\000\000\001\145\001t\003V\000\000\001\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\006\135\001\133\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002Z\001&\000\000\001v\000\000\000\000\000\231\000\000\000\000\000\000\001~\001&\001\127\001\149\002Z\000\000\001\"\000\000\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\000\000\001\136\000\000\001\145\001t\000\000\001#\000\000\000\000\000\000\000\000\000\146\001\021\001)\000\000\000\000\001#\000\000\001\133\000\000\000\000\000\000\001\021\001)\001l\001m\000\000\000\000\000\000\001\135\001v\000\000\000\000\000\231\000\000\000\000\000\000\000\000\000\000\001\136\000\000\001\145\001t\001\135\001n\001}\000\000\001p\001q\000\000\002f\002g\001m\001\136\001\182\001\145\001t\000\000\000\000\000\000\000\000\0015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001+\000\000\0015\001,\006\029\000\000\000\000\001-\001.\006\157\001+\000\000\000\000\001,\000\000\000\000\000\000\001-\001.\001~\000\000\001\127\001\170\000\000\001l\001m\000\000\000\000\001\135\000\000\000\000\000\000\000\000\001/\000\000\000\000\0019\000\000\001\136\000\000\001\145\001t\000\000\001/\001n\001}\003]\001p\001q\000\000\001l\001m\000\000\000\000\001\133\001l\001m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\000\000\000\000\000\231\001n\001}\000\000\001p\001q\001n\001}\000\000\001p\001q\001\168\002i\000\000\000\000\000\000\001\172\001l\001m\001~\000\000\001\127\001\202\000\000\002j\000\000\002\166\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001n\001}\000\000\001p\001q\000\000\000\000\000\000\001~\000\000\001\127\001\170\000\000\001~\000\000\001\127\001\170\001\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\135\000\000\001v\000\000\000\000\000\231\000\000\000\000\000\000\000\000\001\136\000\000\001\145\001t\000\000\000\000\001\133\001~\000\000\001\127\002F\001\133\000\000\001l\001m\000\000\000\000\002\167\001v\000\000\000\000\000\231\000\000\001v\001\205\000\000\000\231\002\168\000\000\001\145\002\169\000\000\000\000\001n\001}\000\000\001p\001q\000\000\000\000\000\000\000\000\001\133\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\030\000\000\001v\000\000\000\000\000\231\000\000\001\135\000\000\000\000\000\000\000\000\000\000\006\019\000\000\001\029\000\000\001\136\001\030\001\145\001t\000\000\000\000\000\000\001 \001~\000\000\001\127\002F\000\000\000\000\000\000\000\000\001\135\003V\000\000\005V\000\000\001\135\000\000\000\000\000\000\001 \001\136\000\000\001\145\001t\004-\001\136\003Y\001\145\001t\000\000\000\000\005W\000\000\000\000\005^\000\000\000\000\001\133\000\000\000\000\000\000\000\000\001\029\005_\000\000\001\030\001\135\001&\000\000\001v\000\000\000\000\000\231\000\000\000\000\000\000\001\136\000\000\001\145\001t\002Y\000\000\001\"\000\000\000\000\001&\000\000\000\000\000\000\001 \000\000\000\000\000\000\005`\005\n\000\000\000\000\000\000\000\000\001#\001\"\000\000\000\000\000\000\000\000\001\021\001)\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\030\000\000\001#\000\000\000\000\000\000\000\000\000\000\001\021\001)\000\000\000\000\000\000\000\000\000\000\005a\001\029\000\000\000\000\001\030\001&\001\135\000\000\000\000\001 \005b\000\000\000\000\000\000\000\000\000\000\001\136\000\000\001\145\001t\001\"\000\000\000\000\000\000\0015\000\000\000\000\000\000\001 \005c\002\173\000\000\001+\000\000\000\000\001,\005q\001#\006N\001-\001.\000\000\0015\001\021\001)\000\000\000\000\000\000\000\000\000\000\001+\005f\000\000\001,\000\000\001&\000\000\001-\001.\0042\000\000\005h\000\000\000\000\000\000\001/\005j\000\000\003]\000\000\001\"\000\000\000\000\000\000\001&\000\000\000\000\000\000\000\000\000\000\005l\000\000\000\000\001/\000\000\000\000\0019\001#\000\000\001\"\000\000\000\000\0015\001\021\001)\000\000\000\000\000\000\000\000\005m\001+\001\029\000\000\001,\001\030\000\000\001#\001-\001.\0042\000\000\000\000\001\021\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\001 \000\000\000\000\001l\001m\001/\000\000\000\000\0019\000\000\000\000\000\000\000\000\000\000\0015\000\000\002f\002g\001m\000\000\000\000\000\000\001+\001n\001}\001,\001p\001q\000\000\001-\001.\004?\000\000\0015\005;\000\000\000\000\000\000\000\000\002h\000\000\001+\007\b\000\000\001,\000\000\001&\000\000\001-\001.\002\146\000\000\000\000\000\000\001\029\001/\000\000\001\030\0019\001l\001m\001\"\000\000\000\000\000\000\000\000\000\000\001~\000\000\001\127\007$\000\000\007&\000\000\001/\000\000\000\000\0019\001#\001n\001}\001 \001p\001q\001\021\001)\000\000\001l\001m\000\000\000\000\001\029\000\000\000\000\001\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\133\000\000\000\000\000\000\000\000\001n\001}\000\000\001p\001q\001\029\000\000\001v\001\030\002i\000\231\001 \000\000\000\000\000\000\000\000\001~\000\000\001\127\006\205\001&\002j\000\000\002\166\000\231\000\000\0015\000\000\000\000\000\000\000\000\000\000\001 \000\000\001+\001\"\000\000\001,\000\000\000\000\001J\001-\001.\007\t\001~\000\000\001\127\001\174\000\000\000\000\000\000\001\133\001#\000\000\000\000\000\000\000\000\001&\001\021\001)\000\000\000\000\000\000\001v\000\000\000\000\000\231\001/\000\000\000\000\0019\000\000\001\"\000\000\001\135\000\000\000\000\000\000\001&\001\133\000\000\000\000\000\000\000\000\001\136\000\000\001\145\001t\002\167\001#\000\000\001v\000\000\001\"\000\231\001\021\001)\000\000\002\168\000\000\001\145\002\169\000\000\000\000\000\000\000\000\000\000\0015\001l\001m\001#\000\000\000\000\000\000\000\000\001+\001\021\001)\001,\000\000\000\000\000\000\001-\001.\001`\000\000\001l\001m\001n\001}\001\135\001p\001q\001l\001m\000\000\000\000\000\000\000\000\000\000\001\136\000\000\001\145\001t\0015\000\000\001n\001}\001/\001p\001q\0019\001+\001n\001}\001,\001p\001q\001\135\001-\001.\0016\000\000\001l\001m\0015\000\000\000\000\001\136\000\000\001\145\001t\001~\001+\001\127\001\164\001,\000\000\000\000\000\000\001-\001.\000\000\001n\001}\001/\001p\001q\0019\000\000\001~\000\000\001\127\001\161\001l\001m\000\000\001~\000\000\001\127\001\129\000\000\000\000\000\000\000\000\000\000\001/\001\133\000\000\001N\000\000\000\000\000\000\005V\001n\001}\000\000\001p\001q\001v\000\000\000\000\000\231\000\000\000\000\001\133\000\000\001~\007C\001\127\001\131\007D\001\133\000\000\005^\000\000\000\000\001v\000\000\000\000\000\231\000\000\000\000\005_\001v\001\029\000\000\000\231\001\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001~\000\000\001\127\001\134\001\133\000\000\001l\001m\000\000\000\000\000\000\000\000\000\000\000\000\001 \005`\001v\000\000\000\000\000\231\000\000\000\000\000\000\000\000\000\000\000\000\001n\001}\001\135\001p\001q\000\000\000\000\000\000\000\000\001\133\000\000\000\000\001\136\000\000\001\145\001t\000\000\000\000\000\000\000\000\001\135\001v\000\000\000\000\000\231\000\000\005a\001\135\000\000\000\000\001\136\000\000\001\145\001t\001&\000\000\005b\001\136\000\000\001\145\001t\001l\001m\000\000\001~\000\000\001\127\001\160\000\000\001\"\000\000\000\000\000\000\000\000\000\000\005c\002\173\001\135\007F\000\000\000\000\001n\001}\000\000\001p\001q\001#\001\136\001\029\001\145\001t\001\030\001\021\001)\000\000\000\000\000\000\005f\000\000\001\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005h\001\135\000\000\001\029\001v\005j\001\030\000\231\001 \000\000\000\000\001\136\000\000\001\145\001t\000\000\000\000\000\000\001~\005l\001\127\001\152\000\000\001l\001m\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\000\000\0015\000\000\000\000\000\000\005m\000\000\000\000\000\000\001+\001n\001}\001,\001p\001q\000\000\001-\001.\001\154\000\000\001\133\001&\001\029\000\000\000\000\001\030\000\000\000\000\000\000\000\000\000\000\000\000\001v\000\000\000\000\000\231\001\"\000\000\001\135\002f\002g\001m\001/\001&\000\000\0019\000\000\000\000\001\136\001 \001\145\001t\000\000\001#\001~\000\000\001\127\001\157\001\"\001\021\001)\000\000\002\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001#\000\000\000\000\000\000\000\000\000\000\001\021\001)\000\000\000\000\000\000\000\000\000\000\000\000\001\133\000\000\001\029\000\000\000\000\001\030\001&\000\000\000\000\000\000\001\135\000\000\001v\000\000\000\000\000\231\000\000\000\000\000\000\0015\001\136\001\"\001\145\001t\000\000\000\000\000\000\001+\000\000\001 \001,\000\000\000\000\000\000\001-\001.\001\189\000\000\001#\000\000\000\000\0015\000\000\000\000\001\021\001)\000\000\000\000\000\000\001+\002i\000\000\001,\001l\001m\000\000\001-\001.\001\204\000\000\001/\000\000\002j\0019\002\166\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001n\001}\001&\001p\001q\000\000\001\135\000\000\000\000\001/\000\000\000\000\0019\000\000\000\000\000\000\001\136\001\"\001\145\001t\0015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001+\001l\001m\001,\000\000\000\000\001#\001-\001.\001\251\000\000\000\000\001\021\001)\000\000\000\000\001~\000\000\001\127\002^\000\000\001n\001}\000\000\001p\001q\001\029\000\000\002\167\001\030\000\000\000\000\000\000\001/\000\000\000\000\0019\000\000\002\168\000\000\001\145\002\169\000\000\000\000\001\029\000\000\000\000\001\030\000\000\000\000\000\000\001\133\000\000\001 \000\000\000\000\000\000\000\000\000\000\001l\001m\0015\000\000\001v\000\000\001~\000\231\001\127\002c\001+\000\000\001 \001,\000\000\000\000\000\000\001-\001.\001\253\001n\001}\000\000\001p\001q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\030\000\000\001&\001\133\000\000\001/\000\000\000\000\0019\000\000\000\000\000\000\000\000\000\000\000\000\001v\000\000\001\"\000\231\000\000\001&\000\000\000\000\000\000\001 \000\000\001~\000\000\001\127\002\246\000\000\000\000\000\000\001\135\001#\001\"\000\000\000\000\000\000\000\000\001\021\001)\000\000\001\136\001\029\001\145\001t\001\030\000\000\000\000\000\000\000\000\001#\000\000\000\000\000\000\000\000\000\000\001\021\001)\000\000\001\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001&\001 \000\000\001v\000\000\000\000\000\231\000\000\000\000\000\000\000\000\000\000\001\135\000\000\000\000\001\"\000\000\000\000\000\000\0015\000\000\000\000\001\136\000\000\001\145\001t\000\000\001+\000\000\000\000\001,\000\000\001#\000\000\001-\001.\002|\0015\001\021\001)\000\000\000\000\000\000\000\000\000\000\001+\000\000\001&\001,\000\000\000\000\000\000\001-\001.\002\144\000\000\000\000\000\000\000\000\000\000\001/\000\000\001\"\0019\000\000\000\000\000\000\000\000\000\000\000\000\001\135\000\000\000\000\001l\001m\000\000\000\000\000\000\001/\001#\001\136\0019\001\145\001t\000\000\001\021\001)\0015\000\000\001l\001m\000\000\000\000\001n\001}\001+\001p\001q\001,\000\000\001l\001m\001-\001.\002\148\000\000\000\000\000\000\000\000\001n\001}\000\000\001p\001q\000\000\000\000\000\000\000\000\000\000\000\000\001n\001}\000\000\001p\001q\000\000\000\000\000\000\001/\000\000\000\000\0019\000\000\000\000\0015\000\000\000\000\001~\000\000\001\127\002\248\000\000\001+\000\000\001\029\001,\000\000\001\030\000\000\001-\001.\002\239\000\000\001~\001\029\001\127\002\250\001\030\000\000\001l\001m\000\000\000\000\000\000\001~\000\000\001\127\003\001\000\000\000\000\000\000\001 \001\133\000\000\000\000\001/\000\000\000\000\0019\001n\001}\001 \001p\001q\001v\000\000\000\000\000\231\001\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\133\001v\000\000\000\000\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\001\029\000\000\000\231\001\030\000\000\001&\000\000\000\000\000\000\000\000\000\000\001~\000\000\001\127\003\007\001&\000\000\000\000\001\029\000\000\001\"\001\030\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\000\000\001#\000\000\001\135\000\000\000\000\000\000\001\021\001)\001 \001\133\001#\000\000\001\136\000\000\001\145\001t\001\021\001)\001\135\000\000\000\000\001v\000\000\000\000\000\231\000\000\000\000\000\000\001\136\001\135\001\145\001t\001\029\000\000\000\000\001\030\001&\000\000\000\000\001\136\000\000\001\145\001t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\000\000\000\000\001&\0015\000\000\000\000\000\000\001 \000\000\000\000\000\000\001+\000\000\0015\001,\000\000\001#\001\"\001-\001.\003?\001+\001\021\001)\001,\000\000\000\000\000\000\001-\001.\004\011\000\000\000\000\000\000\001#\000\000\001\135\000\000\000\000\000\000\001\021\001)\000\000\000\000\001/\000\000\001\136\0019\001\145\001t\000\000\000\000\000\000\001&\001/\000\000\001\029\0019\000\000\004c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\000\000\000\000\0015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001+\000\000\000\000\001,\001 \000\000\001#\001-\001.\004\023\0015\001\029\001\021\001)\004c\000\000\000\000\000\000\001+\000\000\000\000\001,\000\000\000\000\000\000\001-\001.\0041\000\000\000\000\000\000\001\029\000\000\001/\004c\000\000\0019\000\000\001 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004e\001/\000\000\000\000\0019\000\000\000\000\000\000\001 \000\000\000\000\0015\000\000\000\000\000\000\001\"\000\000\000\000\000\000\001+\000\000\000\000\001,\000\000\000\000\000\000\001-\001.\004A\000\000\000\000\000\000\001#\001\029\004e\000\000\004c\000\000\001\021\004h\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\000\000\000\000\001/\001\029\004e\0019\001\030\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\001#\001\029\000\000\001\"\001\030\000\000\001\021\004h\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\000\000\001l\001m\001#\000\000\001\029\000\000\000\000\001\030\001\021\004h\001 \001+\000\000\000\000\004i\000\000\000\000\000\000\001-\001.\001n\002K\004e\001p\001q\000\000\000\000\000\000\0044\000\000\004m\001 \004k\000\000\000\000\000\000\000\000\001\"\000\000\000\000\000\000\000\000\001&\000\000\001/\001+\000\000\000\000\004i\000\000\000\000\000\000\001-\001.\001#\000\000\001&\001\"\000\000\000\000\001\021\004h\0044\000\000\004l\001+\004k\000\000\004i\000\000\000\000\001\"\001-\001.\001#\000\000\000\000\001&\001/\000\000\001\021\001)\0044\000\000\004j\000\000\004k\000\000\001#\000\000\000\000\000\000\001\"\000\000\001\021\001)\000\000\000\000\001/\001u\000\000\001\029\000\000\000\000\004c\000\000\000\000\000\000\000\000\001#\000\000\001v\000\000\000\000\000\231\001\021\001)\001+\000\000\000\000\004i\000\000\000\000\000\000\001-\001.\000\000\000\000\001 \0015\001\029\000\000\000\000\004c\0044\000\000\004v\001+\004k\000\000\001,\000\000\000\000\0015\001-\001.\004\190\000\000\005I\000\000\001/\001+\000\000\000\000\001,\000\000\000\000\001 \001-\001.\004\207\000\000\000\000\000\000\0015\000\000\000\000\000\000\000\000\000\000\001/\000\000\001+\0019\004e\001,\000\000\000\000\001\135\001-\001.\004\238\001\029\000\000\001/\001\030\000\000\0019\001\144\001\"\001\145\001t\001\029\000\000\000\000\001\030\000\000\000\000\000\000\000\000\000\000\000\000\005K\004e\000\000\001/\001#\000\000\0019\001 \000\000\000\000\001\021\004h\000\000\000\000\000\000\000\000\001\"\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\001\029\001#\000\000\001\030\000\000\000\000\000\000\001\021\004h\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\000\000\000\000\000\001 \000\000\000\000\000\000\001&\000\000\000\000\001\029\001+\001\"\001\030\004i\000\000\000\000\000\000\001-\001.\000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\0044\001#\005.\000\000\004k\000\000\000\000\001\021\001)\001 \000\000\001#\001+\000\000\000\000\004i\001/\001\021\001)\001-\001.\001&\000\000\000\000\000\000\001\029\000\000\000\000\001\030\0044\000\000\005F\000\000\004k\000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001/\000\000\000\000\000\000\000\000\000\000\000\000\001 \001#\000\000\001&\0015\000\000\000\000\001\021\001)\000\000\000\000\000\000\001+\000\000\0015\001,\000\000\000\000\001\"\001-\001.\006K\001+\000\000\000\000\001,\000\000\000\000\000\000\001-\001.\006P\005V\000\000\000\000\001#\000\000\000\000\000\000\005V\000\000\001\021\001)\000\000\000\000\001/\001&\007C\0019\000\000\007D\000\000\000\000\005^\007C\001/\0015\007D\0019\000\000\005^\001\"\005_\000\000\001+\000\000\000\000\001,\000\000\005_\000\000\001-\001.\006\156\000\000\000\000\000\000\000\000\001#\000\000\000\000\000\000\000\000\000\000\001\021\001)\000\000\000\000\000\000\000\000\0015\000\000\005`\000\000\005V\000\000\000\000\001/\001+\005`\0019\001,\000\000\000\000\000\000\001-\001.\006\159\000\000\007C\000\000\000\000\007D\000\000\000\000\005^\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\030\005_\000\000\000\000\000\000\000\000\005a\000\000\001/\000\000\0015\0019\000\000\005a\000\000\000\000\005b\000\000\001+\001\029\000\000\001,\001\030\005b\001 \001-\001.\006\208\000\000\000\000\000\000\005`\000\000\000\000\000\000\005c\002\173\000\000\007E\000\000\000\000\000\000\005c\002\173\000\000\007I\001 \000\000\000\000\000\000\001\029\001/\000\000\001\030\0019\000\000\000\000\005f\000\000\000\000\000\000\000\000\000\000\000\000\005f\000\000\000\000\005h\005a\000\000\001&\000\000\005j\000\000\005h\000\000\000\000\001 \005b\005j\000\000\000\000\000\000\000\000\000\000\001\"\005l\000\000\000\000\000\000\000\000\000\000\001&\005l\000\000\000\000\000\000\005c\002\173\000\000\007N\001\029\001#\000\000\001\030\005m\000\000\001\"\001\021\001)\000\000\000\000\005m\000\000\000\000\000\000\001l\001m\000\000\005f\000\000\000\000\000\000\001&\001#\000\000\000\000\000\000\001 \005h\001\021\001)\000\000\000\000\005j\000\000\001n\002K\001\"\001p\001q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005l\000\000\000\000\001\029\000\000\000\000\004_\001#\000\000\0015\000\000\000\000\000\000\001\021\001)\000\000\000\000\001+\000\000\005m\001,\000\000\000\000\000\000\001-\001.\001&\000\000\001l\001m\001 \0015\000\000\000\000\000\000\000\000\005V\000\000\000\000\001+\000\000\001\"\001,\000\000\000\000\000\000\001-\001.\001n\002K\001/\001p\001q\001L\005W\000\000\000\000\005^\001#\000\000\000\000\000\000\0015\000\000\001\021\001)\005_\001u\000\000\000\000\001+\000\000\001/\001,\000\000\001\246\000\000\001-\001.\001v\001\029\004z\000\231\001\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\000\000\000\000\000\000\000\000\005`\000\000\000\000\000\000\000\000\000\000\000\000\001/\000\000\000\000\001\248\001 \001#\004{\000\000\004|\000\000\0015\001\021\001)\005I\000\000\000\000\000\000\000\000\001+\000\000\000\000\001,\000\000\000\000\001u\001-\001.\000\000\000\000\000\000\005a\000\000\000\000\000\000\000\000\000\000\001v\000\000\004}\000\231\005b\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\000\000\001&\001/\000\000\001\144\003X\001\145\001t\000\000\000\000\005c\002\173\000\000\004z\000\000\000\000\001\"\006\131\005J\001+\000\000\000\000\001,\000\000\005I\004~\001-\001.\001\029\000\000\000\000\001\030\005f\001#\000\000\004\127\004\128\000\000\004\129\001\021\001)\004{\005h\004|\000\000\000\000\000\000\005j\000\000\002f\002g\001m\001/\000\000\001\135\001 \000\000\000\000\000\000\000\000\000\000\005l\000\000\004\156\001\144\000\000\001\145\001t\000\000\000\000\000\000\000\000\002\131\004}\000\000\000\000\000\000\000\000\005R\000\000\005m\000\000\000\000\000\000\000\000\000\000\000\000\004\131\001*\000\000\000\000\000\000\004\133\004\143\001l\001m\001+\000\000\000\000\001,\000\000\001&\000\000\001-\001.\000\000\004\154\000\000\000\000\004~\000\000\001l\001m\000\000\001n\001o\001\"\001p\001q\004\127\004\128\000\000\004\129\000\000\000\000\004\155\000\000\000\000\000\000\001/\000\000\001n\001\143\001#\001p\001q\001l\001m\000\000\001\021\001)\000\000\002f\002g\001m\000\000\000\000\004\130\000\000\002i\000\000\002f\002g\001m\000\000\000\000\001n\001\215\000\000\001p\001q\002j\000\000\002\166\000\231\002\155\000\000\000\000\000\000\000\000\000\000\004\131\000\000\000\000\002\165\000\000\004\133\004\143\002f\002g\001m\000\000\000\000\002f\002g\001m\000\000\000\000\006\149\000\000\004\154\000\000\000\000\001u\000\000\000\000\001+\000\000\000\000\001,\000\000\002\184\000\000\001-\001.\001v\005\022\000\000\000\231\004\155\001u\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\004f\000\000\001v\000\000\000\000\000\231\000\000\000\000\002\167\001/\000\000\000\000\000\000\000\000\000\000\001u\000\000\000\000\002\168\000\000\001\145\002\169\002i\000\000\001 \000\000\000\000\001v\000\000\000\000\000\231\002i\000\000\000\000\002j\000\000\002\166\000\231\000\000\000\000\000\000\000\000\000\000\002j\000\000\002\166\000\231\000\000\000\000\000\000\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\002i\000\000\000\000\000\000\001\144\002i\001\145\001t\000\000\000\000\000\000\001\135\002j\000\000\002\166\000\231\000\000\002j\000\000\002\166\000\231\001\144\000\000\001\145\001t\000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\000\000\002\167\001#\000\000\001\144\000\000\001\145\001t\001\021\001)\002\167\002\168\000\000\001\145\002\169\000\000\000\000\000\000\000\000\000\000\002\168\000\000\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\167\000\000\000\000\000\000\000\000\002\167\000\000\000\000\000\000\000\000\002\168\000\000\001\145\002\169\000\000\002\168\000\000\001\145\002\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001+\000\000\000\000\001,\000\000\000\000\000\000\001-\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001/")) and semantic_action = [| @@ -1479,9 +1545,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3965 "src/ocaml/preprocess/parser_raw.mly" +# 4172 "src/ocaml/preprocess/parser_raw.mly" ( "+" ) -# 1485 "src/ocaml/preprocess/parser_raw.ml" +# 1551 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1504,9 +1570,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3966 "src/ocaml/preprocess/parser_raw.mly" +# 4173 "src/ocaml/preprocess/parser_raw.mly" ( "+." ) -# 1510 "src/ocaml/preprocess/parser_raw.ml" +# 1576 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1529,9 +1595,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3514 "src/ocaml/preprocess/parser_raw.mly" +# 3665 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 1535 "src/ocaml/preprocess/parser_raw.ml" +# 1601 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1544,14 +1610,14 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = tyvar; - MenhirLib.EngineTypes.startp = _startpos_tyvar_; - MenhirLib.EngineTypes.endp = _endpos_tyvar_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -1567,33 +1633,46 @@ module Tables = struct }; }; } = _menhir_stack in - let tyvar : (string) = Obj.magic tyvar in - let _3 : unit = Obj.magic _3 in + let _2_inlined1 : (string) = Obj.magic _2_inlined1 in + let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let ty : (Parsetree.core_type) = Obj.magic ty in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_ty_ in - let _endpos = _endpos_tyvar_ in + let _endpos = _endpos__2_inlined1_ in let _v : (Parsetree.core_type) = let _1 = - let _1 = -# 3517 "src/ocaml/preprocess/parser_raw.mly" + let _1 = + let tyvar = + let (_endpos__2_, _2) = (_endpos__2_inlined1_, _2_inlined1) in + let _endpos = _endpos__2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3613 "src/ocaml/preprocess/parser_raw.mly" + ( mkrhs _2 _sloc ) +# 1654 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3668 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_alias(ty, tyvar) ) -# 1582 "src/ocaml/preprocess/parser_raw.ml" - in - let (_endpos__1_, _startpos__1_) = (_endpos_tyvar_, _startpos_ty_) in +# 1660 "src/ocaml/preprocess/parser_raw.ml" + + in + let (_endpos__1_, _startpos__1_) = (_endpos__2_inlined1_, _startpos_ty_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 1591 "src/ocaml/preprocess/parser_raw.ml" +# 1670 "src/ocaml/preprocess/parser_raw.ml" in -# 3519 "src/ocaml/preprocess/parser_raw.mly" +# 3670 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 1597 "src/ocaml/preprocess/parser_raw.ml" +# 1676 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1640,30 +1719,30 @@ module Tables = struct let _v : (Ast_helper.let_binding) = let attrs2 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 1646 "src/ocaml/preprocess/parser_raw.ml" +# 1725 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 1655 "src/ocaml/preprocess/parser_raw.ml" +# 1734 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2758 "src/ocaml/preprocess/parser_raw.mly" +# 2877 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in mklb ~loc:_sloc false body attrs ) -# 1667 "src/ocaml/preprocess/parser_raw.ml" +# 1746 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1686,9 +1765,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3849 "src/ocaml/preprocess/parser_raw.mly" +# 4056 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 1692 "src/ocaml/preprocess/parser_raw.ml" +# 1771 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1711,188 +1790,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3850 "src/ocaml/preprocess/parser_raw.mly" +# 4057 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 1717 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.core_type) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Parsetree.core_type) = -# 3575 "src/ocaml/preprocess/parser_raw.mly" - ( _2 ) -# 1756 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let _1_inlined3 : (Parsetree.module_type) = Obj.magic _1_inlined3 in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v : (Parsetree.core_type) = let _4 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3635 "src/ocaml/preprocess/parser_raw.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 1823 "src/ocaml/preprocess/parser_raw.ml" - - in - let _3 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4055 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 1833 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 4068 "src/ocaml/preprocess/parser_raw.mly" - ( _1, _2 ) -# 1839 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos = _endpos__5_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3577 "src/ocaml/preprocess/parser_raw.mly" - ( wrap_typ_attrs ~loc:_sloc (reloc_typ ~loc:_sloc _4) _3 ) -# 1848 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _2 : (string) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.core_type) = let _1 = - let _1 = -# 3580 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_var _2 ) -# 1881 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos__1_ = _endpos__2_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1033 "src/ocaml/preprocess/parser_raw.mly" - ( mktyp ~loc:_sloc _1 ) -# 1890 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3612 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 1896 "src/ocaml/preprocess/parser_raw.ml" +# 1796 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1905,34 +1805,19 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = type_; + MenhirLib.EngineTypes.startp = _startpos_type__; + MenhirLib.EngineTypes.endp = _endpos_type__; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let type_ : (Parsetree.core_type) = Obj.magic type_ in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.core_type) = let _1 = - let _1 = -# 3582 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_any ) -# 1922 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1033 "src/ocaml/preprocess/parser_raw.mly" - ( mktyp ~loc:_sloc _1 ) -# 1930 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3612 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 1936 "src/ocaml/preprocess/parser_raw.ml" + let _startpos = _startpos_type__ in + let _endpos = _endpos_type__ in + let _v : (Parsetree.core_type) = +# 3801 "src/ocaml/preprocess/parser_raw.mly" + ( type_ ) +# 1821 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1961,35 +1846,35 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 1967 "src/ocaml/preprocess/parser_raw.ml" +# 1852 "src/ocaml/preprocess/parser_raw.ml" in let tys = -# 3627 "src/ocaml/preprocess/parser_raw.mly" +# 3834 "src/ocaml/preprocess/parser_raw.mly" ( [] ) -# 1973 "src/ocaml/preprocess/parser_raw.ml" +# 1858 "src/ocaml/preprocess/parser_raw.ml" in -# 3585 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_constr(tid, tys) ) -# 1978 "src/ocaml/preprocess/parser_raw.ml" +# 3805 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_constr (tid, tys) ) +# 1863 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 1987 "src/ocaml/preprocess/parser_raw.ml" +# 1872 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" +# 3819 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 1993 "src/ocaml/preprocess/parser_raw.ml" +# 1878 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2025,20 +1910,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 2031 "src/ocaml/preprocess/parser_raw.ml" +# 1916 "src/ocaml/preprocess/parser_raw.ml" in let tys = -# 3629 "src/ocaml/preprocess/parser_raw.mly" - ( [ty] ) -# 2037 "src/ocaml/preprocess/parser_raw.ml" +# 3836 "src/ocaml/preprocess/parser_raw.mly" + ( [ ty ] ) +# 1922 "src/ocaml/preprocess/parser_raw.ml" in -# 3585 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_constr(tid, tys) ) -# 2042 "src/ocaml/preprocess/parser_raw.ml" +# 3805 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_constr (tid, tys) ) +# 1927 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_ty_ in @@ -2046,15 +1931,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 2052 "src/ocaml/preprocess/parser_raw.ml" +# 1937 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" +# 3819 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 2058 "src/ocaml/preprocess/parser_raw.ml" +# 1943 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2105,9 +1990,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 2111 "src/ocaml/preprocess/parser_raw.ml" +# 1996 "src/ocaml/preprocess/parser_raw.ml" in let tys = @@ -2115,24 +2000,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 2119 "src/ocaml/preprocess/parser_raw.ml" +# 2004 "src/ocaml/preprocess/parser_raw.ml" in -# 1158 "src/ocaml/preprocess/parser_raw.mly" +# 1245 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 2124 "src/ocaml/preprocess/parser_raw.ml" +# 2009 "src/ocaml/preprocess/parser_raw.ml" in -# 3631 "src/ocaml/preprocess/parser_raw.mly" +# 3838 "src/ocaml/preprocess/parser_raw.mly" ( tys ) -# 2130 "src/ocaml/preprocess/parser_raw.ml" +# 2015 "src/ocaml/preprocess/parser_raw.ml" in -# 3585 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_constr(tid, tys) ) -# 2136 "src/ocaml/preprocess/parser_raw.ml" +# 3805 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_constr (tid, tys) ) +# 2021 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -2140,15 +2025,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 2146 "src/ocaml/preprocess/parser_raw.ml" +# 2031 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" +# 3819 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 2152 "src/ocaml/preprocess/parser_raw.ml" +# 2037 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2161,162 +2046,59 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _2; MenhirLib.EngineTypes.startp = _startpos__2_; MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.object_field list * Asttypes.closed_flag) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1 : (Longident.t) = Obj.magic _1 in + let _2 : unit = Obj.magic _2 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos__2_ in + let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = - let _1 = -# 3587 "src/ocaml/preprocess/parser_raw.mly" - ( let (f, c) = _2 in Ptyp_object (f, c) ) -# 2192 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos__1_ = _endpos__3_ in + let _1 = + let cid = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1062 "src/ocaml/preprocess/parser_raw.mly" + ( mkrhs _1 _sloc ) +# 2075 "src/ocaml/preprocess/parser_raw.ml" + + in + let tys = +# 3834 "src/ocaml/preprocess/parser_raw.mly" + ( [] ) +# 2081 "src/ocaml/preprocess/parser_raw.ml" + in + +# 3809 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_class (cid, tys) ) +# 2086 "src/ocaml/preprocess/parser_raw.ml" + + in + let _startpos__1_ = _startpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 2201 "src/ocaml/preprocess/parser_raw.ml" +# 2096 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" +# 3819 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 2207 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.core_type) = let _1 = - let _1 = -# 3589 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_object ([], Closed) ) -# 2240 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos__1_ = _endpos__2_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1033 "src/ocaml/preprocess/parser_raw.mly" - ( mktyp ~loc:_sloc _1 ) -# 2249 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3612 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 2255 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _1 : (Longident.t) = Obj.magic _1 in - let _2 : unit = Obj.magic _2 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__2_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.core_type) = let _1 = - let _1 = - let cid = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 996 "src/ocaml/preprocess/parser_raw.mly" - ( mkrhs _1 _sloc ) -# 2293 "src/ocaml/preprocess/parser_raw.ml" - - in - let tys = -# 3627 "src/ocaml/preprocess/parser_raw.mly" - ( [] ) -# 2299 "src/ocaml/preprocess/parser_raw.ml" - in - -# 3593 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_class(cid, tys) ) -# 2304 "src/ocaml/preprocess/parser_raw.ml" - - in - let _startpos__1_ = _startpos__2_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1033 "src/ocaml/preprocess/parser_raw.mly" - ( mktyp ~loc:_sloc _1 ) -# 2314 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3612 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 2320 "src/ocaml/preprocess/parser_raw.ml" +# 2102 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2359,20 +2141,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 2365 "src/ocaml/preprocess/parser_raw.ml" +# 2147 "src/ocaml/preprocess/parser_raw.ml" in let tys = -# 3629 "src/ocaml/preprocess/parser_raw.mly" - ( [ty] ) -# 2371 "src/ocaml/preprocess/parser_raw.ml" +# 3836 "src/ocaml/preprocess/parser_raw.mly" + ( [ ty ] ) +# 2153 "src/ocaml/preprocess/parser_raw.ml" in -# 3593 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_class(cid, tys) ) -# 2376 "src/ocaml/preprocess/parser_raw.ml" +# 3809 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_class (cid, tys) ) +# 2158 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_ty_ in @@ -2380,15 +2162,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 2386 "src/ocaml/preprocess/parser_raw.ml" +# 2168 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" +# 3819 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 2392 "src/ocaml/preprocess/parser_raw.ml" +# 2174 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2446,9 +2228,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 2452 "src/ocaml/preprocess/parser_raw.ml" +# 2234 "src/ocaml/preprocess/parser_raw.ml" in let tys = @@ -2456,24 +2238,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 2460 "src/ocaml/preprocess/parser_raw.ml" +# 2242 "src/ocaml/preprocess/parser_raw.ml" in -# 1158 "src/ocaml/preprocess/parser_raw.mly" +# 1245 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 2465 "src/ocaml/preprocess/parser_raw.ml" +# 2247 "src/ocaml/preprocess/parser_raw.ml" in -# 3631 "src/ocaml/preprocess/parser_raw.mly" +# 3838 "src/ocaml/preprocess/parser_raw.mly" ( tys ) -# 2471 "src/ocaml/preprocess/parser_raw.ml" +# 2253 "src/ocaml/preprocess/parser_raw.ml" in -# 3593 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_class(cid, tys) ) -# 2477 "src/ocaml/preprocess/parser_raw.ml" +# 3809 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_class (cid, tys) ) +# 2259 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -2481,15 +2263,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 2487 "src/ocaml/preprocess/parser_raw.ml" +# 2269 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" +# 3819 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 2493 "src/ocaml/preprocess/parser_raw.ml" +# 2275 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2502,9 +2284,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = type_; + MenhirLib.EngineTypes.startp = _startpos_type__; + MenhirLib.EngineTypes.endp = _endpos_type__; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -2519,32 +2301,44 @@ module Tables = struct }; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.row_field) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let type_ : (Parsetree.core_type) = Obj.magic type_ in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos_type__ in let _v : (Parsetree.core_type) = let _1 = - let _1 = -# 3596 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_variant([_2], Closed, None) ) -# 2533 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos__1_ = _endpos__3_ in + let _1 = + let mod_ident = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1062 "src/ocaml/preprocess/parser_raw.mly" + ( mkrhs _1 _sloc ) +# 2320 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3813 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_open (mod_ident, type_) ) +# 2326 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos__1_ = _endpos_type__ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 2542 "src/ocaml/preprocess/parser_raw.ml" +# 2336 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" +# 3819 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 2548 "src/ocaml/preprocess/parser_raw.ml" +# 2342 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2557,77 +2351,42 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = ident; + MenhirLib.EngineTypes.startp = _startpos_ident_; + MenhirLib.EngineTypes.endp = _endpos_ident_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let xs : (Parsetree.row_field list) = Obj.magic xs in - let _2 : unit = Obj.magic _2 in + let ident : (string) = Obj.magic ident in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in + let _endpos = _endpos_ident_ in let _v : (Parsetree.core_type) = let _1 = - let _1 = - let _3 = - let _1 = - let xs = -# 253 "" - ( List.rev xs ) -# 2598 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1130 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 2603 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3641 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 2609 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3598 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_variant(_3, Closed, None) ) -# 2615 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos__1_ = _endpos__4_ in + let _1 = +# 3815 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_var ident ) +# 2375 "src/ocaml/preprocess/parser_raw.ml" + in + let _endpos__1_ = _endpos_ident_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 2625 "src/ocaml/preprocess/parser_raw.ml" +# 2384 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" +# 3819 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 2631 "src/ocaml/preprocess/parser_raw.ml" +# 2390 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2639,85 +2398,35 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let xs : (Parsetree.row_field list) = Obj.magic xs in - let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.row_field) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = - let _1 = - let _4 = - let _1 = - let xs = -# 253 "" - ( List.rev xs ) -# 2688 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1130 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 2693 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3641 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 2699 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3600 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_variant(_2 :: _4, Closed, None) ) -# 2705 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos__1_ = _endpos__5_ in + let _1 = +# 3817 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_any ) +# 2416 "src/ocaml/preprocess/parser_raw.ml" + in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 2715 "src/ocaml/preprocess/parser_raw.ml" +# 2424 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" +# 3819 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 2721 "src/ocaml/preprocess/parser_raw.ml" +# 2430 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2729,78 +2438,35 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let xs : (Parsetree.row_field list) = Obj.magic xs in - let _2 : (unit option) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1 : (string) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v : (Parsetree.core_type) = let _1 = - let _1 = - let _3 = - let _1 = - let xs = -# 253 "" - ( List.rev xs ) -# 2771 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1130 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 2776 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3641 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 2782 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3602 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_variant(_3, Open, None) ) -# 2788 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos__1_ = _endpos__4_ in + let _endpos = _endpos__1_ in + let _v : (string Location.loc) = let _1 = + let _1 = +# 4239 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 2456 "src/ocaml/preprocess/parser_raw.ml" + in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" - ( mktyp ~loc:_sloc _1 ) -# 2798 "src/ocaml/preprocess/parser_raw.ml" +# 1092 "src/ocaml/preprocess/parser_raw.mly" + ( mkloc _1 (make_loc _sloc) ) +# 2464 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 2804 "src/ocaml/preprocess/parser_raw.ml" +# 4241 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 2470 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2813,42 +2479,76 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in + let _3 : (string Location.loc) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1 : (string) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.core_type) = let _1 = + let _endpos = _endpos__3_ in + let _v : (string Location.loc) = let _1 = let _1 = -# 3604 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_variant([], Open, None) ) -# 2837 "src/ocaml/preprocess/parser_raw.ml" +# 4240 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ^ "." ^ _3.txt ) +# 2510 "src/ocaml/preprocess/parser_raw.ml" in - let _endpos__1_ = _endpos__2_ in + let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" - ( mktyp ~loc:_sloc _1 ) -# 2846 "src/ocaml/preprocess/parser_raw.ml" +# 1092 "src/ocaml/preprocess/parser_raw.mly" + ( mkloc _1 (make_loc _sloc) ) +# 2519 "src/ocaml/preprocess/parser_raw.ml" in -# 3612 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 2852 "src/ocaml/preprocess/parser_raw.ml" +# 4241 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 2525 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.payload) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.payload) = +# 4296 "src/ocaml/preprocess/parser_raw.mly" + ( Builtin_attributes.mark_payload_attrs_used _1; + _1 + ) +# 2552 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2866,9 +2566,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -2885,53 +2585,19 @@ module Tables = struct }; } = _menhir_stack in let _4 : unit = Obj.magic _4 in - let xs : (Parsetree.row_field list) = Obj.magic xs in - let _2 : (unit option) = Obj.magic _2 in + let _3 : (Parsetree.payload) = Obj.magic _3 in + let _2 : (string Location.loc) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in - let _v : (Parsetree.core_type) = let _1 = - let _1 = - let _3 = - let _1 = - let xs = -# 253 "" - ( List.rev xs ) -# 2902 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1130 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 2907 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3641 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 2913 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3606 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_variant(_3, Closed, Some []) ) -# 2919 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos__1_ = _endpos__4_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1033 "src/ocaml/preprocess/parser_raw.mly" - ( mktyp ~loc:_sloc _1 ) -# 2929 "src/ocaml/preprocess/parser_raw.ml" - - in + let _v : (Parsetree.attribute) = let _endpos = _endpos__4_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 3612 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 2935 "src/ocaml/preprocess/parser_raw.ml" +# 4245 "src/ocaml/preprocess/parser_raw.mly" + ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) +# 2601 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2943,321 +2609,20 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs_inlined1; - MenhirLib.EngineTypes.startp = _startpos_xs_inlined1_; - MenhirLib.EngineTypes.endp = _endpos_xs_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _6 : unit = Obj.magic _6 in - let xs_inlined1 : (string list) = Obj.magic xs_inlined1 in - let _4 : unit = Obj.magic _4 in - let xs : (Parsetree.row_field list) = Obj.magic xs in - let _2 : (unit option) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1 : (Parsetree.class_expr) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__6_ in - let _v : (Parsetree.core_type) = let _1 = - let _1 = - let _5 = - let xs = xs_inlined1 in - let _1 = - let xs = -# 253 "" - ( List.rev xs ) -# 3000 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1098 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 3005 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3669 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 3011 "src/ocaml/preprocess/parser_raw.ml" - - in - let _3 = - let _1 = - let xs = -# 253 "" - ( List.rev xs ) -# 3019 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1130 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 3024 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3641 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 3030 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3608 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_variant(_3, Closed, Some _5) ) -# 3036 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos__1_ = _endpos__6_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1033 "src/ocaml/preprocess/parser_raw.mly" - ( mktyp ~loc:_sloc _1 ) -# 3046 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3612 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 3052 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.extension) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.core_type) = let _1 = - let _1 = -# 3610 "src/ocaml/preprocess/parser_raw.mly" - ( Ptyp_extension _1 ) -# 3078 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1033 "src/ocaml/preprocess/parser_raw.mly" - ( mktyp ~loc:_sloc _1 ) -# 3086 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 3612 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 3092 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (string) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (string Location.loc) = let _1 = - let _1 = -# 4032 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 3118 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1026 "src/ocaml/preprocess/parser_raw.mly" - ( mkloc _1 (make_loc _sloc) ) -# 3126 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 4034 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 3132 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let _3 : (string Location.loc) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (string) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (string Location.loc) = let _1 = - let _1 = -# 4033 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ^ "." ^ _3.txt ) -# 3172 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1026 "src/ocaml/preprocess/parser_raw.mly" - ( mkloc _1 (make_loc _sloc) ) -# 3181 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 4034 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 3187 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.payload) = Obj.magic _3 in - let _2 : (string Location.loc) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v : (Parsetree.attribute) = let _endpos = _endpos__4_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 4038 "src/ocaml/preprocess/parser_raw.mly" - ( Attr.mk ~loc:(make_loc _sloc) _2 _3 ) -# 3236 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.class_expr) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.class_expr) = -# 2017 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 3261 "src/ocaml/preprocess/parser_raw.ml" + let _endpos = _endpos__1_ in + let _v : (Parsetree.class_expr) = +# 2104 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 2626 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3296,18 +2661,18 @@ module Tables = struct let _v : (Parsetree.class_expr) = let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3302 "src/ocaml/preprocess/parser_raw.ml" +# 2667 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2019 "src/ocaml/preprocess/parser_raw.mly" +# 2106 "src/ocaml/preprocess/parser_raw.mly" ( wrap_class_attrs ~loc:_sloc _3 _2 ) -# 3311 "src/ocaml/preprocess/parser_raw.ml" +# 2676 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3347,9 +2712,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2021 "src/ocaml/preprocess/parser_raw.mly" +# 2108 "src/ocaml/preprocess/parser_raw.mly" ( class_of_let_bindings ~loc:_sloc _1 _3 ) -# 3353 "src/ocaml/preprocess/parser_raw.ml" +# 2718 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3412,34 +2777,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 3418 "src/ocaml/preprocess/parser_raw.ml" +# 2783 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__5_ = _endpos__1_inlined2_ in let _4 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3427 "src/ocaml/preprocess/parser_raw.ml" +# 2792 "src/ocaml/preprocess/parser_raw.ml" in let _3 = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 3433 "src/ocaml/preprocess/parser_raw.ml" +# 2798 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2023 "src/ocaml/preprocess/parser_raw.mly" +# 2110 "src/ocaml/preprocess/parser_raw.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkclass ~loc:_sloc ~attrs:_4 (Pcl_open(od, _7)) ) -# 3443 "src/ocaml/preprocess/parser_raw.ml" +# 2808 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3509,37 +2874,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 3515 "src/ocaml/preprocess/parser_raw.ml" +# 2880 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3524 "src/ocaml/preprocess/parser_raw.ml" +# 2889 "src/ocaml/preprocess/parser_raw.ml" in let _3 = let _1 = _1_inlined1 in -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 3532 "src/ocaml/preprocess/parser_raw.ml" +# 2897 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2023 "src/ocaml/preprocess/parser_raw.mly" +# 2110 "src/ocaml/preprocess/parser_raw.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkclass ~loc:_sloc ~attrs:_4 (Pcl_open(od, _7)) ) -# 3543 "src/ocaml/preprocess/parser_raw.ml" +# 2908 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3569,9 +2934,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = -# 2027 "src/ocaml/preprocess/parser_raw.mly" +# 2114 "src/ocaml/preprocess/parser_raw.mly" ( Cl.attr _1 _2 ) -# 3575 "src/ocaml/preprocess/parser_raw.ml" +# 2940 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3606,18 +2971,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3610 "src/ocaml/preprocess/parser_raw.ml" +# 2975 "src/ocaml/preprocess/parser_raw.ml" in -# 1098 "src/ocaml/preprocess/parser_raw.mly" +# 1164 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 3615 "src/ocaml/preprocess/parser_raw.ml" +# 2980 "src/ocaml/preprocess/parser_raw.ml" in -# 2030 "src/ocaml/preprocess/parser_raw.mly" +# 2117 "src/ocaml/preprocess/parser_raw.mly" ( Pcl_apply(_1, _2) ) -# 3621 "src/ocaml/preprocess/parser_raw.ml" +# 2986 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_xs_ in @@ -3625,15 +2990,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "src/ocaml/preprocess/parser_raw.mly" +# 1115 "src/ocaml/preprocess/parser_raw.mly" ( mkclass ~loc:_sloc _1 ) -# 3631 "src/ocaml/preprocess/parser_raw.ml" +# 2996 "src/ocaml/preprocess/parser_raw.ml" in -# 2033 "src/ocaml/preprocess/parser_raw.mly" +# 2120 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3637 "src/ocaml/preprocess/parser_raw.ml" +# 3002 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3657,23 +3022,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2032 "src/ocaml/preprocess/parser_raw.mly" +# 2119 "src/ocaml/preprocess/parser_raw.mly" ( Pcl_extension _1 ) -# 3663 "src/ocaml/preprocess/parser_raw.ml" +# 3028 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "src/ocaml/preprocess/parser_raw.mly" +# 1115 "src/ocaml/preprocess/parser_raw.mly" ( mkclass ~loc:_sloc _1 ) -# 3671 "src/ocaml/preprocess/parser_raw.ml" +# 3036 "src/ocaml/preprocess/parser_raw.ml" in -# 2033 "src/ocaml/preprocess/parser_raw.mly" +# 2120 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3677 "src/ocaml/preprocess/parser_raw.ml" +# 3042 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3726,33 +3091,33 @@ module Tables = struct let _v : (Parsetree.class_field) = let _6 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3732 "src/ocaml/preprocess/parser_raw.ml" +# 3097 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__6_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3741 "src/ocaml/preprocess/parser_raw.ml" +# 3106 "src/ocaml/preprocess/parser_raw.ml" in let _2 = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 3747 "src/ocaml/preprocess/parser_raw.ml" +# 3112 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2088 "src/ocaml/preprocess/parser_raw.mly" +# 2175 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_inherit (_2, _4, self)) ~attrs:(_3@_6) ~docs ) -# 3756 "src/ocaml/preprocess/parser_raw.ml" +# 3121 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3812,36 +3177,36 @@ module Tables = struct let _v : (Parsetree.class_field) = let _6 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3818 "src/ocaml/preprocess/parser_raw.ml" +# 3183 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _3 = let _1 = _1_inlined2 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3827 "src/ocaml/preprocess/parser_raw.ml" +# 3192 "src/ocaml/preprocess/parser_raw.ml" in let _2 = let _1 = _1_inlined1 in -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 3835 "src/ocaml/preprocess/parser_raw.ml" +# 3200 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2088 "src/ocaml/preprocess/parser_raw.mly" +# 2175 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_inherit (_2, _4, self)) ~attrs:(_3@_6) ~docs ) -# 3845 "src/ocaml/preprocess/parser_raw.ml" +# 3210 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3881,9 +3246,9 @@ module Tables = struct let _v : (Parsetree.class_field) = let _3 = let _1 = _1_inlined1 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3887 "src/ocaml/preprocess/parser_raw.ml" +# 3252 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -3891,11 +3256,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2091 "src/ocaml/preprocess/parser_raw.mly" +# 2178 "src/ocaml/preprocess/parser_raw.mly" ( let v, attrs = _2 in let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_val v) ~attrs:(attrs@_3) ~docs ) -# 3899 "src/ocaml/preprocess/parser_raw.ml" +# 3264 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3935,9 +3300,9 @@ module Tables = struct let _v : (Parsetree.class_field) = let _3 = let _1 = _1_inlined1 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 3941 "src/ocaml/preprocess/parser_raw.ml" +# 3306 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -3945,11 +3310,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2095 "src/ocaml/preprocess/parser_raw.mly" +# 2182 "src/ocaml/preprocess/parser_raw.mly" ( let meth, attrs = _2 in let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_method meth) ~attrs:(attrs@_3) ~docs ) -# 3953 "src/ocaml/preprocess/parser_raw.ml" +# 3318 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3995,28 +3360,28 @@ module Tables = struct let _v : (Parsetree.class_field) = let _4 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4001 "src/ocaml/preprocess/parser_raw.ml" +# 3366 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4010 "src/ocaml/preprocess/parser_raw.ml" +# 3375 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2099 "src/ocaml/preprocess/parser_raw.mly" +# 2186 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_constraint _3) ~attrs:(_2@_4) ~docs ) -# 4020 "src/ocaml/preprocess/parser_raw.ml" +# 3385 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4062,28 +3427,28 @@ module Tables = struct let _v : (Parsetree.class_field) = let _4 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4068 "src/ocaml/preprocess/parser_raw.ml" +# 3433 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4077 "src/ocaml/preprocess/parser_raw.ml" +# 3442 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2102 "src/ocaml/preprocess/parser_raw.mly" +# 2189 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_initializer _3) ~attrs:(_2@_4) ~docs ) -# 4087 "src/ocaml/preprocess/parser_raw.ml" +# 3452 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4115,9 +3480,9 @@ module Tables = struct let _v : (Parsetree.class_field) = let _2 = let _1 = _1_inlined1 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4121 "src/ocaml/preprocess/parser_raw.ml" +# 3486 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -4125,10 +3490,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2105 "src/ocaml/preprocess/parser_raw.mly" +# 2192 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_extension _1) ~attrs:_2 ~docs ) -# 4132 "src/ocaml/preprocess/parser_raw.ml" +# 3497 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4152,23 +3517,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_field) = let _1 = let _1 = -# 2108 "src/ocaml/preprocess/parser_raw.mly" +# 2195 "src/ocaml/preprocess/parser_raw.mly" ( Pcf_attribute _1 ) -# 4158 "src/ocaml/preprocess/parser_raw.ml" +# 3523 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1047 "src/ocaml/preprocess/parser_raw.mly" +# 1113 "src/ocaml/preprocess/parser_raw.mly" ( mkcf ~loc:_sloc _1 ) -# 4166 "src/ocaml/preprocess/parser_raw.ml" +# 3531 "src/ocaml/preprocess/parser_raw.ml" in -# 2109 "src/ocaml/preprocess/parser_raw.mly" +# 2196 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4172 "src/ocaml/preprocess/parser_raw.ml" +# 3537 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4198,9 +3563,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = -# 1997 "src/ocaml/preprocess/parser_raw.mly" +# 2084 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 4204 "src/ocaml/preprocess/parser_raw.ml" +# 3569 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4245,24 +3610,24 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2000 "src/ocaml/preprocess/parser_raw.mly" +# 2087 "src/ocaml/preprocess/parser_raw.mly" ( Pcl_constraint(_4, _2) ) -# 4251 "src/ocaml/preprocess/parser_raw.ml" +# 3616 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__4_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "src/ocaml/preprocess/parser_raw.mly" +# 1115 "src/ocaml/preprocess/parser_raw.mly" ( mkclass ~loc:_sloc _1 ) -# 4260 "src/ocaml/preprocess/parser_raw.ml" +# 3625 "src/ocaml/preprocess/parser_raw.ml" in -# 2003 "src/ocaml/preprocess/parser_raw.mly" +# 2090 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4266 "src/ocaml/preprocess/parser_raw.ml" +# 3631 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4293,24 +3658,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2002 "src/ocaml/preprocess/parser_raw.mly" +# 2089 "src/ocaml/preprocess/parser_raw.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, _2) ) -# 4299 "src/ocaml/preprocess/parser_raw.ml" +# 3664 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "src/ocaml/preprocess/parser_raw.mly" +# 1115 "src/ocaml/preprocess/parser_raw.mly" ( mkclass ~loc:_sloc _1 ) -# 4308 "src/ocaml/preprocess/parser_raw.ml" +# 3673 "src/ocaml/preprocess/parser_raw.ml" in -# 2003 "src/ocaml/preprocess/parser_raw.mly" +# 2090 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4314 "src/ocaml/preprocess/parser_raw.ml" +# 3679 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4348,24 +3713,24 @@ module Tables = struct let _endpos = _endpos_e_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2064 "src/ocaml/preprocess/parser_raw.mly" +# 2151 "src/ocaml/preprocess/parser_raw.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, e) ) -# 4354 "src/ocaml/preprocess/parser_raw.ml" +# 3719 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_e_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "src/ocaml/preprocess/parser_raw.mly" +# 1115 "src/ocaml/preprocess/parser_raw.mly" ( mkclass ~loc:_sloc _1 ) -# 4363 "src/ocaml/preprocess/parser_raw.ml" +# 3728 "src/ocaml/preprocess/parser_raw.ml" in -# 2065 "src/ocaml/preprocess/parser_raw.mly" +# 2152 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4369 "src/ocaml/preprocess/parser_raw.ml" +# 3734 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4396,24 +3761,24 @@ module Tables = struct let _endpos = _endpos_e_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2064 "src/ocaml/preprocess/parser_raw.mly" +# 2151 "src/ocaml/preprocess/parser_raw.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, e) ) -# 4402 "src/ocaml/preprocess/parser_raw.ml" +# 3767 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_e_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "src/ocaml/preprocess/parser_raw.mly" +# 1115 "src/ocaml/preprocess/parser_raw.mly" ( mkclass ~loc:_sloc _1 ) -# 4411 "src/ocaml/preprocess/parser_raw.ml" +# 3776 "src/ocaml/preprocess/parser_raw.ml" in -# 2065 "src/ocaml/preprocess/parser_raw.mly" +# 2152 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4417 "src/ocaml/preprocess/parser_raw.ml" +# 3782 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4436,9 +3801,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3839 "src/ocaml/preprocess/parser_raw.mly" +# 4046 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4442 "src/ocaml/preprocess/parser_raw.ml" +# 3807 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4478,9 +3843,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2073 "src/ocaml/preprocess/parser_raw.mly" +# 2160 "src/ocaml/preprocess/parser_raw.mly" ( reloc_pat ~loc:_sloc _2 ) -# 4484 "src/ocaml/preprocess/parser_raw.ml" +# 3849 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4532,24 +3897,24 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2075 "src/ocaml/preprocess/parser_raw.mly" +# 2162 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_constraint(_2, _4) ) -# 4538 "src/ocaml/preprocess/parser_raw.ml" +# 3903 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 4547 "src/ocaml/preprocess/parser_raw.ml" +# 3912 "src/ocaml/preprocess/parser_raw.ml" in -# 2076 "src/ocaml/preprocess/parser_raw.mly" +# 2163 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4553 "src/ocaml/preprocess/parser_raw.ml" +# 3918 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4568,9 +3933,9 @@ module Tables = struct let _symbolstartpos = _endpos in let _sloc = (_symbolstartpos, _endpos) in -# 2078 "src/ocaml/preprocess/parser_raw.mly" +# 2165 "src/ocaml/preprocess/parser_raw.mly" ( ghpat ~loc:_sloc Ppat_any ) -# 4574 "src/ocaml/preprocess/parser_raw.ml" +# 3939 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4607,9 +3972,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = -# 2205 "src/ocaml/preprocess/parser_raw.mly" +# 2292 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 4613 "src/ocaml/preprocess/parser_raw.ml" +# 3978 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4626,24 +3991,24 @@ module Tables = struct let _endpos = _startpos in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 2206 "src/ocaml/preprocess/parser_raw.mly" +# 2293 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_any ) -# 4632 "src/ocaml/preprocess/parser_raw.ml" +# 3997 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__0_ in let _endpos = _endpos__1_ in let _symbolstartpos = _endpos in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 4641 "src/ocaml/preprocess/parser_raw.ml" +# 4006 "src/ocaml/preprocess/parser_raw.ml" in -# 2207 "src/ocaml/preprocess/parser_raw.mly" +# 2294 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4647 "src/ocaml/preprocess/parser_raw.ml" +# 4012 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4689,28 +4054,28 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _4 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4695 "src/ocaml/preprocess/parser_raw.ml" +# 4060 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4704 "src/ocaml/preprocess/parser_raw.ml" +# 4069 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2215 "src/ocaml/preprocess/parser_raw.mly" +# 2302 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_inherit _3) ~attrs:(_2@_4) ~docs ) -# 4714 "src/ocaml/preprocess/parser_raw.ml" +# 4079 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4768,9 +4133,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _3 : unit = Obj.magic _3 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 4774 "src/ocaml/preprocess/parser_raw.ml" +# 4139 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let flags : (Asttypes.mutable_flag * Asttypes.virtual_flag) = Obj.magic flags in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -4781,9 +4146,9 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _4 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4787 "src/ocaml/preprocess/parser_raw.ml" +# 4152 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__4_ = _endpos__1_inlined3_ in @@ -4791,44 +4156,44 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let label = let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4797 "src/ocaml/preprocess/parser_raw.ml" +# 4162 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 4805 "src/ocaml/preprocess/parser_raw.ml" +# 4170 "src/ocaml/preprocess/parser_raw.ml" in -# 2240 "src/ocaml/preprocess/parser_raw.mly" +# 2327 "src/ocaml/preprocess/parser_raw.mly" ( let mut, virt = flags in label, mut, virt, ty ) -# 4814 "src/ocaml/preprocess/parser_raw.ml" +# 4179 "src/ocaml/preprocess/parser_raw.ml" in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4822 "src/ocaml/preprocess/parser_raw.ml" +# 4187 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2218 "src/ocaml/preprocess/parser_raw.mly" +# 2305 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_val _3) ~attrs:(_2@_4) ~docs ) -# 4832 "src/ocaml/preprocess/parser_raw.ml" +# 4197 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4886,9 +4251,9 @@ module Tables = struct let _1_inlined3 : (Parsetree.core_type) = Obj.magic _1_inlined3 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 4892 "src/ocaml/preprocess/parser_raw.ml" +# 4257 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag * Asttypes.virtual_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -4899,53 +4264,53 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _7 = let _1 = _1_inlined4 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4905 "src/ocaml/preprocess/parser_raw.ml" +# 4270 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__7_ = _endpos__1_inlined4_ in let _6 = let _1 = _1_inlined3 in -# 3480 "src/ocaml/preprocess/parser_raw.mly" +# 3631 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4914 "src/ocaml/preprocess/parser_raw.ml" +# 4279 "src/ocaml/preprocess/parser_raw.ml" in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4922 "src/ocaml/preprocess/parser_raw.ml" +# 4287 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 4930 "src/ocaml/preprocess/parser_raw.ml" +# 4295 "src/ocaml/preprocess/parser_raw.ml" in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4938 "src/ocaml/preprocess/parser_raw.ml" +# 4303 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2222 "src/ocaml/preprocess/parser_raw.mly" +# 2309 "src/ocaml/preprocess/parser_raw.mly" ( let (p, v) = _3 in let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_method (_4, p, v, _6)) ~attrs:(_2@_7) ~docs ) -# 4949 "src/ocaml/preprocess/parser_raw.ml" +# 4314 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4991,28 +4356,28 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _4 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 4997 "src/ocaml/preprocess/parser_raw.ml" +# 4362 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5006 "src/ocaml/preprocess/parser_raw.ml" +# 4371 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2226 "src/ocaml/preprocess/parser_raw.mly" +# 2313 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_constraint _3) ~attrs:(_2@_4) ~docs ) -# 5016 "src/ocaml/preprocess/parser_raw.ml" +# 4381 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5044,9 +4409,9 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _2 = let _1 = _1_inlined1 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5050 "src/ocaml/preprocess/parser_raw.ml" +# 4415 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -5054,10 +4419,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2229 "src/ocaml/preprocess/parser_raw.mly" +# 2316 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_extension _1) ~attrs:_2 ~docs ) -# 5061 "src/ocaml/preprocess/parser_raw.ml" +# 4426 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5081,23 +4446,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_type_field) = let _1 = let _1 = -# 2232 "src/ocaml/preprocess/parser_raw.mly" +# 2319 "src/ocaml/preprocess/parser_raw.mly" ( Pctf_attribute _1 ) -# 5087 "src/ocaml/preprocess/parser_raw.ml" +# 4452 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "src/ocaml/preprocess/parser_raw.mly" +# 1111 "src/ocaml/preprocess/parser_raw.mly" ( mkctf ~loc:_sloc _1 ) -# 5095 "src/ocaml/preprocess/parser_raw.ml" +# 4460 "src/ocaml/preprocess/parser_raw.ml" in -# 2233 "src/ocaml/preprocess/parser_raw.mly" +# 2320 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5101 "src/ocaml/preprocess/parser_raw.ml" +# 4466 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5126,42 +4491,42 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 5132 "src/ocaml/preprocess/parser_raw.ml" +# 4497 "src/ocaml/preprocess/parser_raw.ml" in let tys = let tys = -# 2191 "src/ocaml/preprocess/parser_raw.mly" +# 2278 "src/ocaml/preprocess/parser_raw.mly" ( [] ) -# 5139 "src/ocaml/preprocess/parser_raw.ml" +# 4504 "src/ocaml/preprocess/parser_raw.ml" in -# 2197 "src/ocaml/preprocess/parser_raw.mly" +# 2284 "src/ocaml/preprocess/parser_raw.mly" ( tys ) -# 5144 "src/ocaml/preprocess/parser_raw.ml" +# 4509 "src/ocaml/preprocess/parser_raw.ml" in -# 2172 "src/ocaml/preprocess/parser_raw.mly" +# 2259 "src/ocaml/preprocess/parser_raw.mly" ( Pcty_constr (cid, tys) ) -# 5150 "src/ocaml/preprocess/parser_raw.ml" +# 4515 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1043 "src/ocaml/preprocess/parser_raw.mly" +# 1109 "src/ocaml/preprocess/parser_raw.mly" ( mkcty ~loc:_sloc _1 ) -# 5159 "src/ocaml/preprocess/parser_raw.ml" +# 4524 "src/ocaml/preprocess/parser_raw.ml" in -# 2175 "src/ocaml/preprocess/parser_raw.mly" +# 2262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5165 "src/ocaml/preprocess/parser_raw.ml" +# 4530 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5212,9 +4577,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 5218 "src/ocaml/preprocess/parser_raw.ml" +# 4583 "src/ocaml/preprocess/parser_raw.ml" in let tys = @@ -5223,30 +4588,30 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 5227 "src/ocaml/preprocess/parser_raw.ml" +# 4592 "src/ocaml/preprocess/parser_raw.ml" in -# 1130 "src/ocaml/preprocess/parser_raw.mly" +# 1217 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 5232 "src/ocaml/preprocess/parser_raw.ml" +# 4597 "src/ocaml/preprocess/parser_raw.ml" in -# 2193 "src/ocaml/preprocess/parser_raw.mly" +# 2280 "src/ocaml/preprocess/parser_raw.mly" ( params ) -# 5238 "src/ocaml/preprocess/parser_raw.ml" +# 4603 "src/ocaml/preprocess/parser_raw.ml" in -# 2197 "src/ocaml/preprocess/parser_raw.mly" +# 2284 "src/ocaml/preprocess/parser_raw.mly" ( tys ) -# 5244 "src/ocaml/preprocess/parser_raw.ml" +# 4609 "src/ocaml/preprocess/parser_raw.ml" in -# 2172 "src/ocaml/preprocess/parser_raw.mly" +# 2259 "src/ocaml/preprocess/parser_raw.mly" ( Pcty_constr (cid, tys) ) -# 5250 "src/ocaml/preprocess/parser_raw.ml" +# 4615 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -5254,15 +4619,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1043 "src/ocaml/preprocess/parser_raw.mly" +# 1109 "src/ocaml/preprocess/parser_raw.mly" ( mkcty ~loc:_sloc _1 ) -# 5260 "src/ocaml/preprocess/parser_raw.ml" +# 4625 "src/ocaml/preprocess/parser_raw.ml" in -# 2175 "src/ocaml/preprocess/parser_raw.mly" +# 2262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5266 "src/ocaml/preprocess/parser_raw.ml" +# 4631 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5286,23 +4651,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_type) = let _1 = let _1 = -# 2174 "src/ocaml/preprocess/parser_raw.mly" +# 2261 "src/ocaml/preprocess/parser_raw.mly" ( Pcty_extension _1 ) -# 5292 "src/ocaml/preprocess/parser_raw.ml" +# 4657 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1043 "src/ocaml/preprocess/parser_raw.mly" +# 1109 "src/ocaml/preprocess/parser_raw.mly" ( mkcty ~loc:_sloc _1 ) -# 5300 "src/ocaml/preprocess/parser_raw.ml" +# 4665 "src/ocaml/preprocess/parser_raw.ml" in -# 2175 "src/ocaml/preprocess/parser_raw.mly" +# 2262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5306 "src/ocaml/preprocess/parser_raw.ml" +# 4671 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5359,44 +4724,44 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 5363 "src/ocaml/preprocess/parser_raw.ml" +# 4728 "src/ocaml/preprocess/parser_raw.ml" in -# 2211 "src/ocaml/preprocess/parser_raw.mly" +# 2298 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5368 "src/ocaml/preprocess/parser_raw.ml" +# 4733 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 991 "src/ocaml/preprocess/parser_raw.mly" +# 1057 "src/ocaml/preprocess/parser_raw.mly" ( extra_csig _startpos _endpos _1 ) -# 5377 "src/ocaml/preprocess/parser_raw.ml" +# 4742 "src/ocaml/preprocess/parser_raw.ml" in -# 2201 "src/ocaml/preprocess/parser_raw.mly" +# 2288 "src/ocaml/preprocess/parser_raw.mly" ( Csig.mk _1 _2 ) -# 5383 "src/ocaml/preprocess/parser_raw.ml" +# 4748 "src/ocaml/preprocess/parser_raw.ml" in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5391 "src/ocaml/preprocess/parser_raw.ml" +# 4756 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2177 "src/ocaml/preprocess/parser_raw.mly" +# 2264 "src/ocaml/preprocess/parser_raw.mly" ( mkcty ~loc:_sloc ~attrs:_2 (Pcty_signature _3) ) -# 5400 "src/ocaml/preprocess/parser_raw.ml" +# 4765 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5426,9 +4791,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_type) = -# 2183 "src/ocaml/preprocess/parser_raw.mly" +# 2270 "src/ocaml/preprocess/parser_raw.mly" ( Cty.attr _1 _2 ) -# 5432 "src/ocaml/preprocess/parser_raw.ml" +# 4797 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5491,34 +4856,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 5497 "src/ocaml/preprocess/parser_raw.ml" +# 4862 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__5_ = _endpos__1_inlined2_ in let _4 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5506 "src/ocaml/preprocess/parser_raw.ml" +# 4871 "src/ocaml/preprocess/parser_raw.ml" in let _3 = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 5512 "src/ocaml/preprocess/parser_raw.ml" +# 4877 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2185 "src/ocaml/preprocess/parser_raw.mly" +# 2272 "src/ocaml/preprocess/parser_raw.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkcty ~loc:_sloc ~attrs:_4 (Pcty_open(od, _7)) ) -# 5522 "src/ocaml/preprocess/parser_raw.ml" +# 4887 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5588,37 +4953,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 5594 "src/ocaml/preprocess/parser_raw.ml" +# 4959 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5603 "src/ocaml/preprocess/parser_raw.ml" +# 4968 "src/ocaml/preprocess/parser_raw.ml" in let _3 = let _1 = _1_inlined1 in -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 5611 "src/ocaml/preprocess/parser_raw.ml" +# 4976 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2185 "src/ocaml/preprocess/parser_raw.mly" +# 2272 "src/ocaml/preprocess/parser_raw.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkcty ~loc:_sloc ~attrs:_4 (Pcty_open(od, _7)) ) -# 5622 "src/ocaml/preprocess/parser_raw.ml" +# 4987 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5655,9 +5020,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.class_expr) = -# 2037 "src/ocaml/preprocess/parser_raw.mly" +# 2124 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 5661 "src/ocaml/preprocess/parser_raw.ml" +# 5026 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5686,42 +5051,42 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 5692 "src/ocaml/preprocess/parser_raw.ml" +# 5057 "src/ocaml/preprocess/parser_raw.ml" in let tys = let tys = -# 2191 "src/ocaml/preprocess/parser_raw.mly" +# 2278 "src/ocaml/preprocess/parser_raw.mly" ( [] ) -# 5699 "src/ocaml/preprocess/parser_raw.ml" +# 5064 "src/ocaml/preprocess/parser_raw.ml" in -# 2197 "src/ocaml/preprocess/parser_raw.mly" +# 2284 "src/ocaml/preprocess/parser_raw.mly" ( tys ) -# 5704 "src/ocaml/preprocess/parser_raw.ml" +# 5069 "src/ocaml/preprocess/parser_raw.ml" in -# 2044 "src/ocaml/preprocess/parser_raw.mly" +# 2131 "src/ocaml/preprocess/parser_raw.mly" ( Pcl_constr(cid, tys) ) -# 5710 "src/ocaml/preprocess/parser_raw.ml" +# 5075 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "src/ocaml/preprocess/parser_raw.mly" +# 1115 "src/ocaml/preprocess/parser_raw.mly" ( mkclass ~loc:_sloc _1 ) -# 5719 "src/ocaml/preprocess/parser_raw.ml" +# 5084 "src/ocaml/preprocess/parser_raw.ml" in -# 2055 "src/ocaml/preprocess/parser_raw.mly" +# 2142 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5725 "src/ocaml/preprocess/parser_raw.ml" +# 5090 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5772,9 +5137,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 5778 "src/ocaml/preprocess/parser_raw.ml" +# 5143 "src/ocaml/preprocess/parser_raw.ml" in let tys = @@ -5783,30 +5148,30 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 5787 "src/ocaml/preprocess/parser_raw.ml" +# 5152 "src/ocaml/preprocess/parser_raw.ml" in -# 1130 "src/ocaml/preprocess/parser_raw.mly" +# 1217 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 5792 "src/ocaml/preprocess/parser_raw.ml" +# 5157 "src/ocaml/preprocess/parser_raw.ml" in -# 2193 "src/ocaml/preprocess/parser_raw.mly" +# 2280 "src/ocaml/preprocess/parser_raw.mly" ( params ) -# 5798 "src/ocaml/preprocess/parser_raw.ml" +# 5163 "src/ocaml/preprocess/parser_raw.ml" in -# 2197 "src/ocaml/preprocess/parser_raw.mly" +# 2284 "src/ocaml/preprocess/parser_raw.mly" ( tys ) -# 5804 "src/ocaml/preprocess/parser_raw.ml" +# 5169 "src/ocaml/preprocess/parser_raw.ml" in -# 2044 "src/ocaml/preprocess/parser_raw.mly" +# 2131 "src/ocaml/preprocess/parser_raw.mly" ( Pcl_constr(cid, tys) ) -# 5810 "src/ocaml/preprocess/parser_raw.ml" +# 5175 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -5814,15 +5179,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "src/ocaml/preprocess/parser_raw.mly" +# 1115 "src/ocaml/preprocess/parser_raw.mly" ( mkclass ~loc:_sloc _1 ) -# 5820 "src/ocaml/preprocess/parser_raw.ml" +# 5185 "src/ocaml/preprocess/parser_raw.ml" in -# 2055 "src/ocaml/preprocess/parser_raw.mly" +# 2142 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5826 "src/ocaml/preprocess/parser_raw.ml" +# 5191 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5874,24 +5239,24 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2050 "src/ocaml/preprocess/parser_raw.mly" +# 2137 "src/ocaml/preprocess/parser_raw.mly" ( Pcl_constraint(_2, _4) ) -# 5880 "src/ocaml/preprocess/parser_raw.ml" +# 5245 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1049 "src/ocaml/preprocess/parser_raw.mly" +# 1115 "src/ocaml/preprocess/parser_raw.mly" ( mkclass ~loc:_sloc _1 ) -# 5889 "src/ocaml/preprocess/parser_raw.ml" +# 5254 "src/ocaml/preprocess/parser_raw.ml" in -# 2055 "src/ocaml/preprocess/parser_raw.mly" +# 2142 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5895 "src/ocaml/preprocess/parser_raw.ml" +# 5260 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5948,44 +5313,44 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 5952 "src/ocaml/preprocess/parser_raw.ml" +# 5317 "src/ocaml/preprocess/parser_raw.ml" in -# 2082 "src/ocaml/preprocess/parser_raw.mly" +# 2169 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5957 "src/ocaml/preprocess/parser_raw.ml" +# 5322 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 990 "src/ocaml/preprocess/parser_raw.mly" +# 1056 "src/ocaml/preprocess/parser_raw.mly" ( extra_cstr _startpos _endpos _1 ) -# 5966 "src/ocaml/preprocess/parser_raw.ml" +# 5331 "src/ocaml/preprocess/parser_raw.ml" in -# 2069 "src/ocaml/preprocess/parser_raw.mly" +# 2156 "src/ocaml/preprocess/parser_raw.mly" ( Cstr.mk _1 _2 ) -# 5972 "src/ocaml/preprocess/parser_raw.ml" +# 5337 "src/ocaml/preprocess/parser_raw.ml" in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 5980 "src/ocaml/preprocess/parser_raw.ml" +# 5345 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2057 "src/ocaml/preprocess/parser_raw.mly" +# 2144 "src/ocaml/preprocess/parser_raw.mly" ( mkclass ~loc:_sloc ~attrs:_2 (Pcl_structure _3) ) -# 5989 "src/ocaml/preprocess/parser_raw.ml" +# 5354 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6008,9 +5373,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.class_type) = -# 2160 "src/ocaml/preprocess/parser_raw.mly" +# 2247 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6014 "src/ocaml/preprocess/parser_raw.ml" +# 5379 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6056,14 +5421,14 @@ module Tables = struct let _v : (Parsetree.class_type) = let _1 = let _1 = let label = -# 3543 "src/ocaml/preprocess/parser_raw.mly" +# 3694 "src/ocaml/preprocess/parser_raw.mly" ( Optional label ) -# 6062 "src/ocaml/preprocess/parser_raw.ml" +# 5427 "src/ocaml/preprocess/parser_raw.ml" in -# 2166 "src/ocaml/preprocess/parser_raw.mly" +# 2253 "src/ocaml/preprocess/parser_raw.mly" ( Pcty_arrow(label, domain, codomain) ) -# 6067 "src/ocaml/preprocess/parser_raw.ml" +# 5432 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -6071,15 +5436,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1043 "src/ocaml/preprocess/parser_raw.mly" +# 1109 "src/ocaml/preprocess/parser_raw.mly" ( mkcty ~loc:_sloc _1 ) -# 6077 "src/ocaml/preprocess/parser_raw.ml" +# 5442 "src/ocaml/preprocess/parser_raw.ml" in -# 2167 "src/ocaml/preprocess/parser_raw.mly" +# 2254 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6083 "src/ocaml/preprocess/parser_raw.ml" +# 5448 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6126,9 +5491,9 @@ module Tables = struct let domain : (Parsetree.core_type) = Obj.magic domain in let _2 : unit = Obj.magic _2 in let label : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 6132 "src/ocaml/preprocess/parser_raw.ml" +# 5497 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -6136,14 +5501,14 @@ module Tables = struct let _v : (Parsetree.class_type) = let _1 = let _1 = let label = -# 3545 "src/ocaml/preprocess/parser_raw.mly" +# 3696 "src/ocaml/preprocess/parser_raw.mly" ( Labelled label ) -# 6142 "src/ocaml/preprocess/parser_raw.ml" +# 5507 "src/ocaml/preprocess/parser_raw.ml" in -# 2166 "src/ocaml/preprocess/parser_raw.mly" +# 2253 "src/ocaml/preprocess/parser_raw.mly" ( Pcty_arrow(label, domain, codomain) ) -# 6147 "src/ocaml/preprocess/parser_raw.ml" +# 5512 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -6151,15 +5516,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1043 "src/ocaml/preprocess/parser_raw.mly" +# 1109 "src/ocaml/preprocess/parser_raw.mly" ( mkcty ~loc:_sloc _1 ) -# 6157 "src/ocaml/preprocess/parser_raw.ml" +# 5522 "src/ocaml/preprocess/parser_raw.ml" in -# 2167 "src/ocaml/preprocess/parser_raw.mly" +# 2254 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6163 "src/ocaml/preprocess/parser_raw.ml" +# 5528 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6198,14 +5563,14 @@ module Tables = struct let _v : (Parsetree.class_type) = let _1 = let _1 = let label = -# 3547 "src/ocaml/preprocess/parser_raw.mly" +# 3698 "src/ocaml/preprocess/parser_raw.mly" ( Nolabel ) -# 6204 "src/ocaml/preprocess/parser_raw.ml" +# 5569 "src/ocaml/preprocess/parser_raw.ml" in -# 2166 "src/ocaml/preprocess/parser_raw.mly" +# 2253 "src/ocaml/preprocess/parser_raw.mly" ( Pcty_arrow(label, domain, codomain) ) -# 6209 "src/ocaml/preprocess/parser_raw.ml" +# 5574 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_domain_) in @@ -6213,15 +5578,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1043 "src/ocaml/preprocess/parser_raw.mly" +# 1109 "src/ocaml/preprocess/parser_raw.mly" ( mkcty ~loc:_sloc _1 ) -# 6219 "src/ocaml/preprocess/parser_raw.ml" +# 5584 "src/ocaml/preprocess/parser_raw.ml" in -# 2167 "src/ocaml/preprocess/parser_raw.mly" +# 2254 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6225 "src/ocaml/preprocess/parser_raw.ml" +# 5590 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6304,9 +5669,9 @@ module Tables = struct let csig : (Parsetree.class_type) = Obj.magic csig in let _8 : unit = Obj.magic _8 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 6310 "src/ocaml/preprocess/parser_raw.ml" +# 5675 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -6322,9 +5687,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6328 "src/ocaml/preprocess/parser_raw.ml" +# 5693 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -6334,24 +5699,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 6340 "src/ocaml/preprocess/parser_raw.ml" +# 5705 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6348 "src/ocaml/preprocess/parser_raw.ml" +# 5713 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2307 "src/ocaml/preprocess/parser_raw.mly" +# 2394 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -6359,19 +5724,19 @@ module Tables = struct ext, Ci.mk id csig ~virt ~params ~attrs ~loc ~docs ) -# 6363 "src/ocaml/preprocess/parser_raw.ml" +# 5728 "src/ocaml/preprocess/parser_raw.ml" in -# 1227 "src/ocaml/preprocess/parser_raw.mly" +# 1314 "src/ocaml/preprocess/parser_raw.mly" ( let (x, b) = a in x, b :: bs ) -# 6369 "src/ocaml/preprocess/parser_raw.ml" +# 5734 "src/ocaml/preprocess/parser_raw.ml" in -# 2295 "src/ocaml/preprocess/parser_raw.mly" +# 2382 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6375 "src/ocaml/preprocess/parser_raw.ml" +# 5740 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6394,9 +5759,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3836 "src/ocaml/preprocess/parser_raw.mly" +# 4043 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6400 "src/ocaml/preprocess/parser_raw.ml" +# 5765 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6415,17 +5780,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 785 "src/ocaml/preprocess/parser_raw.mly" +# 851 "src/ocaml/preprocess/parser_raw.mly" (string * char option) -# 6421 "src/ocaml/preprocess/parser_raw.ml" +# 5786 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 3715 "src/ocaml/preprocess/parser_raw.mly" +# 3922 "src/ocaml/preprocess/parser_raw.mly" ( let (n, m) = _1 in Pconst_integer (n, m) ) -# 6429 "src/ocaml/preprocess/parser_raw.ml" +# 5794 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6444,17 +5809,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 744 "src/ocaml/preprocess/parser_raw.mly" +# 810 "src/ocaml/preprocess/parser_raw.mly" (char) -# 6450 "src/ocaml/preprocess/parser_raw.ml" +# 5815 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 3716 "src/ocaml/preprocess/parser_raw.mly" +# 3923 "src/ocaml/preprocess/parser_raw.mly" ( Pconst_char _1 ) -# 6458 "src/ocaml/preprocess/parser_raw.ml" +# 5823 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6473,17 +5838,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 837 "src/ocaml/preprocess/parser_raw.mly" +# 903 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string option) -# 6479 "src/ocaml/preprocess/parser_raw.ml" +# 5844 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 3717 "src/ocaml/preprocess/parser_raw.mly" +# 3924 "src/ocaml/preprocess/parser_raw.mly" ( let (s, strloc, d) = _1 in Pconst_string (s, strloc, d) ) -# 6487 "src/ocaml/preprocess/parser_raw.ml" +# 5852 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6502,17 +5867,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 764 "src/ocaml/preprocess/parser_raw.mly" +# 830 "src/ocaml/preprocess/parser_raw.mly" (string * char option) -# 6508 "src/ocaml/preprocess/parser_raw.ml" +# 5873 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 3718 "src/ocaml/preprocess/parser_raw.mly" +# 3925 "src/ocaml/preprocess/parser_raw.mly" ( let (f, m) = _1 in Pconst_float (f, m) ) -# 6516 "src/ocaml/preprocess/parser_raw.ml" +# 5881 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6542,9 +5907,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string) = -# 3791 "src/ocaml/preprocess/parser_raw.mly" +# 3998 "src/ocaml/preprocess/parser_raw.mly" ( "[]" ) -# 6548 "src/ocaml/preprocess/parser_raw.ml" +# 5913 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6574,9 +5939,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string) = -# 3792 "src/ocaml/preprocess/parser_raw.mly" +# 3999 "src/ocaml/preprocess/parser_raw.mly" ( "()" ) -# 6580 "src/ocaml/preprocess/parser_raw.ml" +# 5945 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6599,9 +5964,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3793 "src/ocaml/preprocess/parser_raw.mly" +# 4000 "src/ocaml/preprocess/parser_raw.mly" ( "false" ) -# 6605 "src/ocaml/preprocess/parser_raw.ml" +# 5970 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6624,9 +5989,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3794 "src/ocaml/preprocess/parser_raw.mly" +# 4001 "src/ocaml/preprocess/parser_raw.mly" ( "true" ) -# 6630 "src/ocaml/preprocess/parser_raw.ml" +# 5995 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6645,17 +6010,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) -# 6651 "src/ocaml/preprocess/parser_raw.ml" +# 6016 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3797 "src/ocaml/preprocess/parser_raw.mly" +# 4004 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6659 "src/ocaml/preprocess/parser_raw.ml" +# 6024 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6692,14 +6057,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (string) = let _1 = -# 3788 "src/ocaml/preprocess/parser_raw.mly" +# 3995 "src/ocaml/preprocess/parser_raw.mly" ( "::" ) -# 6698 "src/ocaml/preprocess/parser_raw.ml" +# 6063 "src/ocaml/preprocess/parser_raw.ml" in -# 3798 "src/ocaml/preprocess/parser_raw.mly" +# 4005 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6703 "src/ocaml/preprocess/parser_raw.ml" +# 6068 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6722,9 +6087,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3799 "src/ocaml/preprocess/parser_raw.mly" +# 4006 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6728 "src/ocaml/preprocess/parser_raw.ml" +# 6093 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6747,9 +6112,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3802 "src/ocaml/preprocess/parser_raw.mly" +# 4009 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 6753 "src/ocaml/preprocess/parser_raw.ml" +# 6118 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6802,15 +6167,15 @@ module Tables = struct let _v : (Longident.t) = let _3 = let (_2, _1) = (_2_inlined1, _1_inlined1) in -# 3788 "src/ocaml/preprocess/parser_raw.mly" +# 3995 "src/ocaml/preprocess/parser_raw.mly" ( "::" ) -# 6808 "src/ocaml/preprocess/parser_raw.ml" +# 6173 "src/ocaml/preprocess/parser_raw.ml" in -# 3803 "src/ocaml/preprocess/parser_raw.mly" +# 4010 "src/ocaml/preprocess/parser_raw.mly" ( Ldot(_1,_3) ) -# 6814 "src/ocaml/preprocess/parser_raw.ml" +# 6179 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6847,14 +6212,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = let _1 = -# 3788 "src/ocaml/preprocess/parser_raw.mly" +# 3995 "src/ocaml/preprocess/parser_raw.mly" ( "::" ) -# 6853 "src/ocaml/preprocess/parser_raw.ml" +# 6218 "src/ocaml/preprocess/parser_raw.ml" in -# 3804 "src/ocaml/preprocess/parser_raw.mly" +# 4011 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 6858 "src/ocaml/preprocess/parser_raw.ml" +# 6223 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6877,9 +6242,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3805 "src/ocaml/preprocess/parser_raw.mly" +# 4012 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 6883 "src/ocaml/preprocess/parser_raw.ml" +# 6248 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6916,9 +6281,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type * Parsetree.core_type) = -# 2251 "src/ocaml/preprocess/parser_raw.mly" +# 2338 "src/ocaml/preprocess/parser_raw.mly" ( _1, _3 ) -# 6922 "src/ocaml/preprocess/parser_raw.ml" +# 6287 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6943,26 +6308,26 @@ module Tables = struct let _v : (Parsetree.constructor_arguments) = let tys = let xs = let xs = -# 1114 "src/ocaml/preprocess/parser_raw.mly" +# 1201 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 6949 "src/ocaml/preprocess/parser_raw.ml" +# 6314 "src/ocaml/preprocess/parser_raw.ml" in # 253 "" ( List.rev xs ) -# 6954 "src/ocaml/preprocess/parser_raw.ml" +# 6319 "src/ocaml/preprocess/parser_raw.ml" in -# 1134 "src/ocaml/preprocess/parser_raw.mly" +# 1221 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 6960 "src/ocaml/preprocess/parser_raw.ml" +# 6325 "src/ocaml/preprocess/parser_raw.ml" in -# 3346 "src/ocaml/preprocess/parser_raw.mly" +# 3497 "src/ocaml/preprocess/parser_raw.mly" ( Pcstr_tuple tys ) -# 6966 "src/ocaml/preprocess/parser_raw.ml" +# 6331 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7001,26 +6366,26 @@ module Tables = struct let _v : (Parsetree.constructor_arguments) = let tys = let xs = let xs = -# 1118 "src/ocaml/preprocess/parser_raw.mly" +# 1205 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 7007 "src/ocaml/preprocess/parser_raw.ml" +# 6372 "src/ocaml/preprocess/parser_raw.ml" in # 253 "" ( List.rev xs ) -# 7012 "src/ocaml/preprocess/parser_raw.ml" +# 6377 "src/ocaml/preprocess/parser_raw.ml" in -# 1134 "src/ocaml/preprocess/parser_raw.mly" +# 1221 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 7018 "src/ocaml/preprocess/parser_raw.ml" +# 6383 "src/ocaml/preprocess/parser_raw.ml" in -# 3346 "src/ocaml/preprocess/parser_raw.mly" +# 3497 "src/ocaml/preprocess/parser_raw.mly" ( Pcstr_tuple tys ) -# 7024 "src/ocaml/preprocess/parser_raw.ml" +# 6389 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7057,9 +6422,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.constructor_arguments) = -# 3348 "src/ocaml/preprocess/parser_raw.mly" +# 3499 "src/ocaml/preprocess/parser_raw.mly" ( Pcstr_record _2 ) -# 7063 "src/ocaml/preprocess/parser_raw.ml" +# 6428 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7082,9 +6447,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constructor_declaration list) = -# 3262 "src/ocaml/preprocess/parser_raw.mly" +# 3413 "src/ocaml/preprocess/parser_raw.mly" ( [] ) -# 7088 "src/ocaml/preprocess/parser_raw.ml" +# 6453 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7107,14 +6472,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.constructor_declaration list) = let cs = -# 1219 "src/ocaml/preprocess/parser_raw.mly" +# 1306 "src/ocaml/preprocess/parser_raw.mly" ( List.rev xs ) -# 7113 "src/ocaml/preprocess/parser_raw.ml" +# 6478 "src/ocaml/preprocess/parser_raw.ml" in -# 3264 "src/ocaml/preprocess/parser_raw.mly" +# 3415 "src/ocaml/preprocess/parser_raw.mly" ( cs ) -# 7118 "src/ocaml/preprocess/parser_raw.ml" +# 6483 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7137,14 +6502,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = -# 3505 "src/ocaml/preprocess/parser_raw.mly" +# 3656 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 7143 "src/ocaml/preprocess/parser_raw.ml" +# 6508 "src/ocaml/preprocess/parser_raw.ml" in -# 3495 "src/ocaml/preprocess/parser_raw.mly" +# 3646 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 7148 "src/ocaml/preprocess/parser_raw.ml" +# 6513 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7174,9 +6539,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = -# 3497 "src/ocaml/preprocess/parser_raw.mly" +# 3648 "src/ocaml/preprocess/parser_raw.mly" ( Typ.attr _1 _2 ) -# 7180 "src/ocaml/preprocess/parser_raw.ml" +# 6545 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7194,14 +6559,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _1 : (Parsetree.core_type) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (Asttypes.direction_flag) = -# 3902 "src/ocaml/preprocess/parser_raw.mly" - ( Upto ) -# 7205 "src/ocaml/preprocess/parser_raw.ml" + let _v : (Parsetree.core_type) = +# 3796 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 6570 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7219,14 +6584,39 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _1 : (Parsetree.core_type) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (Asttypes.direction_flag) = -# 3903 "src/ocaml/preprocess/parser_raw.mly" - ( Downto ) -# 7230 "src/ocaml/preprocess/parser_raw.ml" + let _v : (Parsetree.core_type) = +# 3796 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 6595 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.core_type) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.core_type) = +# 3796 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 6620 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7244,9 +6634,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = type_; + MenhirLib.EngineTypes.startp = _startpos_type__; + MenhirLib.EngineTypes.endp = _endpos_type__; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -7256,19 +6646,16 @@ module Tables = struct }; }; } = _menhir_stack in - let _3 : (Parsetree.expression) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Ast_helper.let_bindings) = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let type_ : (Parsetree.core_type) = Obj.magic type_ in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in - let _v : (Parsetree.expression) = let _endpos = _endpos__3_ in - let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in - -# 4112 "src/ocaml/preprocess/parser_raw.mly" - ( expr_of_lwt_bindings ~loc:_loc _1 (merloc _endpos__2_ _3) ) -# 7272 "src/ocaml/preprocess/parser_raw.ml" + let _v : (Parsetree.core_type) = +# 3749 "src/ocaml/preprocess/parser_raw.mly" + ( type_ ) +# 6659 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7281,29 +6668,29 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -7316,60 +6703,51 @@ module Tables = struct }; }; } = _menhir_stack in - let xs : (Parsetree.case list) = Obj.magic xs in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.expression) = Obj.magic _3 in + let _5 : unit = Obj.magic _5 in + let _1_inlined3 : (Parsetree.module_type) = Obj.magic _1_inlined3 in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in - let _v : (Parsetree.expression) = let _5 = - let xs = - let xs = -# 253 "" - ( List.rev xs ) -# 7334 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1191 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 7339 "src/ocaml/preprocess/parser_raw.ml" - - in + let _endpos = _endpos__5_ in + let _v : (Parsetree.core_type) = let package_type = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 2802 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 7345 "src/ocaml/preprocess/parser_raw.ml" +# 3842 "src/ocaml/preprocess/parser_raw.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + let descr = Ptyp_package (lid, cstrs) in + mktyp ~loc:_sloc ~attrs descr ) +# 6726 "src/ocaml/preprocess/parser_raw.ml" in - let _endpos__5_ = _endpos_xs_ in - let _2 = + let attrs = let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 7356 "src/ocaml/preprocess/parser_raw.ml" +# 6736 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 7362 "src/ocaml/preprocess/parser_raw.ml" +# 6742 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in - let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4114 "src/ocaml/preprocess/parser_raw.mly" - ( let expr = mkexp_attrs ~loc:_loc - (Pexp_match(Fake.app Fake.Lwt.un_lwt _3, List.rev _5)) _2 in - Fake.app Fake.Lwt.in_lwt expr ) -# 7373 "src/ocaml/preprocess/parser_raw.ml" +# 3751 "src/ocaml/preprocess/parser_raw.mly" + ( wrap_typ_attrs ~loc:_sloc (reloc_typ ~loc:_sloc package_type) attrs ) +# 6751 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7387,14 +6765,69 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = field; + MenhirLib.EngineTypes.startp = _startpos_field_; + MenhirLib.EngineTypes.endp = _endpos_field_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let field : (Parsetree.row_field) = Obj.magic field in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (Parsetree.core_type) = let _1 = + let _1 = +# 3754 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_variant([ field ], Closed, None) ) +# 6791 "src/ocaml/preprocess/parser_raw.ml" + in + let _endpos__1_ = _endpos__3_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1099 "src/ocaml/preprocess/parser_raw.mly" + ( mktyp ~loc:_sloc _1 ) +# 6800 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3771 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 6806 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -7405,36 +6838,54 @@ module Tables = struct }; }; } = _menhir_stack in - let _3 : (Parsetree.expression) = Obj.magic _3 in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _4 : unit = Obj.magic _4 in + let xs : (Parsetree.row_field list) = Obj.magic xs in + let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Parsetree.expression) = let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4055 "src/ocaml/preprocess/parser_raw.mly" + let _endpos = _endpos__4_ in + let _v : (Parsetree.core_type) = let _1 = + let _1 = + let fields = + let _1 = + let xs = +# 253 "" + ( List.rev xs ) +# 6856 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1217 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 6861 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3848 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 7423 "src/ocaml/preprocess/parser_raw.ml" +# 6867 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3756 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_variant(fields, Closed, None) ) +# 6873 "src/ocaml/preprocess/parser_raw.ml" in + let _endpos__1_ = _endpos__4_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4068 "src/ocaml/preprocess/parser_raw.mly" - ( _1, _2 ) -# 7429 "src/ocaml/preprocess/parser_raw.ml" +# 1099 "src/ocaml/preprocess/parser_raw.mly" + ( mktyp ~loc:_sloc _1 ) +# 6883 "src/ocaml/preprocess/parser_raw.ml" in - let _endpos = _endpos__3_ in - let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in -# 4118 "src/ocaml/preprocess/parser_raw.mly" - ( reloc_exp ~loc:_loc (Fake.app Fake.Lwt.in_lwt _3) ) -# 7438 "src/ocaml/preprocess/parser_raw.ml" +# 3771 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 6889 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7447,14 +6898,14 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -7462,79 +6913,1603 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = field; + MenhirLib.EngineTypes.startp = _startpos_field_; + MenhirLib.EngineTypes.endp = _endpos_field_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; }; } = _menhir_stack in - let xs : (Parsetree.case list) = Obj.magic xs in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.expression) = Obj.magic _3 in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _5 : unit = Obj.magic _5 in + let xs : (Parsetree.row_field list) = Obj.magic xs in + let _3 : unit = Obj.magic _3 in + let field : (Parsetree.row_field) = Obj.magic field in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in - let _v : (Parsetree.expression) = let _5 = - let xs = - let xs = + let _endpos = _endpos__5_ in + let _v : (Parsetree.core_type) = let _1 = + let _1 = + let fields = + let _1 = + let xs = # 253 "" ( List.rev xs ) -# 7500 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1191 "src/ocaml/preprocess/parser_raw.mly" +# 6946 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1217 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 7505 "src/ocaml/preprocess/parser_raw.ml" +# 6951 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3848 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 6957 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3758 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_variant(field :: fields, Closed, None) ) +# 6963 "src/ocaml/preprocess/parser_raw.ml" in + let _endpos__1_ = _endpos__5_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 2802 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 7511 "src/ocaml/preprocess/parser_raw.ml" +# 1099 "src/ocaml/preprocess/parser_raw.mly" + ( mktyp ~loc:_sloc _1 ) +# 6973 "src/ocaml/preprocess/parser_raw.ml" in - let _endpos__5_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4055 "src/ocaml/preprocess/parser_raw.mly" + +# 3771 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 6979 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _4 : unit = Obj.magic _4 in + let xs : (Parsetree.row_field list) = Obj.magic xs in + let _2 : (unit option) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in + let _v : (Parsetree.core_type) = let _1 = + let _1 = + let fields = + let _1 = + let xs = +# 253 "" + ( List.rev xs ) +# 7029 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1217 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 7034 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3848 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 7522 "src/ocaml/preprocess/parser_raw.ml" +# 7040 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3760 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_variant(fields, Open, None) ) +# 7046 "src/ocaml/preprocess/parser_raw.ml" in + let _endpos__1_ = _endpos__4_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4068 "src/ocaml/preprocess/parser_raw.mly" - ( _1, _2 ) -# 7528 "src/ocaml/preprocess/parser_raw.ml" +# 1099 "src/ocaml/preprocess/parser_raw.mly" + ( mktyp ~loc:_sloc _1 ) +# 7056 "src/ocaml/preprocess/parser_raw.ml" in - let _endpos = _endpos__5_ in + +# 3771 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7062 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in + let _endpos = _endpos__2_ in + let _v : (Parsetree.core_type) = let _1 = + let _1 = +# 3762 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_variant([], Open, None) ) +# 7095 "src/ocaml/preprocess/parser_raw.ml" + in + let _endpos__1_ = _endpos__2_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1099 "src/ocaml/preprocess/parser_raw.mly" + ( mktyp ~loc:_sloc _1 ) +# 7104 "src/ocaml/preprocess/parser_raw.ml" + + in -# 4120 "src/ocaml/preprocess/parser_raw.mly" - ( mkexp_attrs ~loc:_loc - (Pexp_try(Fake.app Fake.Lwt.in_lwt _3, List.rev _5)) _2 ) -# 7538 "src/ocaml/preprocess/parser_raw.ml" +# 3771 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7110 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _4 : unit = Obj.magic _4 in + let xs : (Parsetree.row_field list) = Obj.magic xs in + let _2 : (unit option) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in + let _v : (Parsetree.core_type) = let _1 = + let _1 = + let fields = + let _1 = + let xs = +# 253 "" + ( List.rev xs ) +# 7160 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1217 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 7165 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3848 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7171 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3764 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_variant(fields, Closed, Some []) ) +# 7177 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos__1_ = _endpos__4_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1099 "src/ocaml/preprocess/parser_raw.mly" + ( mktyp ~loc:_sloc _1 ) +# 7187 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3771 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7193 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs_inlined1; + MenhirLib.EngineTypes.startp = _startpos_xs_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_xs_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _6 : unit = Obj.magic _6 in + let xs_inlined1 : (string list) = Obj.magic xs_inlined1 in + let _4 : unit = Obj.magic _4 in + let xs : (Parsetree.row_field list) = Obj.magic xs in + let _2 : (unit option) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__6_ in + let _v : (Parsetree.core_type) = let _1 = + let _1 = + let tags = + let xs = xs_inlined1 in + let _1 = + let xs = +# 253 "" + ( List.rev xs ) +# 7258 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1164 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 7263 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3876 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7269 "src/ocaml/preprocess/parser_raw.ml" + + in + let fields = + let _1 = + let xs = +# 253 "" + ( List.rev xs ) +# 7277 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1217 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 7282 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3848 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7288 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3769 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_variant(fields, Closed, Some tags) ) +# 7294 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos__1_ = _endpos__6_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1099 "src/ocaml/preprocess/parser_raw.mly" + ( mktyp ~loc:_sloc _1 ) +# 7304 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3771 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7310 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Asttypes.direction_flag) = +# 4109 "src/ocaml/preprocess/parser_raw.mly" + ( Upto ) +# 7335 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Asttypes.direction_flag) = +# 4110 "src/ocaml/preprocess/parser_raw.mly" + ( Downto ) +# 7360 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : (Parsetree.expression) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Ast_helper.let_bindings) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (Parsetree.expression) = let _endpos = _endpos__3_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in + +# 4325 "src/ocaml/preprocess/parser_raw.mly" + ( expr_of_lwt_bindings ~loc:_loc _1 (merloc _endpos__2_ _3) ) +# 7402 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + } = _menhir_stack in + let xs : (Parsetree.case list) = Obj.magic xs in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.expression) = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_xs_ in + let _v : (Parsetree.expression) = let _5 = + let xs = + let xs = +# 253 "" + ( List.rev xs ) +# 7464 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1278 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 7469 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 2928 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 7475 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos__5_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7486 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4275 "src/ocaml/preprocess/parser_raw.mly" + ( _1, _2 ) +# 7492 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos = _endpos__5_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in + +# 4327 "src/ocaml/preprocess/parser_raw.mly" + ( let expr = mkexp_attrs ~loc:_loc + (Pexp_match(Fake.app Fake.Lwt.un_lwt _3, List.rev _5)) _2 in + Fake.app Fake.Lwt.in_lwt expr ) +# 7503 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _3 : (Parsetree.expression) = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (Parsetree.expression) = let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7553 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4275 "src/ocaml/preprocess/parser_raw.mly" + ( _1, _2 ) +# 7559 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos = _endpos__3_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in + +# 4331 "src/ocaml/preprocess/parser_raw.mly" + ( reloc_exp ~loc:_loc (Fake.app Fake.Lwt.in_lwt _3) ) +# 7568 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + } = _menhir_stack in + let xs : (Parsetree.case list) = Obj.magic xs in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.expression) = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_xs_ in + let _v : (Parsetree.expression) = let _5 = + let xs = + let xs = +# 253 "" + ( List.rev xs ) +# 7630 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1278 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 7635 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 2928 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 7641 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos__5_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7652 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4275 "src/ocaml/preprocess/parser_raw.mly" + ( _1, _2 ) +# 7658 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos = _endpos__5_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in + +# 4333 "src/ocaml/preprocess/parser_raw.mly" + ( mkexp_attrs ~loc:_loc + (Pexp_try(Fake.app Fake.Lwt.in_lwt _3, List.rev _5)) _2 ) +# 7668 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : (Parsetree.expression) = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.expression) = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v : (Parsetree.expression) = let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7732 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4275 "src/ocaml/preprocess/parser_raw.mly" + ( _1, _2 ) +# 7738 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4336 "src/ocaml/preprocess/parser_raw.mly" + ( Fake.app (Fake.app Fake.Lwt.finally_ _3) _5 ) +# 7744 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _7 : (Parsetree.expression) = Obj.magic _7 in + let _6 : unit = Obj.magic _6 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.expression) = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__7_ in + let _v : (Parsetree.expression) = let _5 = + let xs = + let xs = +# 253 "" + ( List.rev xs ) +# 7820 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1278 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 7825 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 2928 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 7831 "src/ocaml/preprocess/parser_raw.ml" + + in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7841 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4275 "src/ocaml/preprocess/parser_raw.mly" + ( _1, _2 ) +# 7847 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos = _endpos__7_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in + +# 4338 "src/ocaml/preprocess/parser_raw.mly" + ( let expr = mkexp_attrs ~loc:_loc + (Pexp_try (Fake.app Fake.Lwt.in_lwt _3, List.rev _5)) _2 in + Fake.app (Fake.app Fake.Lwt.finally_ expr) _7 ) +# 7858 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _6 : unit = Obj.magic _6 in + let _5 : (Parsetree.expression) = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.expression) = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__6_ in + let _v : (Parsetree.expression) = let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 7929 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4275 "src/ocaml/preprocess/parser_raw.mly" + ( _1, _2 ) +# 7935 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos = _endpos__6_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in + +# 4342 "src/ocaml/preprocess/parser_raw.mly" + ( let expr = Pexp_while (_3, Fake.(app Lwt.un_lwt _5)) in + Fake.(app Lwt.to_lwt (mkexp_attrs ~loc:_loc expr _2)) ) +# 7945 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _10; + MenhirLib.EngineTypes.startp = _startpos__10_; + MenhirLib.EngineTypes.endp = _endpos__10_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _9; + MenhirLib.EngineTypes.startp = _startpos__9_; + MenhirLib.EngineTypes.endp = _endpos__9_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _8; + MenhirLib.EngineTypes.startp = _startpos__8_; + MenhirLib.EngineTypes.endp = _endpos__8_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _10 : unit = Obj.magic _10 in + let _9 : (Parsetree.expression) = Obj.magic _9 in + let _8 : unit = Obj.magic _8 in + let _7 : (Parsetree.expression) = Obj.magic _7 in + let _6 : (Asttypes.direction_flag) = Obj.magic _6 in + let _5 : (Parsetree.expression) = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__10_ in + let _v : (Parsetree.expression) = let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 8044 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4275 "src/ocaml/preprocess/parser_raw.mly" + ( _1, _2 ) +# 8050 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos = _endpos__10_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in + +# 4345 "src/ocaml/preprocess/parser_raw.mly" + ( let expr = Pexp_for (_3, _5, _7, _6, Fake.(app Lwt.un_lwt _9)) in + Fake.(app Lwt.to_lwt (mkexp_attrs ~loc:_loc expr _2)) ) +# 8060 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _8; + MenhirLib.EngineTypes.startp = _startpos__8_; + MenhirLib.EngineTypes.endp = _endpos__8_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _8 : unit = Obj.magic _8 in + let _7 : (Parsetree.expression) = Obj.magic _7 in + let _6 : unit = Obj.magic _6 in + let _5 : (Parsetree.expression) = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__8_ in + let _v : (Parsetree.expression) = let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 8145 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4275 "src/ocaml/preprocess/parser_raw.mly" + ( _1, _2 ) +# 8151 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos = _endpos__8_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in + +# 4348 "src/ocaml/preprocess/parser_raw.mly" + ( mkexp_attrs ~loc:_loc + (Pexp_let (Nonrecursive, [Vb.mk _3 (Fake.(app Lwt.un_stream _5))], + Fake.(app Lwt.unit_lwt _7))) + _2 + ) +# 8164 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.expression) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.expression) = let _1 = +# 2424 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 8189 "src/ocaml/preprocess/parser_raw.ml" + in + +# 2570 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 8194 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_xs_ in + let _v : (Parsetree.expression) = let _1 = + let _3 = + let xs = + let xs = +# 253 "" + ( List.rev xs ) +# 8243 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1278 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 8248 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 2928 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 8254 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 8265 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4275 "src/ocaml/preprocess/parser_raw.mly" + ( _1, _2 ) +# 8271 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2426 "src/ocaml/preprocess/parser_raw.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 8291 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 2570 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 8297 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (string Location.loc option) = +# 4265 "src/ocaml/preprocess/parser_raw.mly" + ( None ) +# 8315 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : (string Location.loc) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (string Location.loc option) = +# 4266 "src/ocaml/preprocess/parser_raw.mly" + ( Some _2 ) +# 8347 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.payload) = Obj.magic _3 in + let _2 : (string Location.loc) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in + let _v : (Parsetree.extension) = +# 4278 "src/ocaml/preprocess/parser_raw.mly" + ( (_2, _3) ) +# 8393 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : ( +# 905 "src/ocaml/preprocess/parser_raw.mly" + (string * Location.t * string * Location.t * string option) +# 8414 "src/ocaml/preprocess/parser_raw.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.extension) = let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 4280 "src/ocaml/preprocess/parser_raw.mly" + ( mk_quotedext ~loc:_sloc _1 ) +# 8425 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let _1_inlined2 : (Longident.t) = Obj.magic _1_inlined2 in + let _3 : unit = Obj.magic _3 in + let _1_inlined1 : (string) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined3_ in + let _v : (Parsetree.extension_constructor) = let attrs = + let _1 = _1_inlined3 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 8480 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos_attrs_ = _endpos__1_inlined3_ in + let lid = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1062 "src/ocaml/preprocess/parser_raw.mly" + ( mkrhs _1 _sloc ) +# 8492 "src/ocaml/preprocess/parser_raw.ml" + + in + let cid = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1062 "src/ocaml/preprocess/parser_raw.mly" + ( mkrhs _1 _sloc ) +# 8503 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos = _endpos_attrs_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3566 "src/ocaml/preprocess/parser_raw.mly" + ( let info = symbol_info _endpos in + Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) +# 8513 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7547,70 +8522,80 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; MenhirLib.EngineTypes.startp = _startpos__3_; MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _5 : (Parsetree.expression) = Obj.magic _5 in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.expression) = Obj.magic _3 in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _1_inlined1 : (Longident.t) = Obj.magic _1_inlined1 in + let _3 : unit = Obj.magic _3 in + let _1 : (string) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v : (Parsetree.expression) = let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4055 "src/ocaml/preprocess/parser_raw.mly" + let _endpos = _endpos__1_inlined2_ in + let _v : (Parsetree.extension_constructor) = let attrs = + let _1 = _1_inlined2 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 7602 "src/ocaml/preprocess/parser_raw.ml" - - in +# 8561 "src/ocaml/preprocess/parser_raw.ml" -# 4068 "src/ocaml/preprocess/parser_raw.mly" - ( _1, _2 ) -# 7608 "src/ocaml/preprocess/parser_raw.ml" + in + let _endpos_attrs_ = _endpos__1_inlined2_ in + let lid = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1062 "src/ocaml/preprocess/parser_raw.mly" + ( mkrhs _1 _sloc ) +# 8573 "src/ocaml/preprocess/parser_raw.ml" + + in + let cid = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1062 "src/ocaml/preprocess/parser_raw.mly" + ( mkrhs _1 _sloc ) +# 8583 "src/ocaml/preprocess/parser_raw.ml" in + let _startpos_cid_ = _startpos__1_ in + let _1 = +# 4083 "src/ocaml/preprocess/parser_raw.mly" + ( () ) +# 8590 "src/ocaml/preprocess/parser_raw.ml" + in + let _endpos = _endpos_attrs_ in + let _symbolstartpos = _startpos_cid_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4123 "src/ocaml/preprocess/parser_raw.mly" - ( Fake.app (Fake.app Fake.Lwt.finally_ _3) _5 ) -# 7614 "src/ocaml/preprocess/parser_raw.ml" +# 3566 "src/ocaml/preprocess/parser_raw.mly" + ( let info = symbol_info _endpos in + Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) +# 8599 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7622,109 +8607,36 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _7; - MenhirLib.EngineTypes.startp = _startpos__7_; - MenhirLib.EngineTypes.endp = _endpos__7_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _7 : (Parsetree.expression) = Obj.magic _7 in - let _6 : unit = Obj.magic _6 in - let xs : (Parsetree.case list) = Obj.magic xs in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.expression) = Obj.magic _3 in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let ext : (Parsetree.extension) = Obj.magic ext in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__7_ in - let _v : (Parsetree.expression) = let _5 = - let xs = - let xs = -# 253 "" - ( List.rev xs ) -# 7690 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1191 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 7695 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 2802 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 7701 "src/ocaml/preprocess/parser_raw.ml" - - in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4055 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 7711 "src/ocaml/preprocess/parser_raw.ml" - - in + let _startpos = _startpos_ext_ in + let _endpos = _endpos_ext_ in + let _v : (Parsetree.core_type) = let _1 = + let _1 = +# 3787 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_extension ext ) +# 8625 "src/ocaml/preprocess/parser_raw.ml" + in + let (_endpos__1_, _startpos__1_) = (_endpos_ext_, _startpos_ext_) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4068 "src/ocaml/preprocess/parser_raw.mly" - ( _1, _2 ) -# 7717 "src/ocaml/preprocess/parser_raw.ml" +# 1099 "src/ocaml/preprocess/parser_raw.mly" + ( mktyp ~loc:_sloc _1 ) +# 8634 "src/ocaml/preprocess/parser_raw.ml" in - let _endpos = _endpos__7_ in - let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in -# 4125 "src/ocaml/preprocess/parser_raw.mly" - ( let expr = mkexp_attrs ~loc:_loc - (Pexp_try (Fake.app Fake.Lwt.in_lwt _3, List.rev _5)) _2 in - Fake.app (Fake.app Fake.Lwt.finally_ expr) _7 ) -# 7728 "src/ocaml/preprocess/parser_raw.ml" +# 3789 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 8640 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7737,81 +8649,67 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _6 : unit = Obj.magic _6 in - let _5 : (Parsetree.expression) = Obj.magic _5 in let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.expression) = Obj.magic _3 in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _3 : (Parsetree.payload) = Obj.magic _3 in + let _2 : (string Location.loc) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__6_ in - let _v : (Parsetree.expression) = let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4055 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 7799 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 4068 "src/ocaml/preprocess/parser_raw.mly" - ( _1, _2 ) -# 7805 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos = _endpos__6_ in - let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in + let _endpos = _endpos__4_ in + let _v : (Parsetree.attribute) = let _endpos = _endpos__4_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4129 "src/ocaml/preprocess/parser_raw.mly" - ( let expr = Pexp_while (_3, Fake.(app Lwt.un_lwt _5)) in - Fake.(app Lwt.to_lwt (mkexp_attrs ~loc:_loc expr _2)) ) -# 7815 "src/ocaml/preprocess/parser_raw.ml" +# 4253 "src/ocaml/preprocess/parser_raw.mly" + ( mark_symbol_docs _sloc; + mk_attr ~loc:(make_loc _sloc) _2 _3 ) +# 8690 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let params = +# 2278 "src/ocaml/preprocess/parser_raw.mly" + ( [] ) +# 8708 "src/ocaml/preprocess/parser_raw.ml" + in + +# 2095 "src/ocaml/preprocess/parser_raw.mly" + ( params ) +# 8713 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7824,109 +8722,52 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _10; - MenhirLib.EngineTypes.startp = _startpos__10_; - MenhirLib.EngineTypes.endp = _endpos__10_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _9; - MenhirLib.EngineTypes.startp = _startpos__9_; - MenhirLib.EngineTypes.endp = _endpos__9_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _8; - MenhirLib.EngineTypes.startp = _startpos__8_; - MenhirLib.EngineTypes.endp = _endpos__8_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _7; - MenhirLib.EngineTypes.startp = _startpos__7_; - MenhirLib.EngineTypes.endp = _endpos__7_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let _10 : unit = Obj.magic _10 in - let _9 : (Parsetree.expression) = Obj.magic _9 in - let _8 : unit = Obj.magic _8 in - let _7 : (Parsetree.expression) = Obj.magic _7 in - let _6 : (Asttypes.direction_flag) = Obj.magic _6 in - let _5 : (Parsetree.expression) = Obj.magic _5 in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.pattern) = Obj.magic _3 in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _3 : unit = Obj.magic _3 in + let xs : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__10_ in - let _v : (Parsetree.expression) = let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in + let _endpos = _endpos__3_ in + let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let params = + let params = + let xs = +# 253 "" + ( List.rev xs ) +# 8754 "src/ocaml/preprocess/parser_raw.ml" + in -# 4055 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 7914 "src/ocaml/preprocess/parser_raw.ml" +# 1217 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 8759 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" - ( _1, _2 ) -# 7920 "src/ocaml/preprocess/parser_raw.ml" +# 2280 "src/ocaml/preprocess/parser_raw.mly" + ( params ) +# 8765 "src/ocaml/preprocess/parser_raw.ml" in - let _endpos = _endpos__10_ in - let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in -# 4132 "src/ocaml/preprocess/parser_raw.mly" - ( let expr = Pexp_for (_3, _5, _7, _6, Fake.(app Lwt.un_lwt _9)) in - Fake.(app Lwt.to_lwt (mkexp_attrs ~loc:_loc expr _2)) ) -# 7930 "src/ocaml/preprocess/parser_raw.ml" +# 2095 "src/ocaml/preprocess/parser_raw.mly" + ( params ) +# 8771 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7939,98 +8780,112 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _8; - MenhirLib.EngineTypes.startp = _startpos__8_; - MenhirLib.EngineTypes.endp = _endpos__8_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _7; - MenhirLib.EngineTypes.startp = _startpos__7_; - MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _8 : unit = Obj.magic _8 in - let _7 : (Parsetree.expression) = Obj.magic _7 in - let _6 : unit = Obj.magic _6 in - let _5 : (Parsetree.expression) = Obj.magic _5 in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.pattern) = Obj.magic _3 in + let xs : (Parsetree.case list) = Obj.magic xs in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__8_ in - let _v : (Parsetree.expression) = let _2 = + let _endpos = _endpos_xs_ in + let _v : (Parsetree.function_body) = let _3 = + let xs = + let xs = +# 253 "" + ( List.rev xs ) +# 8819 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1278 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 8824 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 2928 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 8830 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 8015 "src/ocaml/preprocess/parser_raw.ml" +# 8841 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 8021 "src/ocaml/preprocess/parser_raw.ml" +# 8847 "src/ocaml/preprocess/parser_raw.ml" in - let _endpos = _endpos__8_ in - let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4135 "src/ocaml/preprocess/parser_raw.mly" - ( mkexp_attrs ~loc:_loc - (Pexp_let (Nonrecursive, [Vb.mk _3 (Fake.(app Lwt.un_stream _5))], - Fake.(app Lwt.unit_lwt _7))) - _2 - ) -# 8034 "src/ocaml/preprocess/parser_raw.ml" +# 2914 "src/ocaml/preprocess/parser_raw.mly" + ( let ext, attrs = _2 in + match ext with + | None -> Pfunction_cases (_3, make_loc _sloc, attrs) + | Some _ -> + (* function%foo extension nodes interrupt the arity *) + let cases = Pfunction_cases (_3, make_loc _sloc, []) in + Pfunction_body + (mkexp_attrs ~loc:_sloc (mkfunction [] None cases) _2) + ) +# 8864 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.expression) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.function_body) = +# 2924 "src/ocaml/preprocess/parser_raw.mly" + ( Pfunction_body _1 ) +# 8889 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8053,9 +8908,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2418 "src/ocaml/preprocess/parser_raw.mly" +# 2536 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 8059 "src/ocaml/preprocess/parser_raw.ml" +# 8914 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8133,9 +8988,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 8139 "src/ocaml/preprocess/parser_raw.ml" +# 8994 "src/ocaml/preprocess/parser_raw.ml" in let _3 = @@ -8143,21 +8998,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 8149 "src/ocaml/preprocess/parser_raw.ml" +# 9004 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 8155 "src/ocaml/preprocess/parser_raw.ml" +# 9010 "src/ocaml/preprocess/parser_raw.ml" in -# 2453 "src/ocaml/preprocess/parser_raw.mly" +# 2574 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_letmodule(_4, _5, (merloc _endpos__6_ _7)), _3 ) -# 8161 "src/ocaml/preprocess/parser_raw.ml" +# 9016 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__7_ in @@ -8165,10 +9020,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8172 "src/ocaml/preprocess/parser_raw.ml" +# 9027 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8253,9 +9108,9 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 8259 "src/ocaml/preprocess/parser_raw.ml" +# 9114 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -8264,19 +9119,19 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 8270 "src/ocaml/preprocess/parser_raw.ml" +# 9125 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3326 "src/ocaml/preprocess/parser_raw.mly" +# 3477 "src/ocaml/preprocess/parser_raw.mly" ( let vars, args, res = _2 in Te.decl _1 ~vars ~args ?res ~attrs:_3 ~loc:(make_loc _sloc) ) -# 8280 "src/ocaml/preprocess/parser_raw.ml" +# 9135 "src/ocaml/preprocess/parser_raw.ml" in let _3 = @@ -8284,21 +9139,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 8290 "src/ocaml/preprocess/parser_raw.ml" +# 9145 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 8296 "src/ocaml/preprocess/parser_raw.ml" +# 9151 "src/ocaml/preprocess/parser_raw.ml" in -# 2455 "src/ocaml/preprocess/parser_raw.mly" +# 2576 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_letexception(_4, _6), _3 ) -# 8302 "src/ocaml/preprocess/parser_raw.ml" +# 9157 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__6_ in @@ -8306,10 +9161,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8313 "src/ocaml/preprocess/parser_raw.ml" +# 9168 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8379,28 +9234,28 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 8385 "src/ocaml/preprocess/parser_raw.ml" +# 9240 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 8391 "src/ocaml/preprocess/parser_raw.ml" +# 9246 "src/ocaml/preprocess/parser_raw.ml" in let _3 = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 8397 "src/ocaml/preprocess/parser_raw.ml" +# 9252 "src/ocaml/preprocess/parser_raw.ml" in -# 2457 "src/ocaml/preprocess/parser_raw.mly" +# 2578 "src/ocaml/preprocess/parser_raw.mly" ( let open_loc = make_loc (_startpos__2_, _endpos__5_) in let od = Opn.mk _5 ~override:_3 ~loc:open_loc in Pexp_open(od, (merloc _endpos__6_ _7)), _4 ) -# 8404 "src/ocaml/preprocess/parser_raw.ml" +# 9259 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__7_ in @@ -8408,10 +9263,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8415 "src/ocaml/preprocess/parser_raw.ml" +# 9270 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8488,31 +9343,31 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 8494 "src/ocaml/preprocess/parser_raw.ml" +# 9349 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 8500 "src/ocaml/preprocess/parser_raw.ml" +# 9355 "src/ocaml/preprocess/parser_raw.ml" in let _3 = let _1 = _1_inlined1 in -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 8508 "src/ocaml/preprocess/parser_raw.ml" +# 9363 "src/ocaml/preprocess/parser_raw.ml" in -# 2457 "src/ocaml/preprocess/parser_raw.mly" +# 2578 "src/ocaml/preprocess/parser_raw.mly" ( let open_loc = make_loc (_startpos__2_, _endpos__5_) in let od = Opn.mk _5 ~override:_3 ~loc:open_loc in Pexp_open(od, (merloc _endpos__6_ _7)), _4 ) -# 8516 "src/ocaml/preprocess/parser_raw.ml" +# 9371 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__7_ in @@ -8520,10 +9375,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8527 "src/ocaml/preprocess/parser_raw.ml" +# 9382 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8536,221 +9391,40 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - } = _menhir_stack in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in - let _v : (Parsetree.expression) = let _1 = - let _3 = - let xs = - let xs = -# 253 "" - ( List.rev xs ) -# 8576 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1191 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 8581 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 2802 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 8587 "src/ocaml/preprocess/parser_raw.ml" - - in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4055 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 8597 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 4068 "src/ocaml/preprocess/parser_raw.mly" - ( _1, _2 ) -# 8603 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 2461 "src/ocaml/preprocess/parser_raw.mly" - ( Pexp_function _3, _2 ) -# 8609 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos__1_ = _endpos_xs_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2420 "src/ocaml/preprocess/parser_raw.mly" - ( let desc, attrs = _1 in - mkexp_attrs ~loc:_sloc desc attrs ) -# 8620 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - } = _menhir_stack in - let _4 : (Parsetree.expression) = Obj.magic _4 in - let _3 : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = Obj.magic _3 in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v : (Parsetree.expression) = let _1 = - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4055 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 8678 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 4068 "src/ocaml/preprocess/parser_raw.mly" - ( _1, _2 ) -# 8684 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 2463 "src/ocaml/preprocess/parser_raw.mly" - ( let (l,o,p) = _3 in - Pexp_fun(l, o, p, _4), _2 ) -# 8691 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos__1_ = _endpos__4_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2420 "src/ocaml/preprocess/parser_raw.mly" - ( let desc, attrs = _1 in - mkexp_attrs ~loc:_sloc desc attrs ) -# 8702 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _7; - MenhirLib.EngineTypes.startp = _startpos__7_; - MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; @@ -8758,57 +9432,50 @@ module Tables = struct }; }; } = _menhir_stack in - let _7 : (Parsetree.expression) = Obj.magic _7 in - let _6 : unit = Obj.magic _6 in - let xs : (string Location.loc list) = Obj.magic xs in - let _4 : unit = Obj.magic _4 in - let _3 : unit = Obj.magic _3 in + let _6 : (Parsetree.function_body) = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let _4 : (Parsetree.core_type option) = Obj.magic _4 in + let _3 : (Parsetree.function_param list) = Obj.magic _3 in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__7_ in + let _endpos = _endpos__6_ in let _v : (Parsetree.expression) = let _1 = - let _5 = -# 2689 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 8777 "src/ocaml/preprocess/parser_raw.ml" - in let _2 = let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 8786 "src/ocaml/preprocess/parser_raw.ml" +# 9454 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 8792 "src/ocaml/preprocess/parser_raw.ml" +# 9460 "src/ocaml/preprocess/parser_raw.ml" in - let _endpos = _endpos__7_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 2466 "src/ocaml/preprocess/parser_raw.mly" - ( (mk_newtypes ~loc:_sloc _5 _7).pexp_desc, _2 ) -# 8801 "src/ocaml/preprocess/parser_raw.ml" +# 2584 "src/ocaml/preprocess/parser_raw.mly" + ( let body_constraint = Option.map (fun x -> Pconstraint x) _4 in + mkfunction _3 body_constraint _6, _2 + ) +# 9468 "src/ocaml/preprocess/parser_raw.ml" in - let _endpos__1_ = _endpos__7_ in + let _endpos__1_ = _endpos__6_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8812 "src/ocaml/preprocess/parser_raw.ml" +# 9479 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8871,18 +9538,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 8875 "src/ocaml/preprocess/parser_raw.ml" +# 9542 "src/ocaml/preprocess/parser_raw.ml" in -# 1191 "src/ocaml/preprocess/parser_raw.mly" +# 1278 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 8880 "src/ocaml/preprocess/parser_raw.ml" +# 9547 "src/ocaml/preprocess/parser_raw.ml" in -# 2802 "src/ocaml/preprocess/parser_raw.mly" +# 2928 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 8886 "src/ocaml/preprocess/parser_raw.ml" +# 9553 "src/ocaml/preprocess/parser_raw.ml" in let _2 = @@ -8890,21 +9557,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 8896 "src/ocaml/preprocess/parser_raw.ml" +# 9563 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 8902 "src/ocaml/preprocess/parser_raw.ml" +# 9569 "src/ocaml/preprocess/parser_raw.ml" in -# 2468 "src/ocaml/preprocess/parser_raw.mly" +# 2588 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_match(_3, _5), _2 ) -# 8908 "src/ocaml/preprocess/parser_raw.ml" +# 9575 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_xs_ in @@ -8912,10 +9579,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8919 "src/ocaml/preprocess/parser_raw.ml" +# 9586 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8978,18 +9645,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 8982 "src/ocaml/preprocess/parser_raw.ml" +# 9649 "src/ocaml/preprocess/parser_raw.ml" in -# 1191 "src/ocaml/preprocess/parser_raw.mly" +# 1278 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 8987 "src/ocaml/preprocess/parser_raw.ml" +# 9654 "src/ocaml/preprocess/parser_raw.ml" in -# 2802 "src/ocaml/preprocess/parser_raw.mly" +# 2928 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 8993 "src/ocaml/preprocess/parser_raw.ml" +# 9660 "src/ocaml/preprocess/parser_raw.ml" in let _2 = @@ -8997,21 +9664,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9003 "src/ocaml/preprocess/parser_raw.ml" +# 9670 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 9009 "src/ocaml/preprocess/parser_raw.ml" +# 9676 "src/ocaml/preprocess/parser_raw.ml" in -# 2470 "src/ocaml/preprocess/parser_raw.mly" +# 2590 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_try(_3, _5), _2 ) -# 9015 "src/ocaml/preprocess/parser_raw.ml" +# 9682 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_xs_ in @@ -9019,10 +9686,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9026 "src/ocaml/preprocess/parser_raw.ml" +# 9693 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9099,21 +9766,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9105 "src/ocaml/preprocess/parser_raw.ml" +# 9772 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 9111 "src/ocaml/preprocess/parser_raw.ml" +# 9778 "src/ocaml/preprocess/parser_raw.ml" in -# 2476 "src/ocaml/preprocess/parser_raw.mly" +# 2596 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_ifthenelse(_3, (merloc _endpos__4_ _5), Some (merloc _endpos__6_ _7)), _2 ) -# 9117 "src/ocaml/preprocess/parser_raw.ml" +# 9784 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__7_ in @@ -9121,10 +9788,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9128 "src/ocaml/preprocess/parser_raw.ml" +# 9795 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9187,21 +9854,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9193 "src/ocaml/preprocess/parser_raw.ml" +# 9860 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 9199 "src/ocaml/preprocess/parser_raw.ml" +# 9866 "src/ocaml/preprocess/parser_raw.ml" in -# 2478 "src/ocaml/preprocess/parser_raw.mly" +# 2598 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_ifthenelse(_3, (merloc _endpos__4_ _5), None), _2 ) -# 9205 "src/ocaml/preprocess/parser_raw.ml" +# 9872 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in @@ -9209,10 +9876,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9216 "src/ocaml/preprocess/parser_raw.ml" +# 9883 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9282,21 +9949,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9288 "src/ocaml/preprocess/parser_raw.ml" +# 9955 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 9294 "src/ocaml/preprocess/parser_raw.ml" +# 9961 "src/ocaml/preprocess/parser_raw.ml" in -# 2480 "src/ocaml/preprocess/parser_raw.mly" +# 2600 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_while(_3, (merloc _endpos__4_ _5)), _2 ) -# 9300 "src/ocaml/preprocess/parser_raw.ml" +# 9967 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__6_ in @@ -9304,10 +9971,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9311 "src/ocaml/preprocess/parser_raw.ml" +# 9978 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9405,21 +10072,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9411 "src/ocaml/preprocess/parser_raw.ml" +# 10078 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 9417 "src/ocaml/preprocess/parser_raw.ml" +# 10084 "src/ocaml/preprocess/parser_raw.ml" in -# 2487 "src/ocaml/preprocess/parser_raw.mly" +# 2607 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_for(_3, (merloc _endpos__4_ _5), (merloc _endpos__6_ _7), _6, (merloc _endpos__8_ _9)), _2 ) -# 9423 "src/ocaml/preprocess/parser_raw.ml" +# 10090 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__10_ in @@ -9427,10 +10094,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9434 "src/ocaml/preprocess/parser_raw.ml" +# 10101 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9479,21 +10146,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9485 "src/ocaml/preprocess/parser_raw.ml" +# 10152 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 9491 "src/ocaml/preprocess/parser_raw.ml" +# 10158 "src/ocaml/preprocess/parser_raw.ml" in -# 2489 "src/ocaml/preprocess/parser_raw.mly" +# 2609 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_assert _3, _2 ) -# 9497 "src/ocaml/preprocess/parser_raw.ml" +# 10164 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -9501,10 +10168,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9508 "src/ocaml/preprocess/parser_raw.ml" +# 10175 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9553,21 +10220,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9559 "src/ocaml/preprocess/parser_raw.ml" +# 10226 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 9565 "src/ocaml/preprocess/parser_raw.ml" +# 10232 "src/ocaml/preprocess/parser_raw.ml" in -# 2491 "src/ocaml/preprocess/parser_raw.mly" +# 2611 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_lazy _3, _2 ) -# 9571 "src/ocaml/preprocess/parser_raw.ml" +# 10238 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -9575,10 +10242,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2420 "src/ocaml/preprocess/parser_raw.mly" +# 2538 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9582 "src/ocaml/preprocess/parser_raw.ml" +# 10249 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9613,18 +10280,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 9617 "src/ocaml/preprocess/parser_raw.ml" +# 10284 "src/ocaml/preprocess/parser_raw.ml" in -# 1098 "src/ocaml/preprocess/parser_raw.mly" +# 1164 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 9622 "src/ocaml/preprocess/parser_raw.ml" +# 10289 "src/ocaml/preprocess/parser_raw.ml" in -# 2495 "src/ocaml/preprocess/parser_raw.mly" +# 2615 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_apply(_1, _2) ) -# 9628 "src/ocaml/preprocess/parser_raw.ml" +# 10295 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_xs_ in @@ -9632,15 +10299,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 9638 "src/ocaml/preprocess/parser_raw.ml" +# 10305 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9644 "src/ocaml/preprocess/parser_raw.ml" +# 10311 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9669,24 +10336,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 9673 "src/ocaml/preprocess/parser_raw.ml" +# 10340 "src/ocaml/preprocess/parser_raw.ml" in -# 1158 "src/ocaml/preprocess/parser_raw.mly" +# 1245 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 9678 "src/ocaml/preprocess/parser_raw.ml" +# 10345 "src/ocaml/preprocess/parser_raw.ml" in -# 2830 "src/ocaml/preprocess/parser_raw.mly" +# 2981 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 9684 "src/ocaml/preprocess/parser_raw.ml" +# 10351 "src/ocaml/preprocess/parser_raw.ml" in -# 2497 "src/ocaml/preprocess/parser_raw.mly" +# 2617 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_tuple(_1) ) -# 9690 "src/ocaml/preprocess/parser_raw.ml" +# 10357 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_xs_) in @@ -9694,15 +10361,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 9700 "src/ocaml/preprocess/parser_raw.ml" +# 10367 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9706 "src/ocaml/preprocess/parser_raw.ml" +# 10373 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9738,15 +10405,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 9744 "src/ocaml/preprocess/parser_raw.ml" +# 10411 "src/ocaml/preprocess/parser_raw.ml" in -# 2499 "src/ocaml/preprocess/parser_raw.mly" +# 2619 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_construct(_1, Some _2) ) -# 9750 "src/ocaml/preprocess/parser_raw.ml" +# 10417 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in @@ -9754,15 +10421,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 9760 "src/ocaml/preprocess/parser_raw.ml" +# 10427 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9766 "src/ocaml/preprocess/parser_raw.ml" +# 10433 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9793,24 +10460,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2501 "src/ocaml/preprocess/parser_raw.mly" +# 2621 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_variant(_1, Some _2) ) -# 9799 "src/ocaml/preprocess/parser_raw.ml" +# 10466 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 9808 "src/ocaml/preprocess/parser_raw.ml" +# 10475 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9814 "src/ocaml/preprocess/parser_raw.ml" +# 10481 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9842,9 +10509,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 775 "src/ocaml/preprocess/parser_raw.mly" +# 841 "src/ocaml/preprocess/parser_raw.mly" (string) -# 9848 "src/ocaml/preprocess/parser_raw.ml" +# 10515 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -9854,24 +10521,24 @@ module Tables = struct let _1 = let op = let _1 = -# 3761 "src/ocaml/preprocess/parser_raw.mly" +# 3968 "src/ocaml/preprocess/parser_raw.mly" ( op ) -# 9860 "src/ocaml/preprocess/parser_raw.ml" +# 10527 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 9869 "src/ocaml/preprocess/parser_raw.ml" +# 10536 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 9875 "src/ocaml/preprocess/parser_raw.ml" +# 10542 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -9879,15 +10546,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 9885 "src/ocaml/preprocess/parser_raw.ml" +# 10552 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9891 "src/ocaml/preprocess/parser_raw.ml" +# 10558 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9919,9 +10586,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 776 "src/ocaml/preprocess/parser_raw.mly" +# 842 "src/ocaml/preprocess/parser_raw.mly" (string) -# 9925 "src/ocaml/preprocess/parser_raw.ml" +# 10592 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -9931,24 +10598,24 @@ module Tables = struct let _1 = let op = let _1 = -# 3762 "src/ocaml/preprocess/parser_raw.mly" +# 3969 "src/ocaml/preprocess/parser_raw.mly" ( op ) -# 9937 "src/ocaml/preprocess/parser_raw.ml" +# 10604 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 9946 "src/ocaml/preprocess/parser_raw.ml" +# 10613 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 9952 "src/ocaml/preprocess/parser_raw.ml" +# 10619 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -9956,15 +10623,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 9962 "src/ocaml/preprocess/parser_raw.ml" +# 10629 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 9968 "src/ocaml/preprocess/parser_raw.ml" +# 10635 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9996,9 +10663,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 777 "src/ocaml/preprocess/parser_raw.mly" +# 843 "src/ocaml/preprocess/parser_raw.mly" (string) -# 10002 "src/ocaml/preprocess/parser_raw.ml" +# 10669 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10008,24 +10675,24 @@ module Tables = struct let _1 = let op = let _1 = -# 3763 "src/ocaml/preprocess/parser_raw.mly" +# 3970 "src/ocaml/preprocess/parser_raw.mly" ( op ) -# 10014 "src/ocaml/preprocess/parser_raw.ml" +# 10681 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10023 "src/ocaml/preprocess/parser_raw.ml" +# 10690 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10029 "src/ocaml/preprocess/parser_raw.ml" +# 10696 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10033,15 +10700,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10039 "src/ocaml/preprocess/parser_raw.ml" +# 10706 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10045 "src/ocaml/preprocess/parser_raw.ml" +# 10712 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10073,9 +10740,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 778 "src/ocaml/preprocess/parser_raw.mly" +# 844 "src/ocaml/preprocess/parser_raw.mly" (string) -# 10079 "src/ocaml/preprocess/parser_raw.ml" +# 10746 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10085,24 +10752,24 @@ module Tables = struct let _1 = let op = let _1 = -# 3764 "src/ocaml/preprocess/parser_raw.mly" +# 3971 "src/ocaml/preprocess/parser_raw.mly" ( op ) -# 10091 "src/ocaml/preprocess/parser_raw.ml" +# 10758 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10100 "src/ocaml/preprocess/parser_raw.ml" +# 10767 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10106 "src/ocaml/preprocess/parser_raw.ml" +# 10773 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10110,15 +10777,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10116 "src/ocaml/preprocess/parser_raw.ml" +# 10783 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10122 "src/ocaml/preprocess/parser_raw.ml" +# 10789 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10150,9 +10817,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 779 "src/ocaml/preprocess/parser_raw.mly" +# 845 "src/ocaml/preprocess/parser_raw.mly" (string) -# 10156 "src/ocaml/preprocess/parser_raw.ml" +# 10823 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10162,24 +10829,24 @@ module Tables = struct let _1 = let op = let _1 = -# 3765 "src/ocaml/preprocess/parser_raw.mly" +# 3972 "src/ocaml/preprocess/parser_raw.mly" ( op ) -# 10168 "src/ocaml/preprocess/parser_raw.ml" +# 10835 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10177 "src/ocaml/preprocess/parser_raw.ml" +# 10844 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10183 "src/ocaml/preprocess/parser_raw.ml" +# 10850 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10187,15 +10854,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10193 "src/ocaml/preprocess/parser_raw.ml" +# 10860 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10199 "src/ocaml/preprocess/parser_raw.ml" +# 10866 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10235,23 +10902,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3766 "src/ocaml/preprocess/parser_raw.mly" +# 3973 "src/ocaml/preprocess/parser_raw.mly" ("+") -# 10241 "src/ocaml/preprocess/parser_raw.ml" +# 10908 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10249 "src/ocaml/preprocess/parser_raw.ml" +# 10916 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10255 "src/ocaml/preprocess/parser_raw.ml" +# 10922 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10259,15 +10926,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10265 "src/ocaml/preprocess/parser_raw.ml" +# 10932 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10271 "src/ocaml/preprocess/parser_raw.ml" +# 10938 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10307,23 +10974,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3767 "src/ocaml/preprocess/parser_raw.mly" +# 3974 "src/ocaml/preprocess/parser_raw.mly" ("+.") -# 10313 "src/ocaml/preprocess/parser_raw.ml" +# 10980 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10321 "src/ocaml/preprocess/parser_raw.ml" +# 10988 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10327 "src/ocaml/preprocess/parser_raw.ml" +# 10994 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10331,15 +10998,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10337 "src/ocaml/preprocess/parser_raw.ml" +# 11004 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10343 "src/ocaml/preprocess/parser_raw.ml" +# 11010 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10379,23 +11046,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3768 "src/ocaml/preprocess/parser_raw.mly" +# 3975 "src/ocaml/preprocess/parser_raw.mly" ("+=") -# 10385 "src/ocaml/preprocess/parser_raw.ml" +# 11052 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10393 "src/ocaml/preprocess/parser_raw.ml" +# 11060 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10399 "src/ocaml/preprocess/parser_raw.ml" +# 11066 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10403,15 +11070,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10409 "src/ocaml/preprocess/parser_raw.ml" +# 11076 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10415 "src/ocaml/preprocess/parser_raw.ml" +# 11082 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10451,23 +11118,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3769 "src/ocaml/preprocess/parser_raw.mly" +# 3976 "src/ocaml/preprocess/parser_raw.mly" ("-") -# 10457 "src/ocaml/preprocess/parser_raw.ml" +# 11124 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10465 "src/ocaml/preprocess/parser_raw.ml" +# 11132 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10471 "src/ocaml/preprocess/parser_raw.ml" +# 11138 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10475,15 +11142,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10481 "src/ocaml/preprocess/parser_raw.ml" +# 11148 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10487 "src/ocaml/preprocess/parser_raw.ml" +# 11154 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10523,23 +11190,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3770 "src/ocaml/preprocess/parser_raw.mly" +# 3977 "src/ocaml/preprocess/parser_raw.mly" ("-.") -# 10529 "src/ocaml/preprocess/parser_raw.ml" +# 11196 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10537 "src/ocaml/preprocess/parser_raw.ml" +# 11204 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10543 "src/ocaml/preprocess/parser_raw.ml" +# 11210 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10547,15 +11214,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10553 "src/ocaml/preprocess/parser_raw.ml" +# 11220 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10559 "src/ocaml/preprocess/parser_raw.ml" +# 11226 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10595,23 +11262,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3771 "src/ocaml/preprocess/parser_raw.mly" +# 3978 "src/ocaml/preprocess/parser_raw.mly" ("*") -# 10601 "src/ocaml/preprocess/parser_raw.ml" +# 11268 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10609 "src/ocaml/preprocess/parser_raw.ml" +# 11276 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10615 "src/ocaml/preprocess/parser_raw.ml" +# 11282 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10619,15 +11286,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10625 "src/ocaml/preprocess/parser_raw.ml" +# 11292 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10631 "src/ocaml/preprocess/parser_raw.ml" +# 11298 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10667,23 +11334,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3772 "src/ocaml/preprocess/parser_raw.mly" +# 3979 "src/ocaml/preprocess/parser_raw.mly" ("%") -# 10673 "src/ocaml/preprocess/parser_raw.ml" +# 11340 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10681 "src/ocaml/preprocess/parser_raw.ml" +# 11348 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10687 "src/ocaml/preprocess/parser_raw.ml" +# 11354 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10691,15 +11358,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10697 "src/ocaml/preprocess/parser_raw.ml" +# 11364 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10703 "src/ocaml/preprocess/parser_raw.ml" +# 11370 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10739,23 +11406,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3773 "src/ocaml/preprocess/parser_raw.mly" +# 3980 "src/ocaml/preprocess/parser_raw.mly" ("=") -# 10745 "src/ocaml/preprocess/parser_raw.ml" +# 11412 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10753 "src/ocaml/preprocess/parser_raw.ml" +# 11420 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10759 "src/ocaml/preprocess/parser_raw.ml" +# 11426 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10763,15 +11430,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10769 "src/ocaml/preprocess/parser_raw.ml" +# 11436 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10775 "src/ocaml/preprocess/parser_raw.ml" +# 11442 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10811,23 +11478,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3774 "src/ocaml/preprocess/parser_raw.mly" +# 3981 "src/ocaml/preprocess/parser_raw.mly" ("<") -# 10817 "src/ocaml/preprocess/parser_raw.ml" +# 11484 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10825 "src/ocaml/preprocess/parser_raw.ml" +# 11492 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10831 "src/ocaml/preprocess/parser_raw.ml" +# 11498 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10835,15 +11502,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10841 "src/ocaml/preprocess/parser_raw.ml" +# 11508 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10847 "src/ocaml/preprocess/parser_raw.ml" +# 11514 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10883,23 +11550,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3775 "src/ocaml/preprocess/parser_raw.mly" +# 3982 "src/ocaml/preprocess/parser_raw.mly" (">") -# 10889 "src/ocaml/preprocess/parser_raw.ml" +# 11556 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10897 "src/ocaml/preprocess/parser_raw.ml" +# 11564 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10903 "src/ocaml/preprocess/parser_raw.ml" +# 11570 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10907,15 +11574,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10913 "src/ocaml/preprocess/parser_raw.ml" +# 11580 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10919 "src/ocaml/preprocess/parser_raw.ml" +# 11586 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10955,23 +11622,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3776 "src/ocaml/preprocess/parser_raw.mly" +# 3983 "src/ocaml/preprocess/parser_raw.mly" ("or") -# 10961 "src/ocaml/preprocess/parser_raw.ml" +# 11628 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 10969 "src/ocaml/preprocess/parser_raw.ml" +# 11636 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 10975 "src/ocaml/preprocess/parser_raw.ml" +# 11642 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10979,15 +11646,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 10985 "src/ocaml/preprocess/parser_raw.ml" +# 11652 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 10991 "src/ocaml/preprocess/parser_raw.ml" +# 11658 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11027,23 +11694,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3777 "src/ocaml/preprocess/parser_raw.mly" +# 3984 "src/ocaml/preprocess/parser_raw.mly" ("||") -# 11033 "src/ocaml/preprocess/parser_raw.ml" +# 11700 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 11041 "src/ocaml/preprocess/parser_raw.ml" +# 11708 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 11047 "src/ocaml/preprocess/parser_raw.ml" +# 11714 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11051,15 +11718,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 11057 "src/ocaml/preprocess/parser_raw.ml" +# 11724 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 11063 "src/ocaml/preprocess/parser_raw.ml" +# 11730 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11099,23 +11766,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3778 "src/ocaml/preprocess/parser_raw.mly" +# 3985 "src/ocaml/preprocess/parser_raw.mly" ("&") -# 11105 "src/ocaml/preprocess/parser_raw.ml" +# 11772 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 11113 "src/ocaml/preprocess/parser_raw.ml" +# 11780 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 11119 "src/ocaml/preprocess/parser_raw.ml" +# 11786 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11123,15 +11790,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 11129 "src/ocaml/preprocess/parser_raw.ml" +# 11796 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 11135 "src/ocaml/preprocess/parser_raw.ml" +# 11802 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11171,23 +11838,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3779 "src/ocaml/preprocess/parser_raw.mly" +# 3986 "src/ocaml/preprocess/parser_raw.mly" ("&&") -# 11177 "src/ocaml/preprocess/parser_raw.ml" +# 11844 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 11185 "src/ocaml/preprocess/parser_raw.ml" +# 11852 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 11191 "src/ocaml/preprocess/parser_raw.ml" +# 11858 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11195,15 +11862,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 11201 "src/ocaml/preprocess/parser_raw.ml" +# 11868 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 11207 "src/ocaml/preprocess/parser_raw.ml" +# 11874 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11243,23 +11910,23 @@ module Tables = struct let _1 = let op = let _1 = -# 3780 "src/ocaml/preprocess/parser_raw.mly" +# 3987 "src/ocaml/preprocess/parser_raw.mly" (":=") -# 11249 "src/ocaml/preprocess/parser_raw.ml" +# 11916 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 11257 "src/ocaml/preprocess/parser_raw.ml" +# 11924 "src/ocaml/preprocess/parser_raw.ml" in -# 2503 "src/ocaml/preprocess/parser_raw.mly" +# 2623 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix e1 op e2 ) -# 11263 "src/ocaml/preprocess/parser_raw.ml" +# 11930 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11267,15 +11934,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 11273 "src/ocaml/preprocess/parser_raw.ml" +# 11940 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 11279 "src/ocaml/preprocess/parser_raw.ml" +# 11946 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11308,9 +11975,9 @@ module Tables = struct let _1 = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2505 "src/ocaml/preprocess/parser_raw.mly" +# 2625 "src/ocaml/preprocess/parser_raw.mly" ( mkuminus ~oploc:_loc__1_ _1 _2 ) -# 11314 "src/ocaml/preprocess/parser_raw.ml" +# 11981 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in @@ -11318,15 +11985,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 11324 "src/ocaml/preprocess/parser_raw.ml" +# 11991 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 11330 "src/ocaml/preprocess/parser_raw.ml" +# 11997 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11359,9 +12026,9 @@ module Tables = struct let _1 = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2507 "src/ocaml/preprocess/parser_raw.mly" +# 2627 "src/ocaml/preprocess/parser_raw.mly" ( mkuplus ~oploc:_loc__1_ _1 _2 ) -# 11365 "src/ocaml/preprocess/parser_raw.ml" +# 12032 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in @@ -11369,15 +12036,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 11375 "src/ocaml/preprocess/parser_raw.ml" +# 12042 "src/ocaml/preprocess/parser_raw.ml" in -# 2423 "src/ocaml/preprocess/parser_raw.mly" +# 2541 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 11381 "src/ocaml/preprocess/parser_raw.ml" +# 12048 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11417,9 +12084,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2425 "src/ocaml/preprocess/parser_raw.mly" +# 2543 "src/ocaml/preprocess/parser_raw.mly" ( expr_of_let_bindings ~loc:_sloc _1 (merloc _endpos__2_ _3) ) -# 11423 "src/ocaml/preprocess/parser_raw.ml" +# 12090 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11459,9 +12126,9 @@ module Tables = struct let _3 : unit = Obj.magic _3 in let bindings : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = Obj.magic bindings in let _1 : ( -# 781 "src/ocaml/preprocess/parser_raw.mly" +# 847 "src/ocaml/preprocess/parser_raw.mly" (string) -# 11465 "src/ocaml/preprocess/parser_raw.ml" +# 12132 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -11471,9 +12138,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 11477 "src/ocaml/preprocess/parser_raw.ml" +# 12144 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_pbop_op_ = _startpos__1_ in @@ -11481,13 +12148,13 @@ module Tables = struct let _symbolstartpos = _startpos_pbop_op_ in let _sloc = (_symbolstartpos, _endpos) in -# 2427 "src/ocaml/preprocess/parser_raw.mly" +# 2545 "src/ocaml/preprocess/parser_raw.mly" ( let (pbop_pat, pbop_exp, rev_ands) = bindings in let ands = List.rev rev_ands in let pbop_loc = make_loc _sloc in let let_ = {pbop_op; pbop_pat; pbop_exp; pbop_loc} in mkexp ~loc:_sloc (Pexp_letop{ let_; ands; body}) ) -# 11491 "src/ocaml/preprocess/parser_raw.ml" +# 12158 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11528,9 +12195,9 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 2433 "src/ocaml/preprocess/parser_raw.mly" +# 2551 "src/ocaml/preprocess/parser_raw.mly" ( mkexp_cons ~loc:_sloc _loc__2_ (ghexp ~loc:_sloc (Pexp_tuple[_1;(merloc _endpos__2_ _3)])) ) -# 11534 "src/ocaml/preprocess/parser_raw.ml" +# 12201 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11563,35 +12230,35 @@ module Tables = struct let _3 : (Parsetree.expression) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 11569 "src/ocaml/preprocess/parser_raw.ml" +# 12236 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 11578 "src/ocaml/preprocess/parser_raw.ml" +# 12245 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 11586 "src/ocaml/preprocess/parser_raw.ml" +# 12253 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2435 "src/ocaml/preprocess/parser_raw.mly" +# 2553 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc (Pexp_setinstvar(_1, _3)) ) -# 11595 "src/ocaml/preprocess/parser_raw.ml" +# 12262 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11647,18 +12314,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 11653 "src/ocaml/preprocess/parser_raw.ml" +# 12320 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2437 "src/ocaml/preprocess/parser_raw.mly" +# 2555 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc (Pexp_setfield(_1, _3, _5)) ) -# 11662 "src/ocaml/preprocess/parser_raw.ml" +# 12329 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11724,14 +12391,14 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2438 "src/ocaml/preprocess/parser_raw.mly" +# 2556 "src/ocaml/preprocess/parser_raw.mly" (Some v) -# 11730 "src/ocaml/preprocess/parser_raw.ml" +# 12397 "src/ocaml/preprocess/parser_raw.ml" in -# 2398 "src/ocaml/preprocess/parser_raw.mly" +# 2516 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Paren, i, r ) -# 11735 "src/ocaml/preprocess/parser_raw.ml" +# 12402 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -11739,9 +12406,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2439 "src/ocaml/preprocess/parser_raw.mly" +# 2557 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 11745 "src/ocaml/preprocess/parser_raw.ml" +# 12412 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11807,14 +12474,14 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2438 "src/ocaml/preprocess/parser_raw.mly" +# 2556 "src/ocaml/preprocess/parser_raw.mly" (Some v) -# 11813 "src/ocaml/preprocess/parser_raw.ml" +# 12480 "src/ocaml/preprocess/parser_raw.ml" in -# 2400 "src/ocaml/preprocess/parser_raw.mly" +# 2518 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Brace, i, r ) -# 11818 "src/ocaml/preprocess/parser_raw.ml" +# 12485 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -11822,9 +12489,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2439 "src/ocaml/preprocess/parser_raw.mly" +# 2557 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 11828 "src/ocaml/preprocess/parser_raw.ml" +# 12495 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11890,14 +12557,14 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2438 "src/ocaml/preprocess/parser_raw.mly" +# 2556 "src/ocaml/preprocess/parser_raw.mly" (Some v) -# 11896 "src/ocaml/preprocess/parser_raw.ml" +# 12563 "src/ocaml/preprocess/parser_raw.ml" in -# 2402 "src/ocaml/preprocess/parser_raw.mly" +# 2520 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Bracket, i, r ) -# 11901 "src/ocaml/preprocess/parser_raw.ml" +# 12568 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -11905,9 +12572,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2439 "src/ocaml/preprocess/parser_raw.mly" +# 2557 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 11911 "src/ocaml/preprocess/parser_raw.ml" +# 12578 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11967,9 +12634,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 11973 "src/ocaml/preprocess/parser_raw.ml" +# 12640 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -11977,31 +12644,31 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2440 "src/ocaml/preprocess/parser_raw.mly" +# 2558 "src/ocaml/preprocess/parser_raw.mly" (Some v) -# 11983 "src/ocaml/preprocess/parser_raw.ml" +# 12650 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 11988 "src/ocaml/preprocess/parser_raw.ml" +# 12655 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = # 124 "" ( None ) -# 11994 "src/ocaml/preprocess/parser_raw.ml" +# 12661 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 11999 "src/ocaml/preprocess/parser_raw.ml" +# 12666 "src/ocaml/preprocess/parser_raw.ml" in -# 2398 "src/ocaml/preprocess/parser_raw.mly" +# 2516 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Paren, i, r ) -# 12005 "src/ocaml/preprocess/parser_raw.ml" +# 12672 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12009,9 +12676,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2441 "src/ocaml/preprocess/parser_raw.mly" +# 2559 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12015 "src/ocaml/preprocess/parser_raw.ml" +# 12682 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12083,9 +12750,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 12089 "src/ocaml/preprocess/parser_raw.ml" +# 12756 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -12097,40 +12764,40 @@ module Tables = struct let r = let _1 = _1_inlined1 in -# 2440 "src/ocaml/preprocess/parser_raw.mly" +# 2558 "src/ocaml/preprocess/parser_raw.mly" (Some v) -# 12103 "src/ocaml/preprocess/parser_raw.ml" +# 12770 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 12109 "src/ocaml/preprocess/parser_raw.ml" +# 12776 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" (_2) -# 12117 "src/ocaml/preprocess/parser_raw.ml" +# 12784 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 12122 "src/ocaml/preprocess/parser_raw.ml" +# 12789 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 12128 "src/ocaml/preprocess/parser_raw.ml" +# 12795 "src/ocaml/preprocess/parser_raw.ml" in -# 2398 "src/ocaml/preprocess/parser_raw.mly" +# 2516 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Paren, i, r ) -# 12134 "src/ocaml/preprocess/parser_raw.ml" +# 12801 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12138,9 +12805,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2441 "src/ocaml/preprocess/parser_raw.mly" +# 2559 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12144 "src/ocaml/preprocess/parser_raw.ml" +# 12811 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12200,9 +12867,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 12206 "src/ocaml/preprocess/parser_raw.ml" +# 12873 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12210,31 +12877,31 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2440 "src/ocaml/preprocess/parser_raw.mly" +# 2558 "src/ocaml/preprocess/parser_raw.mly" (Some v) -# 12216 "src/ocaml/preprocess/parser_raw.ml" +# 12883 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 12221 "src/ocaml/preprocess/parser_raw.ml" +# 12888 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = # 124 "" ( None ) -# 12227 "src/ocaml/preprocess/parser_raw.ml" +# 12894 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 12232 "src/ocaml/preprocess/parser_raw.ml" +# 12899 "src/ocaml/preprocess/parser_raw.ml" in -# 2400 "src/ocaml/preprocess/parser_raw.mly" +# 2518 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Brace, i, r ) -# 12238 "src/ocaml/preprocess/parser_raw.ml" +# 12905 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12242,9 +12909,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2441 "src/ocaml/preprocess/parser_raw.mly" +# 2559 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12248 "src/ocaml/preprocess/parser_raw.ml" +# 12915 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12316,9 +12983,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 12322 "src/ocaml/preprocess/parser_raw.ml" +# 12989 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -12330,40 +12997,40 @@ module Tables = struct let r = let _1 = _1_inlined1 in -# 2440 "src/ocaml/preprocess/parser_raw.mly" +# 2558 "src/ocaml/preprocess/parser_raw.mly" (Some v) -# 12336 "src/ocaml/preprocess/parser_raw.ml" +# 13003 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 12342 "src/ocaml/preprocess/parser_raw.ml" +# 13009 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" (_2) -# 12350 "src/ocaml/preprocess/parser_raw.ml" +# 13017 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 12355 "src/ocaml/preprocess/parser_raw.ml" +# 13022 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 12361 "src/ocaml/preprocess/parser_raw.ml" +# 13028 "src/ocaml/preprocess/parser_raw.ml" in -# 2400 "src/ocaml/preprocess/parser_raw.mly" +# 2518 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Brace, i, r ) -# 12367 "src/ocaml/preprocess/parser_raw.ml" +# 13034 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12371,9 +13038,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2441 "src/ocaml/preprocess/parser_raw.mly" +# 2559 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12377 "src/ocaml/preprocess/parser_raw.ml" +# 13044 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12433,9 +13100,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 12439 "src/ocaml/preprocess/parser_raw.ml" +# 13106 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12443,31 +13110,31 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2440 "src/ocaml/preprocess/parser_raw.mly" +# 2558 "src/ocaml/preprocess/parser_raw.mly" (Some v) -# 12449 "src/ocaml/preprocess/parser_raw.ml" +# 13116 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 12454 "src/ocaml/preprocess/parser_raw.ml" +# 13121 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = # 124 "" ( None ) -# 12460 "src/ocaml/preprocess/parser_raw.ml" +# 13127 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 12465 "src/ocaml/preprocess/parser_raw.ml" +# 13132 "src/ocaml/preprocess/parser_raw.ml" in -# 2402 "src/ocaml/preprocess/parser_raw.mly" +# 2520 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Bracket, i, r ) -# 12471 "src/ocaml/preprocess/parser_raw.ml" +# 13138 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12475,9 +13142,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2441 "src/ocaml/preprocess/parser_raw.mly" +# 2559 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12481 "src/ocaml/preprocess/parser_raw.ml" +# 13148 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12549,9 +13216,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 12555 "src/ocaml/preprocess/parser_raw.ml" +# 13222 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -12563,40 +13230,40 @@ module Tables = struct let r = let _1 = _1_inlined1 in -# 2440 "src/ocaml/preprocess/parser_raw.mly" +# 2558 "src/ocaml/preprocess/parser_raw.mly" (Some v) -# 12569 "src/ocaml/preprocess/parser_raw.ml" +# 13236 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 12575 "src/ocaml/preprocess/parser_raw.ml" +# 13242 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" (_2) -# 12583 "src/ocaml/preprocess/parser_raw.ml" +# 13250 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 12588 "src/ocaml/preprocess/parser_raw.ml" +# 13255 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 12594 "src/ocaml/preprocess/parser_raw.ml" +# 13261 "src/ocaml/preprocess/parser_raw.ml" in -# 2402 "src/ocaml/preprocess/parser_raw.mly" +# 2520 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Bracket, i, r ) -# 12600 "src/ocaml/preprocess/parser_raw.ml" +# 13267 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12604,9 +13271,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2441 "src/ocaml/preprocess/parser_raw.mly" +# 2559 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12610 "src/ocaml/preprocess/parser_raw.ml" +# 13277 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12636,59 +13303,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2443 "src/ocaml/preprocess/parser_raw.mly" +# 2561 "src/ocaml/preprocess/parser_raw.mly" ( Exp.attr _1 _2 ) -# 12642 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (string Location.loc option) = -# 4058 "src/ocaml/preprocess/parser_raw.mly" - ( None ) -# 12660 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _2 : (string Location.loc) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (string Location.loc option) = -# 4059 "src/ocaml/preprocess/parser_raw.mly" - ( Some _2 ) -# 12692 "src/ocaml/preprocess/parser_raw.ml" +# 13309 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12706,9 +13323,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -12725,16 +13342,36 @@ module Tables = struct }; } = _menhir_stack in let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.payload) = Obj.magic _3 in - let _2 : (string Location.loc) = Obj.magic _2 in + let xs : (string Location.loc list) = Obj.magic xs in + let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in - let _v : (Parsetree.extension) = -# 4071 "src/ocaml/preprocess/parser_raw.mly" - ( (_2, _3) ) -# 12738 "src/ocaml/preprocess/parser_raw.ml" + let _v : (Parsetree.function_param list) = let ty_params = +# 2809 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 13355 "src/ocaml/preprocess/parser_raw.ml" + in + let _endpos = _endpos__4_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2958 "src/ocaml/preprocess/parser_raw.mly" + ( (* We desugar (type a b c) to (type a) (type b) (type c). + If we do this desugaring, the loc for each parameter is a ghost. + *) + let loc = + match ty_params with + | [] -> assert false (* lident_list is non-empty *) + | [_] -> make_loc _sloc + | _ :: _ :: _ -> ghost_loc _sloc + in + List.map + (fun x -> { pparam_loc = loc; pparam_desc = Pparam_newtype x }) + ty_params + ) +# 13375 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12752,195 +13389,19 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : ( -# 839 "src/ocaml/preprocess/parser_raw.mly" - (string * Location.t * string * Location.t * string option) -# 12759 "src/ocaml/preprocess/parser_raw.ml" - ) = Obj.magic _1 in + let _1 : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (Parsetree.extension) = let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 4073 "src/ocaml/preprocess/parser_raw.mly" - ( mk_quotedext ~loc:_sloc _1 ) -# 12770 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - } = _menhir_stack in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let _1_inlined2 : (Longident.t) = Obj.magic _1_inlined2 in - let _3 : unit = Obj.magic _3 in - let _1_inlined1 : (string) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined3_ in - let _v : (Parsetree.extension_constructor) = let attrs = - let _1 = _1_inlined3 in - -# 4055 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 12825 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos_attrs_ = _endpos__1_inlined3_ in - let lid = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 996 "src/ocaml/preprocess/parser_raw.mly" - ( mkrhs _1 _sloc ) -# 12837 "src/ocaml/preprocess/parser_raw.ml" - - in - let cid = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 996 "src/ocaml/preprocess/parser_raw.mly" - ( mkrhs _1 _sloc ) -# 12848 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos = _endpos_attrs_ in + let _v : (Parsetree.function_param list) = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3415 "src/ocaml/preprocess/parser_raw.mly" - ( let info = symbol_info _endpos in - Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) -# 12858 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - } = _menhir_stack in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Longident.t) = Obj.magic _1_inlined1 in - let _3 : unit = Obj.magic _3 in - let _1 : (string) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined2_ in - let _v : (Parsetree.extension_constructor) = let attrs = - let _1 = _1_inlined2 in - -# 4055 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 12906 "src/ocaml/preprocess/parser_raw.ml" - - in - let _endpos_attrs_ = _endpos__1_inlined2_ in - let lid = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 996 "src/ocaml/preprocess/parser_raw.mly" - ( mkrhs _1 _sloc ) -# 12918 "src/ocaml/preprocess/parser_raw.ml" - - in - let cid = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 996 "src/ocaml/preprocess/parser_raw.mly" - ( mkrhs _1 _sloc ) -# 12928 "src/ocaml/preprocess/parser_raw.ml" - - in - let _startpos_cid_ = _startpos__1_ in - let _1 = -# 3876 "src/ocaml/preprocess/parser_raw.mly" - ( () ) -# 12935 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos = _endpos_attrs_ in - let _symbolstartpos = _startpos_cid_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3415 "src/ocaml/preprocess/parser_raw.mly" - ( let info = symbol_info _endpos in - Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) -# 12944 "src/ocaml/preprocess/parser_raw.ml" +# 2972 "src/ocaml/preprocess/parser_raw.mly" + ( let a, b, c = _1 in + [ { pparam_loc = make_loc _sloc; pparam_desc = Pparam_val (a, b, c) } ] + ) +# 13405 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12952,126 +13413,32 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.payload) = Obj.magic _3 in - let _2 : (string Location.loc) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v : (Parsetree.attribute) = let _endpos = _endpos__4_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 4046 "src/ocaml/preprocess/parser_raw.mly" - ( mark_symbol_docs _sloc; - Attr.mk ~loc:(make_loc _sloc) _2 _3 ) -# 12994 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let params = -# 2191 "src/ocaml/preprocess/parser_raw.mly" - ( [] ) -# 13012 "src/ocaml/preprocess/parser_raw.ml" - in - -# 2008 "src/ocaml/preprocess/parser_raw.mly" - ( params ) -# 13017 "src/ocaml/preprocess/parser_raw.ml" - in - { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let xs : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic xs in - let _1 : unit = Obj.magic _1 in + let xs : (Parsetree.function_param list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let params = - let params = - let xs = + let _startpos = _startpos_xs_ in + let _endpos = _endpos_xs_ in + let _v : (Parsetree.function_param list) = let _1 = + let xs = # 253 "" ( List.rev xs ) -# 13058 "src/ocaml/preprocess/parser_raw.ml" - in - -# 1130 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 13063 "src/ocaml/preprocess/parser_raw.ml" - - in +# 13431 "src/ocaml/preprocess/parser_raw.ml" + in -# 2193 "src/ocaml/preprocess/parser_raw.mly" - ( params ) -# 13069 "src/ocaml/preprocess/parser_raw.ml" +# 1185 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 13436 "src/ocaml/preprocess/parser_raw.ml" in -# 2008 "src/ocaml/preprocess/parser_raw.mly" - ( params ) -# 13075 "src/ocaml/preprocess/parser_raw.ml" +# 2977 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 13442 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13094,145 +13461,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2788 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 13100 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let _3 : (Parsetree.expression) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Parsetree.expression) = let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2790 "src/ocaml/preprocess/parser_raw.mly" - ( mkexp_constraint ~loc:_sloc _3 _1 ) -# 13142 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _2 : (Parsetree.expression) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.expression) = -# 2815 "src/ocaml/preprocess/parser_raw.mly" - ( (merloc _endpos__1_ _2) ) -# 13174 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - } = _menhir_stack in - let _4 : (Parsetree.expression) = Obj.magic _4 in - let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.core_type) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v : (Parsetree.expression) = let _1 = - let _1 = -# 2817 "src/ocaml/preprocess/parser_raw.mly" - ( Pexp_constraint ((merloc _endpos__3_ _4), _2) ) -# 13221 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos__1_ = _endpos__4_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1029 "src/ocaml/preprocess/parser_raw.mly" - ( mkexp ~loc:_sloc _1 ) -# 13230 "src/ocaml/preprocess/parser_raw.ml" - - in - -# 2818 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 13236 "src/ocaml/preprocess/parser_raw.ml" +# 2451 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 13467 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13256,21 +13487,70 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _2 : (Parsetree.expression) = Obj.magic _2 in - let _1 : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = Obj.magic _1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : (Parsetree.expression) = let _endpos = _endpos__2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _v : (Parsetree.expression) = +# 2452 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 13499 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : (Parsetree.expression) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.expression) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (Parsetree.expression) = let _1 = + let _1 = +# 2454 "src/ocaml/preprocess/parser_raw.mly" + ( Pexp_sequence(_1, _3) ) +# 13539 "src/ocaml/preprocess/parser_raw.ml" + in + let _endpos__1_ = _endpos__3_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1095 "src/ocaml/preprocess/parser_raw.mly" + ( mkexp ~loc:_sloc _1 ) +# 13548 "src/ocaml/preprocess/parser_raw.ml" + + in -# 2821 "src/ocaml/preprocess/parser_raw.mly" - ( - let (l,o,p) = _1 in - ghexp ~loc:_sloc (Pexp_fun(l, o, p, _2)) - ) -# 13274 "src/ocaml/preprocess/parser_raw.ml" +# 2455 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 13554 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13293,9 +13573,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -13313,25 +13593,22 @@ module Tables = struct }; } = _menhir_stack in let _5 : (Parsetree.expression) = Obj.magic _5 in - let _4 : unit = Obj.magic _4 in - let xs : (string Location.loc list) = Obj.magic xs in + let _4 : (string Location.loc) = Obj.magic _4 in + let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in - let _v : (Parsetree.expression) = let _3 = -# 2689 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 13327 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos = _endpos__5_ in + let _v : (Parsetree.expression) = let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2826 "src/ocaml/preprocess/parser_raw.mly" - ( mk_newtypes ~loc:_sloc _3 _5 ) -# 13335 "src/ocaml/preprocess/parser_raw.ml" +# 2457 "src/ocaml/preprocess/parser_raw.mly" + ( let seq = mkexp ~loc:_sloc (Pexp_sequence (_1, _5)) in + let payload = PStr [mkstrexp seq []] in + mkexp ~loc:_sloc (Pexp_extension (_4, payload)) ) +# 13612 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13354,9 +13631,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3531 "src/ocaml/preprocess/parser_raw.mly" +# 3682 "src/ocaml/preprocess/parser_raw.mly" ( ty ) -# 13360 "src/ocaml/preprocess/parser_raw.ml" +# 13637 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13402,19 +13679,19 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let domain = -# 994 "src/ocaml/preprocess/parser_raw.mly" +# 1060 "src/ocaml/preprocess/parser_raw.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 13408 "src/ocaml/preprocess/parser_raw.ml" +# 13685 "src/ocaml/preprocess/parser_raw.ml" in let label = -# 3543 "src/ocaml/preprocess/parser_raw.mly" +# 3694 "src/ocaml/preprocess/parser_raw.mly" ( Optional label ) -# 13413 "src/ocaml/preprocess/parser_raw.ml" +# 13690 "src/ocaml/preprocess/parser_raw.ml" in -# 3537 "src/ocaml/preprocess/parser_raw.mly" +# 3688 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 13418 "src/ocaml/preprocess/parser_raw.ml" +# 13695 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -13422,15 +13699,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 13428 "src/ocaml/preprocess/parser_raw.ml" +# 13705 "src/ocaml/preprocess/parser_raw.ml" in -# 3539 "src/ocaml/preprocess/parser_raw.mly" +# 3690 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 13434 "src/ocaml/preprocess/parser_raw.ml" +# 13711 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13477,9 +13754,9 @@ module Tables = struct let _1 : (Parsetree.core_type) = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 13483 "src/ocaml/preprocess/parser_raw.ml" +# 13760 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -13487,19 +13764,19 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let domain = -# 994 "src/ocaml/preprocess/parser_raw.mly" +# 1060 "src/ocaml/preprocess/parser_raw.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 13493 "src/ocaml/preprocess/parser_raw.ml" +# 13770 "src/ocaml/preprocess/parser_raw.ml" in let label = -# 3545 "src/ocaml/preprocess/parser_raw.mly" +# 3696 "src/ocaml/preprocess/parser_raw.mly" ( Labelled label ) -# 13498 "src/ocaml/preprocess/parser_raw.ml" +# 13775 "src/ocaml/preprocess/parser_raw.ml" in -# 3537 "src/ocaml/preprocess/parser_raw.mly" +# 3688 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 13503 "src/ocaml/preprocess/parser_raw.ml" +# 13780 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -13507,15 +13784,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 13513 "src/ocaml/preprocess/parser_raw.ml" +# 13790 "src/ocaml/preprocess/parser_raw.ml" in -# 3539 "src/ocaml/preprocess/parser_raw.mly" +# 3690 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 13519 "src/ocaml/preprocess/parser_raw.ml" +# 13796 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13554,19 +13831,19 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let domain = -# 994 "src/ocaml/preprocess/parser_raw.mly" +# 1060 "src/ocaml/preprocess/parser_raw.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 13560 "src/ocaml/preprocess/parser_raw.ml" +# 13837 "src/ocaml/preprocess/parser_raw.ml" in let label = -# 3547 "src/ocaml/preprocess/parser_raw.mly" +# 3698 "src/ocaml/preprocess/parser_raw.mly" ( Nolabel ) -# 13565 "src/ocaml/preprocess/parser_raw.ml" +# 13842 "src/ocaml/preprocess/parser_raw.ml" in -# 3537 "src/ocaml/preprocess/parser_raw.mly" +# 3688 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 13570 "src/ocaml/preprocess/parser_raw.ml" +# 13847 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -13574,15 +13851,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 13580 "src/ocaml/preprocess/parser_raw.ml" +# 13857 "src/ocaml/preprocess/parser_raw.ml" in -# 3539 "src/ocaml/preprocess/parser_raw.mly" +# 3690 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 13586 "src/ocaml/preprocess/parser_raw.ml" +# 13863 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13613,9 +13890,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Lexing.position * Parsetree.functor_parameter) = let _startpos = _startpos__1_ in -# 1385 "src/ocaml/preprocess/parser_raw.mly" +# 1472 "src/ocaml/preprocess/parser_raw.mly" ( _startpos, Unit ) -# 13619 "src/ocaml/preprocess/parser_raw.ml" +# 13896 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13671,16 +13948,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 13677 "src/ocaml/preprocess/parser_raw.ml" +# 13954 "src/ocaml/preprocess/parser_raw.ml" in let _startpos = _startpos__1_ in -# 1388 "src/ocaml/preprocess/parser_raw.mly" +# 1475 "src/ocaml/preprocess/parser_raw.mly" ( _startpos, Named (x, mty) ) -# 13684 "src/ocaml/preprocess/parser_raw.ml" +# 13961 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13703,9 +13980,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1377 "src/ocaml/preprocess/parser_raw.mly" +# 1464 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 13709 "src/ocaml/preprocess/parser_raw.ml" +# 13986 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13722,9 +13999,9 @@ module Tables = struct let _endpos = _startpos in let _v : (Ocaml_parsing.Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3330 "src/ocaml/preprocess/parser_raw.mly" +# 3481 "src/ocaml/preprocess/parser_raw.mly" ( ([],Pcstr_tuple [],None) ) -# 13728 "src/ocaml/preprocess/parser_raw.ml" +# 14005 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13755,9 +14032,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Ocaml_parsing.Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3331 "src/ocaml/preprocess/parser_raw.mly" +# 3482 "src/ocaml/preprocess/parser_raw.mly" ( ([],_2,None) ) -# 13761 "src/ocaml/preprocess/parser_raw.ml" +# 14038 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13802,9 +14079,9 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : (Ocaml_parsing.Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3333 "src/ocaml/preprocess/parser_raw.mly" +# 3484 "src/ocaml/preprocess/parser_raw.mly" ( ([],_2,Some _4) ) -# 13808 "src/ocaml/preprocess/parser_raw.ml" +# 14085 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13867,24 +14144,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 13871 "src/ocaml/preprocess/parser_raw.ml" +# 14148 "src/ocaml/preprocess/parser_raw.ml" in -# 1098 "src/ocaml/preprocess/parser_raw.mly" +# 1164 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 13876 "src/ocaml/preprocess/parser_raw.ml" +# 14153 "src/ocaml/preprocess/parser_raw.ml" in -# 3466 "src/ocaml/preprocess/parser_raw.mly" +# 3617 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 13882 "src/ocaml/preprocess/parser_raw.ml" +# 14159 "src/ocaml/preprocess/parser_raw.ml" in -# 3336 "src/ocaml/preprocess/parser_raw.mly" +# 3487 "src/ocaml/preprocess/parser_raw.mly" ( (_2,_4,Some _6) ) -# 13888 "src/ocaml/preprocess/parser_raw.ml" +# 14165 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13915,9 +14192,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Ocaml_parsing.Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3338 "src/ocaml/preprocess/parser_raw.mly" +# 3489 "src/ocaml/preprocess/parser_raw.mly" ( ([],Pcstr_tuple [],Some _2) ) -# 13921 "src/ocaml/preprocess/parser_raw.ml" +# 14198 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13966,24 +14243,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 13970 "src/ocaml/preprocess/parser_raw.ml" +# 14247 "src/ocaml/preprocess/parser_raw.ml" in -# 1098 "src/ocaml/preprocess/parser_raw.mly" +# 1164 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 13975 "src/ocaml/preprocess/parser_raw.ml" +# 14252 "src/ocaml/preprocess/parser_raw.ml" in -# 3466 "src/ocaml/preprocess/parser_raw.mly" +# 3617 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 13981 "src/ocaml/preprocess/parser_raw.ml" +# 14258 "src/ocaml/preprocess/parser_raw.ml" in -# 3340 "src/ocaml/preprocess/parser_raw.mly" +# 3491 "src/ocaml/preprocess/parser_raw.mly" ( (_2,Pcstr_tuple [],Some _4) ) -# 13987 "src/ocaml/preprocess/parser_raw.ml" +# 14264 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14032,9 +14309,9 @@ module Tables = struct Parsetree.attributes * Location.t * Ocaml_parsing.Docstrings.info) = let attrs = let _1 = _1_inlined2 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14038 "src/ocaml/preprocess/parser_raw.ml" +# 14315 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs_ = _endpos__1_inlined2_ in @@ -14044,23 +14321,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 14050 "src/ocaml/preprocess/parser_raw.ml" +# 14327 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3278 "src/ocaml/preprocess/parser_raw.mly" +# 3429 "src/ocaml/preprocess/parser_raw.mly" ( let vars, args, res = vars_args_res in let info = symbol_info _endpos in let loc = make_loc _sloc in cid, vars, args, res, attrs, loc, info ) -# 14064 "src/ocaml/preprocess/parser_raw.ml" +# 14341 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14102,9 +14379,9 @@ module Tables = struct Parsetree.attributes * Location.t * Ocaml_parsing.Docstrings.info) = let attrs = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14108 "src/ocaml/preprocess/parser_raw.ml" +# 14385 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs_ = _endpos__1_inlined1_ in @@ -14113,29 +14390,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 14119 "src/ocaml/preprocess/parser_raw.ml" +# 14396 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_cid_ = _startpos__1_ in let _1 = -# 3876 "src/ocaml/preprocess/parser_raw.mly" +# 4083 "src/ocaml/preprocess/parser_raw.mly" ( () ) -# 14126 "src/ocaml/preprocess/parser_raw.ml" +# 14403 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos_cid_ in let _sloc = (_symbolstartpos, _endpos) in -# 3278 "src/ocaml/preprocess/parser_raw.mly" +# 3429 "src/ocaml/preprocess/parser_raw.mly" ( let vars, args, res = vars_args_res in let info = symbol_info _endpos in let loc = make_loc _sloc in cid, vars, args, res, attrs, loc, info ) -# 14139 "src/ocaml/preprocess/parser_raw.ml" +# 14416 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14206,9 +14483,9 @@ module Tables = struct let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined3 : unit = Obj.magic _1_inlined3 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 14212 "src/ocaml/preprocess/parser_raw.ml" +# 14489 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -14221,9 +14498,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined4 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14227 "src/ocaml/preprocess/parser_raw.ml" +# 14504 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -14232,26 +14509,26 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 14236 "src/ocaml/preprocess/parser_raw.ml" +# 14513 "src/ocaml/preprocess/parser_raw.ml" in -# 1080 "src/ocaml/preprocess/parser_raw.mly" +# 1146 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 14241 "src/ocaml/preprocess/parser_raw.ml" +# 14518 "src/ocaml/preprocess/parser_raw.ml" in -# 3181 "src/ocaml/preprocess/parser_raw.mly" +# 3332 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14247 "src/ocaml/preprocess/parser_raw.ml" +# 14524 "src/ocaml/preprocess/parser_raw.ml" in let kind_priv_manifest = let _1 = _1_inlined3 in -# 3216 "src/ocaml/preprocess/parser_raw.mly" +# 3367 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 14255 "src/ocaml/preprocess/parser_raw.ml" +# 14532 "src/ocaml/preprocess/parser_raw.ml" in let id = @@ -14260,29 +14537,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 14266 "src/ocaml/preprocess/parser_raw.ml" +# 14543 "src/ocaml/preprocess/parser_raw.ml" in let flag = -# 3896 "src/ocaml/preprocess/parser_raw.mly" +# 4103 "src/ocaml/preprocess/parser_raw.mly" ( Recursive ) -# 14272 "src/ocaml/preprocess/parser_raw.ml" +# 14549 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14279 "src/ocaml/preprocess/parser_raw.ml" +# 14556 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3153 "src/ocaml/preprocess/parser_raw.mly" +# 3304 "src/ocaml/preprocess/parser_raw.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -14291,7 +14568,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 14295 "src/ocaml/preprocess/parser_raw.ml" +# 14572 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14368,9 +14645,9 @@ module Tables = struct let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined4 : unit = Obj.magic _1_inlined4 in let _1_inlined3 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 14374 "src/ocaml/preprocess/parser_raw.ml" +# 14651 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined3 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined2 : unit = Obj.magic _1_inlined2 in @@ -14384,9 +14661,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined5 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14390 "src/ocaml/preprocess/parser_raw.ml" +# 14667 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined5_ in @@ -14395,26 +14672,26 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 14399 "src/ocaml/preprocess/parser_raw.ml" +# 14676 "src/ocaml/preprocess/parser_raw.ml" in -# 1080 "src/ocaml/preprocess/parser_raw.mly" +# 1146 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 14404 "src/ocaml/preprocess/parser_raw.ml" +# 14681 "src/ocaml/preprocess/parser_raw.ml" in -# 3181 "src/ocaml/preprocess/parser_raw.mly" +# 3332 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14410 "src/ocaml/preprocess/parser_raw.ml" +# 14687 "src/ocaml/preprocess/parser_raw.ml" in let kind_priv_manifest = let _1 = _1_inlined4 in -# 3216 "src/ocaml/preprocess/parser_raw.mly" +# 3367 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 14418 "src/ocaml/preprocess/parser_raw.ml" +# 14695 "src/ocaml/preprocess/parser_raw.ml" in let id = @@ -14423,9 +14700,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 14429 "src/ocaml/preprocess/parser_raw.ml" +# 14706 "src/ocaml/preprocess/parser_raw.ml" in let flag = @@ -14434,24 +14711,24 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 3898 "src/ocaml/preprocess/parser_raw.mly" +# 4105 "src/ocaml/preprocess/parser_raw.mly" ( not_expecting _loc "nonrec flag"; Recursive ) -# 14440 "src/ocaml/preprocess/parser_raw.ml" +# 14717 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14448 "src/ocaml/preprocess/parser_raw.ml" +# 14725 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3153 "src/ocaml/preprocess/parser_raw.mly" +# 3304 "src/ocaml/preprocess/parser_raw.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -14460,7 +14737,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 14464 "src/ocaml/preprocess/parser_raw.ml" +# 14741 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14524,9 +14801,9 @@ module Tables = struct let xs : ((Parsetree.core_type * Parsetree.core_type * Location.t) list) = Obj.magic xs in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 14530 "src/ocaml/preprocess/parser_raw.ml" +# 14807 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -14539,9 +14816,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14545 "src/ocaml/preprocess/parser_raw.ml" +# 14822 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -14550,18 +14827,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 14554 "src/ocaml/preprocess/parser_raw.ml" +# 14831 "src/ocaml/preprocess/parser_raw.ml" in -# 1080 "src/ocaml/preprocess/parser_raw.mly" +# 1146 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 14559 "src/ocaml/preprocess/parser_raw.ml" +# 14836 "src/ocaml/preprocess/parser_raw.ml" in -# 3181 "src/ocaml/preprocess/parser_raw.mly" +# 3332 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14565 "src/ocaml/preprocess/parser_raw.ml" +# 14842 "src/ocaml/preprocess/parser_raw.ml" in let id = @@ -14570,29 +14847,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 14576 "src/ocaml/preprocess/parser_raw.ml" +# 14853 "src/ocaml/preprocess/parser_raw.ml" in let flag = -# 3892 "src/ocaml/preprocess/parser_raw.mly" +# 4099 "src/ocaml/preprocess/parser_raw.mly" ( Recursive ) -# 14582 "src/ocaml/preprocess/parser_raw.ml" +# 14859 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14589 "src/ocaml/preprocess/parser_raw.ml" +# 14866 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3153 "src/ocaml/preprocess/parser_raw.mly" +# 3304 "src/ocaml/preprocess/parser_raw.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -14601,7 +14878,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 14605 "src/ocaml/preprocess/parser_raw.ml" +# 14882 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14671,9 +14948,9 @@ module Tables = struct let xs : ((Parsetree.core_type * Parsetree.core_type * Location.t) list) = Obj.magic xs in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in let _1_inlined3 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 14677 "src/ocaml/preprocess/parser_raw.ml" +# 14954 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined3 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined2 : unit = Obj.magic _1_inlined2 in @@ -14687,9 +14964,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined4 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14693 "src/ocaml/preprocess/parser_raw.ml" +# 14970 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -14698,18 +14975,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 14702 "src/ocaml/preprocess/parser_raw.ml" +# 14979 "src/ocaml/preprocess/parser_raw.ml" in -# 1080 "src/ocaml/preprocess/parser_raw.mly" +# 1146 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 14707 "src/ocaml/preprocess/parser_raw.ml" +# 14984 "src/ocaml/preprocess/parser_raw.ml" in -# 3181 "src/ocaml/preprocess/parser_raw.mly" +# 3332 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14713 "src/ocaml/preprocess/parser_raw.ml" +# 14990 "src/ocaml/preprocess/parser_raw.ml" in let id = @@ -14718,32 +14995,32 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 14724 "src/ocaml/preprocess/parser_raw.ml" +# 15001 "src/ocaml/preprocess/parser_raw.ml" in let flag = let _1 = _1_inlined2 in -# 3893 "src/ocaml/preprocess/parser_raw.mly" +# 4100 "src/ocaml/preprocess/parser_raw.mly" ( Nonrecursive ) -# 14732 "src/ocaml/preprocess/parser_raw.ml" +# 15009 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14740 "src/ocaml/preprocess/parser_raw.ml" +# 15017 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3153 "src/ocaml/preprocess/parser_raw.mly" +# 3304 "src/ocaml/preprocess/parser_raw.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -14752,7 +15029,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 14756 "src/ocaml/preprocess/parser_raw.ml" +# 15033 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14771,17 +15048,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) -# 14777 "src/ocaml/preprocess/parser_raw.ml" +# 15054 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3731 "src/ocaml/preprocess/parser_raw.mly" +# 3938 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14785 "src/ocaml/preprocess/parser_raw.ml" +# 15062 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14800,17 +15077,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 14806 "src/ocaml/preprocess/parser_raw.ml" +# 15083 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3732 "src/ocaml/preprocess/parser_raw.mly" +# 3939 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14814 "src/ocaml/preprocess/parser_raw.ml" +# 15091 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14840,9 +15117,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.structure) = -# 1251 "src/ocaml/preprocess/parser_raw.mly" +# 1338 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14846 "src/ocaml/preprocess/parser_raw.ml" +# 15123 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14858,9 +15135,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (string) = -# 3783 "src/ocaml/preprocess/parser_raw.mly" +# 3990 "src/ocaml/preprocess/parser_raw.mly" ( "" ) -# 14864 "src/ocaml/preprocess/parser_raw.ml" +# 15141 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14890,9 +15167,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string) = -# 3784 "src/ocaml/preprocess/parser_raw.mly" +# 3991 "src/ocaml/preprocess/parser_raw.mly" ( ";.." ) -# 14896 "src/ocaml/preprocess/parser_raw.ml" +# 15173 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14922,9 +15199,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.signature) = -# 1258 "src/ocaml/preprocess/parser_raw.mly" +# 1345 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 14928 "src/ocaml/preprocess/parser_raw.ml" +# 15205 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14968,9 +15245,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.extension) = -# 4076 "src/ocaml/preprocess/parser_raw.mly" +# 4283 "src/ocaml/preprocess/parser_raw.mly" ( (_2, _3) ) -# 14974 "src/ocaml/preprocess/parser_raw.ml" +# 15251 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14989,9 +15266,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 842 "src/ocaml/preprocess/parser_raw.mly" +# 908 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string * Location.t * string option) -# 14995 "src/ocaml/preprocess/parser_raw.ml" +# 15272 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -15000,9 +15277,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4078 "src/ocaml/preprocess/parser_raw.mly" +# 4285 "src/ocaml/preprocess/parser_raw.mly" ( mk_quotedext ~loc:_sloc _1 ) -# 15006 "src/ocaml/preprocess/parser_raw.ml" +# 15283 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15048,9 +15325,9 @@ module Tables = struct let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in let _3 : unit = Obj.magic _3 in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15054 "src/ocaml/preprocess/parser_raw.ml" +# 15331 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _1 : (Asttypes.mutable_flag) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -15059,34 +15336,34 @@ module Tables = struct let _v : (Parsetree.label_declaration) = let _5 = let _1 = _1_inlined3 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 15065 "src/ocaml/preprocess/parser_raw.ml" +# 15342 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 3484 "src/ocaml/preprocess/parser_raw.mly" +# 3635 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 15074 "src/ocaml/preprocess/parser_raw.ml" +# 15351 "src/ocaml/preprocess/parser_raw.ml" in let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 15082 "src/ocaml/preprocess/parser_raw.ml" +# 15359 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 15090 "src/ocaml/preprocess/parser_raw.ml" +# 15367 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__2_ = _startpos__1_inlined1_ in @@ -15097,10 +15374,10 @@ module Tables = struct _startpos__2_ in let _sloc = (_symbolstartpos, _endpos) in -# 3357 "src/ocaml/preprocess/parser_raw.mly" +# 3508 "src/ocaml/preprocess/parser_raw.mly" ( let info = symbol_info _endpos in Type.field _2 _4 ~mut:_1 ~attrs:_5 ~loc:(make_loc _sloc) ~info ) -# 15104 "src/ocaml/preprocess/parser_raw.ml" +# 15381 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15160,9 +15437,9 @@ module Tables = struct let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in let _3 : unit = Obj.magic _3 in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15166 "src/ocaml/preprocess/parser_raw.ml" +# 15443 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _1 : (Asttypes.mutable_flag) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -15171,43 +15448,43 @@ module Tables = struct let _v : (Parsetree.label_declaration) = let _7 = let _1 = _1_inlined4 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 15177 "src/ocaml/preprocess/parser_raw.ml" +# 15454 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__7_ = _endpos__1_inlined4_ in let _5 = let _1 = _1_inlined3 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 15186 "src/ocaml/preprocess/parser_raw.ml" +# 15463 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 3484 "src/ocaml/preprocess/parser_raw.mly" +# 3635 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 15195 "src/ocaml/preprocess/parser_raw.ml" +# 15472 "src/ocaml/preprocess/parser_raw.ml" in let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 15203 "src/ocaml/preprocess/parser_raw.ml" +# 15480 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 15211 "src/ocaml/preprocess/parser_raw.ml" +# 15488 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__2_ = _startpos__1_inlined1_ in @@ -15218,14 +15495,14 @@ module Tables = struct _startpos__2_ in let _sloc = (_symbolstartpos, _endpos) in -# 3362 "src/ocaml/preprocess/parser_raw.mly" +# 3513 "src/ocaml/preprocess/parser_raw.mly" ( let info = match rhs_info _endpos__5_ with | Some _ as info_before_semi -> info_before_semi | None -> symbol_info _endpos in Type.field _2 _4 ~mut:_1 ~attrs:(_5 @ _7) ~loc:(make_loc _sloc) ~info ) -# 15229 "src/ocaml/preprocess/parser_raw.ml" +# 15506 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15248,9 +15525,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.label_declaration list) = -# 3351 "src/ocaml/preprocess/parser_raw.mly" +# 3502 "src/ocaml/preprocess/parser_raw.mly" ( [_1] ) -# 15254 "src/ocaml/preprocess/parser_raw.ml" +# 15531 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15273,9 +15550,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.label_declaration list) = -# 3352 "src/ocaml/preprocess/parser_raw.mly" +# 3503 "src/ocaml/preprocess/parser_raw.mly" ( [_1] ) -# 15279 "src/ocaml/preprocess/parser_raw.ml" +# 15556 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15305,9 +15582,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.label_declaration list) = -# 3353 "src/ocaml/preprocess/parser_raw.mly" +# 3504 "src/ocaml/preprocess/parser_raw.mly" ( _1 :: _2 ) -# 15311 "src/ocaml/preprocess/parser_raw.ml" +# 15588 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15326,9 +15603,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15332 "src/ocaml/preprocess/parser_raw.ml" +# 15609 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -15339,24 +15616,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 15345 "src/ocaml/preprocess/parser_raw.ml" +# 15622 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2386 "src/ocaml/preprocess/parser_raw.mly" +# 2504 "src/ocaml/preprocess/parser_raw.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 15354 "src/ocaml/preprocess/parser_raw.ml" +# 15631 "src/ocaml/preprocess/parser_raw.ml" in -# 2378 "src/ocaml/preprocess/parser_raw.mly" +# 2496 "src/ocaml/preprocess/parser_raw.mly" ( x ) -# 15360 "src/ocaml/preprocess/parser_raw.ml" +# 15637 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15389,9 +15666,9 @@ module Tables = struct let cty : (Parsetree.core_type) = Obj.magic cty in let _2 : unit = Obj.magic _2 in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15395 "src/ocaml/preprocess/parser_raw.ml" +# 15672 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -15402,18 +15679,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 15408 "src/ocaml/preprocess/parser_raw.ml" +# 15685 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2386 "src/ocaml/preprocess/parser_raw.mly" +# 2504 "src/ocaml/preprocess/parser_raw.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 15417 "src/ocaml/preprocess/parser_raw.ml" +# 15694 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_x_ = _startpos__1_ in @@ -15421,11 +15698,11 @@ module Tables = struct let _symbolstartpos = _startpos_x_ in let _sloc = (_symbolstartpos, _endpos) in -# 2380 "src/ocaml/preprocess/parser_raw.mly" +# 2498 "src/ocaml/preprocess/parser_raw.mly" ( let lab, pat = x in lab, mkpat ~loc:_sloc (Ppat_constraint (pat, cty)) ) -# 15429 "src/ocaml/preprocess/parser_raw.ml" +# 15706 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15448,9 +15725,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3815 "src/ocaml/preprocess/parser_raw.mly" +# 4022 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 15454 "src/ocaml/preprocess/parser_raw.ml" +# 15731 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15473,9 +15750,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2672 "src/ocaml/preprocess/parser_raw.mly" +# 2792 "src/ocaml/preprocess/parser_raw.mly" ( (Nolabel, _1) ) -# 15479 "src/ocaml/preprocess/parser_raw.ml" +# 15756 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15501,17 +15778,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 786 "src/ocaml/preprocess/parser_raw.mly" +# 852 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15507 "src/ocaml/preprocess/parser_raw.ml" +# 15784 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2674 "src/ocaml/preprocess/parser_raw.mly" +# 2794 "src/ocaml/preprocess/parser_raw.mly" ( (Labelled _1, _2) ) -# 15515 "src/ocaml/preprocess/parser_raw.ml" +# 15792 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15536,9 +15813,9 @@ module Tables = struct }; } = _menhir_stack in let label : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15542 "src/ocaml/preprocess/parser_raw.ml" +# 15819 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -15546,10 +15823,10 @@ module Tables = struct let _endpos = _endpos_label_ in let _v : (Asttypes.arg_label * Parsetree.expression) = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2676 "src/ocaml/preprocess/parser_raw.mly" +# 2796 "src/ocaml/preprocess/parser_raw.mly" ( let loc = _loc_label_ in (Labelled label, mkexpvar ~loc label) ) -# 15553 "src/ocaml/preprocess/parser_raw.ml" +# 15830 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15592,11 +15869,11 @@ module Tables = struct }; } = _menhir_stack in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic ty in + let ty : (Parsetree.type_constraint) = Obj.magic ty in let label : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15600 "src/ocaml/preprocess/parser_raw.ml" +# 15877 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic label in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -15606,10 +15883,10 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression) = let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2679 "src/ocaml/preprocess/parser_raw.mly" +# 2799 "src/ocaml/preprocess/parser_raw.mly" ( (Labelled label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) ty) ) -# 15613 "src/ocaml/preprocess/parser_raw.ml" +# 15890 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15634,9 +15911,9 @@ module Tables = struct }; } = _menhir_stack in let label : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15640 "src/ocaml/preprocess/parser_raw.ml" +# 15917 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -15644,10 +15921,10 @@ module Tables = struct let _endpos = _endpos_label_ in let _v : (Asttypes.arg_label * Parsetree.expression) = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2682 "src/ocaml/preprocess/parser_raw.mly" +# 2802 "src/ocaml/preprocess/parser_raw.mly" ( let loc = _loc_label_ in (Optional label, mkexpvar ~loc label) ) -# 15651 "src/ocaml/preprocess/parser_raw.ml" +# 15928 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15673,17 +15950,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 816 "src/ocaml/preprocess/parser_raw.mly" +# 882 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15679 "src/ocaml/preprocess/parser_raw.ml" +# 15956 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2685 "src/ocaml/preprocess/parser_raw.mly" +# 2805 "src/ocaml/preprocess/parser_raw.mly" ( (Optional _1, _2) ) -# 15687 "src/ocaml/preprocess/parser_raw.ml" +# 15964 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15736,15 +16013,15 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _4 = let _1 = _1_inlined1 in -# 2374 "src/ocaml/preprocess/parser_raw.mly" +# 2492 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 15742 "src/ocaml/preprocess/parser_raw.ml" +# 16019 "src/ocaml/preprocess/parser_raw.ml" in -# 2348 "src/ocaml/preprocess/parser_raw.mly" +# 2466 "src/ocaml/preprocess/parser_raw.mly" ( (Optional (fst _3), _4, snd _3) ) -# 15748 "src/ocaml/preprocess/parser_raw.ml" +# 16025 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15769,9 +16046,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15775 "src/ocaml/preprocess/parser_raw.ml" +# 16052 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -15784,24 +16061,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 15790 "src/ocaml/preprocess/parser_raw.ml" +# 16067 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2386 "src/ocaml/preprocess/parser_raw.mly" +# 2504 "src/ocaml/preprocess/parser_raw.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 15799 "src/ocaml/preprocess/parser_raw.ml" +# 16076 "src/ocaml/preprocess/parser_raw.ml" in -# 2350 "src/ocaml/preprocess/parser_raw.mly" +# 2468 "src/ocaml/preprocess/parser_raw.mly" ( (Optional (fst _2), None, snd _2) ) -# 15805 "src/ocaml/preprocess/parser_raw.ml" +# 16082 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15848,9 +16125,9 @@ module Tables = struct let _3 : (Parsetree.pattern) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 816 "src/ocaml/preprocess/parser_raw.mly" +# 882 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15854 "src/ocaml/preprocess/parser_raw.ml" +# 16131 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -15858,15 +16135,15 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _4 = let _1 = _1_inlined1 in -# 2374 "src/ocaml/preprocess/parser_raw.mly" +# 2492 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 15864 "src/ocaml/preprocess/parser_raw.ml" +# 16141 "src/ocaml/preprocess/parser_raw.ml" in -# 2352 "src/ocaml/preprocess/parser_raw.mly" +# 2470 "src/ocaml/preprocess/parser_raw.mly" ( (Optional _1, _4, _3) ) -# 15870 "src/ocaml/preprocess/parser_raw.ml" +# 16147 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15892,17 +16169,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.pattern) = Obj.magic _2 in let _1 : ( -# 816 "src/ocaml/preprocess/parser_raw.mly" +# 882 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15898 "src/ocaml/preprocess/parser_raw.ml" +# 16175 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2354 "src/ocaml/preprocess/parser_raw.mly" +# 2472 "src/ocaml/preprocess/parser_raw.mly" ( (Optional _1, None, _2) ) -# 15906 "src/ocaml/preprocess/parser_raw.ml" +# 16183 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15946,9 +16223,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2356 "src/ocaml/preprocess/parser_raw.mly" +# 2474 "src/ocaml/preprocess/parser_raw.mly" ( (Labelled (fst _3), None, snd _3) ) -# 15952 "src/ocaml/preprocess/parser_raw.ml" +# 16229 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15973,9 +16250,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 15979 "src/ocaml/preprocess/parser_raw.ml" +# 16256 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -15988,24 +16265,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 15994 "src/ocaml/preprocess/parser_raw.ml" +# 16271 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2386 "src/ocaml/preprocess/parser_raw.mly" +# 2504 "src/ocaml/preprocess/parser_raw.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 16003 "src/ocaml/preprocess/parser_raw.ml" +# 16280 "src/ocaml/preprocess/parser_raw.ml" in -# 2358 "src/ocaml/preprocess/parser_raw.mly" +# 2476 "src/ocaml/preprocess/parser_raw.mly" ( (Labelled (fst _2), None, snd _2) ) -# 16009 "src/ocaml/preprocess/parser_raw.ml" +# 16286 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16031,17 +16308,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.pattern) = Obj.magic _2 in let _1 : ( -# 786 "src/ocaml/preprocess/parser_raw.mly" +# 852 "src/ocaml/preprocess/parser_raw.mly" (string) -# 16037 "src/ocaml/preprocess/parser_raw.ml" +# 16314 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2360 "src/ocaml/preprocess/parser_raw.mly" +# 2478 "src/ocaml/preprocess/parser_raw.mly" ( (Labelled _1, None, _2) ) -# 16045 "src/ocaml/preprocess/parser_raw.ml" +# 16322 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16064,9 +16341,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2362 "src/ocaml/preprocess/parser_raw.mly" +# 2480 "src/ocaml/preprocess/parser_raw.mly" ( (Nolabel, None, _1) ) -# 16070 "src/ocaml/preprocess/parser_raw.ml" +# 16347 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16091,9 +16368,9 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option * bool) = -# 2725 "src/ocaml/preprocess/parser_raw.mly" +# 2844 "src/ocaml/preprocess/parser_raw.mly" ( let p,e,c = _1 in (p,e,c,false) ) -# 16097 "src/ocaml/preprocess/parser_raw.ml" +# 16374 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16120,9 +16397,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 2728 "src/ocaml/preprocess/parser_raw.mly" +# 2847 "src/ocaml/preprocess/parser_raw.mly" ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1, None, true) ) -# 16126 "src/ocaml/preprocess/parser_raw.ml" +# 16403 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16157,15 +16434,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2692 "src/ocaml/preprocess/parser_raw.mly" +# 2812 "src/ocaml/preprocess/parser_raw.mly" ( mkpatvar ~loc:_sloc _1 ) -# 16163 "src/ocaml/preprocess/parser_raw.ml" +# 16440 "src/ocaml/preprocess/parser_raw.ml" in -# 2696 "src/ocaml/preprocess/parser_raw.mly" +# 2816 "src/ocaml/preprocess/parser_raw.mly" ( (_1, _2, None) ) -# 16169 "src/ocaml/preprocess/parser_raw.ml" +# 16446 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16203,7 +16480,7 @@ module Tables = struct } = _menhir_stack in let _4 : (Parsetree.expression) = Obj.magic _4 in let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic _2 in + let _2 : (Parsetree.type_constraint) = Obj.magic _2 in let _1 : (string) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -16214,24 +16491,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2692 "src/ocaml/preprocess/parser_raw.mly" +# 2812 "src/ocaml/preprocess/parser_raw.mly" ( mkpatvar ~loc:_sloc _1 ) -# 16220 "src/ocaml/preprocess/parser_raw.ml" +# 16497 "src/ocaml/preprocess/parser_raw.ml" in -# 2698 "src/ocaml/preprocess/parser_raw.mly" +# 2818 "src/ocaml/preprocess/parser_raw.mly" ( let v = _1 in (* PR#7344 *) let t = match _2 with - Some t, None -> + Pconstraint t -> Pvc_constraint { locally_abstract_univars = []; typ=t } - | ground, Some coercion -> Pvc_coercion { ground; coercion} - | _ -> assert false + | Pcoerce (ground, coercion) -> Pvc_coercion { ground; coercion} in (v, _4, Some t) ) -# 16235 "src/ocaml/preprocess/parser_raw.ml" +# 16511 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16303,24 +16579,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 16307 "src/ocaml/preprocess/parser_raw.ml" +# 16583 "src/ocaml/preprocess/parser_raw.ml" in -# 1098 "src/ocaml/preprocess/parser_raw.mly" +# 1164 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 16312 "src/ocaml/preprocess/parser_raw.ml" +# 16588 "src/ocaml/preprocess/parser_raw.ml" in -# 3466 "src/ocaml/preprocess/parser_raw.mly" +# 3617 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16318 "src/ocaml/preprocess/parser_raw.ml" +# 16594 "src/ocaml/preprocess/parser_raw.ml" in -# 3470 "src/ocaml/preprocess/parser_raw.mly" +# 3621 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_poly(_1, _3) ) -# 16324 "src/ocaml/preprocess/parser_raw.ml" +# 16600 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__3_ = _startpos_xs_ in @@ -16329,19 +16605,19 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2692 "src/ocaml/preprocess/parser_raw.mly" +# 2812 "src/ocaml/preprocess/parser_raw.mly" ( mkpatvar ~loc:_sloc _1 ) -# 16335 "src/ocaml/preprocess/parser_raw.ml" +# 16611 "src/ocaml/preprocess/parser_raw.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2709 "src/ocaml/preprocess/parser_raw.mly" +# 2828 "src/ocaml/preprocess/parser_raw.mly" ( let t = ghtyp ~loc:(_loc__3_) _3 in (_1, _5, Some (Pvc_constraint { locally_abstract_univars = []; typ=t })) ) -# 16345 "src/ocaml/preprocess/parser_raw.ml" +# 16621 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16414,27 +16690,27 @@ module Tables = struct let _endpos = _endpos__8_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option) = let _4 = -# 2689 "src/ocaml/preprocess/parser_raw.mly" +# 2809 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 16420 "src/ocaml/preprocess/parser_raw.ml" +# 16696 "src/ocaml/preprocess/parser_raw.ml" in let _1 = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2692 "src/ocaml/preprocess/parser_raw.mly" +# 2812 "src/ocaml/preprocess/parser_raw.mly" ( mkpatvar ~loc:_sloc _1 ) -# 16429 "src/ocaml/preprocess/parser_raw.ml" +# 16705 "src/ocaml/preprocess/parser_raw.ml" in -# 2714 "src/ocaml/preprocess/parser_raw.mly" +# 2833 "src/ocaml/preprocess/parser_raw.mly" ( let constraint' = Pvc_constraint { locally_abstract_univars=_4; typ = _6} in (_1, _8, Some constraint') ) -# 16438 "src/ocaml/preprocess/parser_raw.ml" +# 16714 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16472,9 +16748,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option) = -# 2719 "src/ocaml/preprocess/parser_raw.mly" +# 2838 "src/ocaml/preprocess/parser_raw.mly" ( (_1, _3, None) ) -# 16478 "src/ocaml/preprocess/parser_raw.ml" +# 16754 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16526,9 +16802,9 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.value_constraint option) = -# 2721 "src/ocaml/preprocess/parser_raw.mly" +# 2840 "src/ocaml/preprocess/parser_raw.mly" ( (_1, _5, Some(Pvc_constraint { locally_abstract_univars=[]; typ=_3 })) ) -# 16532 "src/ocaml/preprocess/parser_raw.ml" +# 16808 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16590,36 +16866,36 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16596 "src/ocaml/preprocess/parser_raw.ml" +# 16872 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16605 "src/ocaml/preprocess/parser_raw.ml" +# 16881 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2748 "src/ocaml/preprocess/parser_raw.mly" +# 2867 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 16617 "src/ocaml/preprocess/parser_raw.ml" +# 16893 "src/ocaml/preprocess/parser_raw.ml" in -# 2738 "src/ocaml/preprocess/parser_raw.mly" +# 2857 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16623 "src/ocaml/preprocess/parser_raw.ml" +# 16899 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16649,9 +16925,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Ast_helper.let_bindings) = -# 2739 "src/ocaml/preprocess/parser_raw.mly" +# 2858 "src/ocaml/preprocess/parser_raw.mly" ( addlb _1 _2 ) -# 16655 "src/ocaml/preprocess/parser_raw.ml" +# 16931 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16706,41 +16982,41 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16712 "src/ocaml/preprocess/parser_raw.ml" +# 16988 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16721 "src/ocaml/preprocess/parser_raw.ml" +# 16997 "src/ocaml/preprocess/parser_raw.ml" in let ext = -# 4062 "src/ocaml/preprocess/parser_raw.mly" +# 4269 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 16727 "src/ocaml/preprocess/parser_raw.ml" +# 17003 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2748 "src/ocaml/preprocess/parser_raw.mly" +# 2867 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 16738 "src/ocaml/preprocess/parser_raw.ml" +# 17014 "src/ocaml/preprocess/parser_raw.ml" in -# 2738 "src/ocaml/preprocess/parser_raw.mly" +# 2857 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16744 "src/ocaml/preprocess/parser_raw.ml" +# 17020 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16809,18 +17085,18 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16815 "src/ocaml/preprocess/parser_raw.ml" +# 17091 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let attrs1 = let _1 = _1_inlined2 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16824 "src/ocaml/preprocess/parser_raw.ml" +# 17100 "src/ocaml/preprocess/parser_raw.ml" in let ext = @@ -16829,27 +17105,27 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4064 "src/ocaml/preprocess/parser_raw.mly" +# 4271 "src/ocaml/preprocess/parser_raw.mly" ( not_expecting _loc "extension"; None ) -# 16835 "src/ocaml/preprocess/parser_raw.ml" +# 17111 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2748 "src/ocaml/preprocess/parser_raw.mly" +# 2867 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 16847 "src/ocaml/preprocess/parser_raw.ml" +# 17123 "src/ocaml/preprocess/parser_raw.ml" in -# 2738 "src/ocaml/preprocess/parser_raw.mly" +# 2857 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16853 "src/ocaml/preprocess/parser_raw.ml" +# 17129 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16879,9 +17155,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Ast_helper.let_bindings) = -# 2739 "src/ocaml/preprocess/parser_raw.mly" +# 2858 "src/ocaml/preprocess/parser_raw.mly" ( addlb _1 _2 ) -# 16885 "src/ocaml/preprocess/parser_raw.ml" +# 17161 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16904,9 +17180,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 2390 "src/ocaml/preprocess/parser_raw.mly" +# 2508 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16910 "src/ocaml/preprocess/parser_raw.ml" +# 17186 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16944,24 +17220,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2392 "src/ocaml/preprocess/parser_raw.mly" +# 2510 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_constraint(_1, _3) ) -# 16950 "src/ocaml/preprocess/parser_raw.ml" +# 17226 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 16959 "src/ocaml/preprocess/parser_raw.ml" +# 17235 "src/ocaml/preprocess/parser_raw.ml" in -# 2393 "src/ocaml/preprocess/parser_raw.mly" +# 2511 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 16965 "src/ocaml/preprocess/parser_raw.ml" +# 17241 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16995,15 +17271,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2692 "src/ocaml/preprocess/parser_raw.mly" +# 2812 "src/ocaml/preprocess/parser_raw.mly" ( mkpatvar ~loc:_sloc _1 ) -# 17001 "src/ocaml/preprocess/parser_raw.ml" +# 17277 "src/ocaml/preprocess/parser_raw.ml" in -# 2765 "src/ocaml/preprocess/parser_raw.mly" +# 2884 "src/ocaml/preprocess/parser_raw.mly" ( (pat, exp) ) -# 17007 "src/ocaml/preprocess/parser_raw.ml" +# 17283 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17029,9 +17305,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 2768 "src/ocaml/preprocess/parser_raw.mly" +# 2887 "src/ocaml/preprocess/parser_raw.mly" ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1) ) -# 17035 "src/ocaml/preprocess/parser_raw.ml" +# 17311 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17082,10 +17358,10 @@ module Tables = struct let _startpos = _startpos_pat_ in let _endpos = _endpos_exp_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 2770 "src/ocaml/preprocess/parser_raw.mly" +# 2889 "src/ocaml/preprocess/parser_raw.mly" ( let loc = (_startpos_pat_, _endpos_typ_) in (ghpat ~loc (Ppat_constraint(pat, typ)), exp) ) -# 17089 "src/ocaml/preprocess/parser_raw.ml" +# 17365 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17122,9 +17398,9 @@ module Tables = struct let _startpos = _startpos_pat_ in let _endpos = _endpos_exp_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 2773 "src/ocaml/preprocess/parser_raw.mly" +# 2892 "src/ocaml/preprocess/parser_raw.mly" ( (pat, exp) ) -# 17128 "src/ocaml/preprocess/parser_raw.ml" +# 17404 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17147,10 +17423,10 @@ module Tables = struct let _startpos = _startpos_body_ in let _endpos = _endpos_body_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = -# 2777 "src/ocaml/preprocess/parser_raw.mly" +# 2896 "src/ocaml/preprocess/parser_raw.mly" ( let let_pat, let_exp = body in let_pat, let_exp, [] ) -# 17154 "src/ocaml/preprocess/parser_raw.ml" +# 17430 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17182,9 +17458,9 @@ module Tables = struct } = _menhir_stack in let body : (Parsetree.pattern * Parsetree.expression) = Obj.magic body in let _1 : ( -# 782 "src/ocaml/preprocess/parser_raw.mly" +# 848 "src/ocaml/preprocess/parser_raw.mly" (string) -# 17188 "src/ocaml/preprocess/parser_raw.ml" +# 17464 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let bindings : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = Obj.magic bindings in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -17195,22 +17471,22 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 17201 "src/ocaml/preprocess/parser_raw.ml" +# 17477 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_body_ in let _symbolstartpos = _startpos_bindings_ in let _sloc = (_symbolstartpos, _endpos) in -# 2780 "src/ocaml/preprocess/parser_raw.mly" +# 2899 "src/ocaml/preprocess/parser_raw.mly" ( let let_pat, let_exp, rev_ands = bindings in let pbop_pat, pbop_exp = body in let pbop_loc = make_loc _sloc in let and_ = {pbop_op; pbop_pat; pbop_exp; pbop_loc} in let_pat, let_exp, and_ :: rev_ands ) -# 17214 "src/ocaml/preprocess/parser_raw.ml" +# 17490 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17228,7 +17504,7 @@ module Tables = struct let _v : (Parsetree.class_expr Parsetree.class_infos list) = # 211 "" ( [] ) -# 17232 "src/ocaml/preprocess/parser_raw.ml" +# 17508 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17292,9 +17568,9 @@ module Tables = struct let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let body : (Parsetree.class_expr) = Obj.magic body in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 17298 "src/ocaml/preprocess/parser_raw.ml" +# 17574 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -17307,9 +17583,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 17313 "src/ocaml/preprocess/parser_raw.ml" +# 17589 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -17319,24 +17595,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 17325 "src/ocaml/preprocess/parser_raw.ml" +# 17601 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 17333 "src/ocaml/preprocess/parser_raw.ml" +# 17609 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1986 "src/ocaml/preprocess/parser_raw.mly" +# 2073 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -17344,13 +17620,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id body ~virt ~params ~attrs ~loc ~text ~docs ) -# 17348 "src/ocaml/preprocess/parser_raw.ml" +# 17624 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 17354 "src/ocaml/preprocess/parser_raw.ml" +# 17630 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17368,7 +17644,7 @@ module Tables = struct let _v : (Parsetree.class_type Parsetree.class_infos list) = # 211 "" ( [] ) -# 17372 "src/ocaml/preprocess/parser_raw.ml" +# 17648 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17439,9 +17715,9 @@ module Tables = struct let cty : (Parsetree.class_type) = Obj.magic cty in let _6 : unit = Obj.magic _6 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 17445 "src/ocaml/preprocess/parser_raw.ml" +# 17721 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -17454,9 +17730,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 17460 "src/ocaml/preprocess/parser_raw.ml" +# 17736 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -17466,24 +17742,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 17472 "src/ocaml/preprocess/parser_raw.ml" +# 17748 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 17480 "src/ocaml/preprocess/parser_raw.ml" +# 17756 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2285 "src/ocaml/preprocess/parser_raw.mly" +# 2372 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -17491,13 +17767,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id cty ~virt ~params ~attrs ~loc ~text ~docs ) -# 17495 "src/ocaml/preprocess/parser_raw.ml" +# 17771 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 17501 "src/ocaml/preprocess/parser_raw.ml" +# 17777 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17515,7 +17791,7 @@ module Tables = struct let _v : (Parsetree.class_type Parsetree.class_infos list) = # 211 "" ( [] ) -# 17519 "src/ocaml/preprocess/parser_raw.ml" +# 17795 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17586,9 +17862,9 @@ module Tables = struct let csig : (Parsetree.class_type) = Obj.magic csig in let _6 : unit = Obj.magic _6 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 17592 "src/ocaml/preprocess/parser_raw.ml" +# 17868 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -17601,9 +17877,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 17607 "src/ocaml/preprocess/parser_raw.ml" +# 17883 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -17613,24 +17889,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 17619 "src/ocaml/preprocess/parser_raw.ml" +# 17895 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 17627 "src/ocaml/preprocess/parser_raw.ml" +# 17903 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2324 "src/ocaml/preprocess/parser_raw.mly" +# 2411 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -17638,13 +17914,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id csig ~virt ~params ~attrs ~loc ~text ~docs ) -# 17642 "src/ocaml/preprocess/parser_raw.ml" +# 17918 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 17648 "src/ocaml/preprocess/parser_raw.ml" +# 17924 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17662,7 +17938,7 @@ module Tables = struct let _v : (Parsetree.module_binding list) = # 211 "" ( [] ) -# 17666 "src/ocaml/preprocess/parser_raw.ml" +# 17942 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17723,9 +17999,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 17729 "src/ocaml/preprocess/parser_raw.ml" +# 18005 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -17735,24 +18011,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 17741 "src/ocaml/preprocess/parser_raw.ml" +# 18017 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 17749 "src/ocaml/preprocess/parser_raw.ml" +# 18025 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1632 "src/ocaml/preprocess/parser_raw.mly" +# 1719 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in @@ -17760,13 +18036,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Mb.mk name body ~attrs ~loc ~text ~docs ) -# 17764 "src/ocaml/preprocess/parser_raw.ml" +# 18040 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 17770 "src/ocaml/preprocess/parser_raw.ml" +# 18046 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17784,7 +18060,7 @@ module Tables = struct let _v : (Parsetree.module_declaration list) = # 211 "" ( [] ) -# 17788 "src/ocaml/preprocess/parser_raw.ml" +# 18064 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17852,9 +18128,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 17858 "src/ocaml/preprocess/parser_raw.ml" +# 18134 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -17864,24 +18140,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 17870 "src/ocaml/preprocess/parser_raw.ml" +# 18146 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 17878 "src/ocaml/preprocess/parser_raw.ml" +# 18154 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1927 "src/ocaml/preprocess/parser_raw.mly" +# 2014 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let docs = symbol_docs _sloc in @@ -17889,13 +18165,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Md.mk name mty ~attrs ~loc ~text ~docs ) -# 17893 "src/ocaml/preprocess/parser_raw.ml" +# 18169 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 17899 "src/ocaml/preprocess/parser_raw.ml" +# 18175 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17913,7 +18189,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 211 "" ( [] ) -# 17917 "src/ocaml/preprocess/parser_raw.ml" +# 18193 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17945,7 +18221,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 213 "" ( x :: xs ) -# 17949 "src/ocaml/preprocess/parser_raw.ml" +# 18225 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17963,7 +18239,7 @@ module Tables = struct let _v : (Parsetree.type_declaration list) = # 211 "" ( [] ) -# 17967 "src/ocaml/preprocess/parser_raw.ml" +# 18243 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18028,9 +18304,9 @@ module Tables = struct let xs_inlined1 : ((Parsetree.core_type * Parsetree.core_type * Location.t) list) = Obj.magic xs_inlined1 in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 18034 "src/ocaml/preprocess/parser_raw.ml" +# 18310 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -18043,9 +18319,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18049 "src/ocaml/preprocess/parser_raw.ml" +# 18325 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -18054,18 +18330,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 18058 "src/ocaml/preprocess/parser_raw.ml" +# 18334 "src/ocaml/preprocess/parser_raw.ml" in -# 1080 "src/ocaml/preprocess/parser_raw.mly" +# 1146 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 18063 "src/ocaml/preprocess/parser_raw.ml" +# 18339 "src/ocaml/preprocess/parser_raw.ml" in -# 3181 "src/ocaml/preprocess/parser_raw.mly" +# 3332 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18069 "src/ocaml/preprocess/parser_raw.ml" +# 18345 "src/ocaml/preprocess/parser_raw.ml" in let id = @@ -18074,24 +18350,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 18080 "src/ocaml/preprocess/parser_raw.ml" +# 18356 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18088 "src/ocaml/preprocess/parser_raw.ml" +# 18364 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3170 "src/ocaml/preprocess/parser_raw.mly" +# 3321 "src/ocaml/preprocess/parser_raw.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -18100,13 +18376,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text ) -# 18104 "src/ocaml/preprocess/parser_raw.ml" +# 18380 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18110 "src/ocaml/preprocess/parser_raw.ml" +# 18386 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18124,7 +18400,7 @@ module Tables = struct let _v : (Parsetree.type_declaration list) = # 211 "" ( [] ) -# 18128 "src/ocaml/preprocess/parser_raw.ml" +# 18404 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18196,9 +18472,9 @@ module Tables = struct let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined3 : unit = Obj.magic _1_inlined3 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 18202 "src/ocaml/preprocess/parser_raw.ml" +# 18478 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -18211,9 +18487,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18217 "src/ocaml/preprocess/parser_raw.ml" +# 18493 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -18222,26 +18498,26 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 18226 "src/ocaml/preprocess/parser_raw.ml" +# 18502 "src/ocaml/preprocess/parser_raw.ml" in -# 1080 "src/ocaml/preprocess/parser_raw.mly" +# 1146 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 18231 "src/ocaml/preprocess/parser_raw.ml" +# 18507 "src/ocaml/preprocess/parser_raw.ml" in -# 3181 "src/ocaml/preprocess/parser_raw.mly" +# 3332 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18237 "src/ocaml/preprocess/parser_raw.ml" +# 18513 "src/ocaml/preprocess/parser_raw.ml" in let kind_priv_manifest = let _1 = _1_inlined3 in -# 3216 "src/ocaml/preprocess/parser_raw.mly" +# 3367 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 18245 "src/ocaml/preprocess/parser_raw.ml" +# 18521 "src/ocaml/preprocess/parser_raw.ml" in let id = @@ -18250,24 +18526,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 18256 "src/ocaml/preprocess/parser_raw.ml" +# 18532 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18264 "src/ocaml/preprocess/parser_raw.ml" +# 18540 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3170 "src/ocaml/preprocess/parser_raw.mly" +# 3321 "src/ocaml/preprocess/parser_raw.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -18276,13 +18552,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text ) -# 18280 "src/ocaml/preprocess/parser_raw.ml" +# 18556 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18286 "src/ocaml/preprocess/parser_raw.ml" +# 18562 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18300,7 +18576,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 211 "" ( [] ) -# 18304 "src/ocaml/preprocess/parser_raw.ml" +# 18580 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18332,7 +18608,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 213 "" ( x :: xs ) -# 18336 "src/ocaml/preprocess/parser_raw.ml" +# 18612 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18350,7 +18626,7 @@ module Tables = struct let _v : (Parsetree.signature_item list list) = # 211 "" ( [] ) -# 18354 "src/ocaml/preprocess/parser_raw.ml" +# 18630 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18383,21 +18659,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1006 "src/ocaml/preprocess/parser_raw.mly" +# 1072 "src/ocaml/preprocess/parser_raw.mly" ( text_sig _startpos ) -# 18389 "src/ocaml/preprocess/parser_raw.ml" +# 18665 "src/ocaml/preprocess/parser_raw.ml" in -# 1780 "src/ocaml/preprocess/parser_raw.mly" +# 1867 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18395 "src/ocaml/preprocess/parser_raw.ml" +# 18671 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18401 "src/ocaml/preprocess/parser_raw.ml" +# 18677 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18430,21 +18706,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1004 "src/ocaml/preprocess/parser_raw.mly" +# 1070 "src/ocaml/preprocess/parser_raw.mly" ( text_sig _startpos @ [_1] ) -# 18436 "src/ocaml/preprocess/parser_raw.ml" +# 18712 "src/ocaml/preprocess/parser_raw.ml" in -# 1780 "src/ocaml/preprocess/parser_raw.mly" +# 1867 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18442 "src/ocaml/preprocess/parser_raw.ml" +# 18718 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18448 "src/ocaml/preprocess/parser_raw.ml" +# 18724 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18462,7 +18738,7 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = # 211 "" ( [] ) -# 18466 "src/ocaml/preprocess/parser_raw.ml" +# 18742 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18495,40 +18771,40 @@ module Tables = struct let _1 = let ys = let items = -# 1066 "src/ocaml/preprocess/parser_raw.mly" +# 1132 "src/ocaml/preprocess/parser_raw.mly" ( [] ) -# 18501 "src/ocaml/preprocess/parser_raw.ml" +# 18777 "src/ocaml/preprocess/parser_raw.ml" in -# 1511 "src/ocaml/preprocess/parser_raw.mly" +# 1598 "src/ocaml/preprocess/parser_raw.mly" ( items ) -# 18506 "src/ocaml/preprocess/parser_raw.ml" +# 18782 "src/ocaml/preprocess/parser_raw.ml" in let xs = let _startpos = _startpos__1_ in -# 1002 "src/ocaml/preprocess/parser_raw.mly" +# 1068 "src/ocaml/preprocess/parser_raw.mly" ( text_str _startpos ) -# 18514 "src/ocaml/preprocess/parser_raw.ml" +# 18790 "src/ocaml/preprocess/parser_raw.ml" in # 267 "" ( xs @ ys ) -# 18520 "src/ocaml/preprocess/parser_raw.ml" +# 18796 "src/ocaml/preprocess/parser_raw.ml" in -# 1527 "src/ocaml/preprocess/parser_raw.mly" +# 1614 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18526 "src/ocaml/preprocess/parser_raw.ml" +# 18802 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18532 "src/ocaml/preprocess/parser_raw.ml" +# 18808 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18580,70 +18856,70 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18586 "src/ocaml/preprocess/parser_raw.ml" +# 18862 "src/ocaml/preprocess/parser_raw.ml" in -# 1518 "src/ocaml/preprocess/parser_raw.mly" +# 1605 "src/ocaml/preprocess/parser_raw.mly" ( mkstrexp e attrs ) -# 18591 "src/ocaml/preprocess/parser_raw.ml" +# 18867 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1000 "src/ocaml/preprocess/parser_raw.mly" +# 1066 "src/ocaml/preprocess/parser_raw.mly" ( text_str _startpos @ [_1] ) -# 18599 "src/ocaml/preprocess/parser_raw.ml" +# 18875 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1019 "src/ocaml/preprocess/parser_raw.mly" +# 1085 "src/ocaml/preprocess/parser_raw.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 18609 "src/ocaml/preprocess/parser_raw.ml" +# 18885 "src/ocaml/preprocess/parser_raw.ml" in -# 1068 "src/ocaml/preprocess/parser_raw.mly" +# 1134 "src/ocaml/preprocess/parser_raw.mly" ( x ) -# 18615 "src/ocaml/preprocess/parser_raw.ml" +# 18891 "src/ocaml/preprocess/parser_raw.ml" in -# 1511 "src/ocaml/preprocess/parser_raw.mly" +# 1598 "src/ocaml/preprocess/parser_raw.mly" ( items ) -# 18621 "src/ocaml/preprocess/parser_raw.ml" +# 18897 "src/ocaml/preprocess/parser_raw.ml" in let xs = let _startpos = _startpos__1_ in -# 1002 "src/ocaml/preprocess/parser_raw.mly" +# 1068 "src/ocaml/preprocess/parser_raw.mly" ( text_str _startpos ) -# 18629 "src/ocaml/preprocess/parser_raw.ml" +# 18905 "src/ocaml/preprocess/parser_raw.ml" in # 267 "" ( xs @ ys ) -# 18635 "src/ocaml/preprocess/parser_raw.ml" +# 18911 "src/ocaml/preprocess/parser_raw.ml" in -# 1527 "src/ocaml/preprocess/parser_raw.mly" +# 1614 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18641 "src/ocaml/preprocess/parser_raw.ml" +# 18917 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18647 "src/ocaml/preprocess/parser_raw.ml" +# 18923 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18676,21 +18952,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1000 "src/ocaml/preprocess/parser_raw.mly" +# 1066 "src/ocaml/preprocess/parser_raw.mly" ( text_str _startpos @ [_1] ) -# 18682 "src/ocaml/preprocess/parser_raw.ml" +# 18958 "src/ocaml/preprocess/parser_raw.ml" in -# 1527 "src/ocaml/preprocess/parser_raw.mly" +# 1614 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18688 "src/ocaml/preprocess/parser_raw.ml" +# 18964 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18694 "src/ocaml/preprocess/parser_raw.ml" +# 18970 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18708,7 +18984,7 @@ module Tables = struct let _v : (Parsetree.class_type_field list list) = # 211 "" ( [] ) -# 18712 "src/ocaml/preprocess/parser_raw.ml" +# 18988 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18740,15 +19016,15 @@ module Tables = struct let _v : (Parsetree.class_type_field list list) = let x = let _startpos = _startpos__1_ in -# 1014 "src/ocaml/preprocess/parser_raw.mly" +# 1080 "src/ocaml/preprocess/parser_raw.mly" ( text_csig _startpos @ [_1] ) -# 18746 "src/ocaml/preprocess/parser_raw.ml" +# 19022 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18752 "src/ocaml/preprocess/parser_raw.ml" +# 19028 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18766,7 +19042,7 @@ module Tables = struct let _v : (Parsetree.class_field list list) = # 211 "" ( [] ) -# 18770 "src/ocaml/preprocess/parser_raw.ml" +# 19046 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18798,15 +19074,15 @@ module Tables = struct let _v : (Parsetree.class_field list list) = let x = let _startpos = _startpos__1_ in -# 1012 "src/ocaml/preprocess/parser_raw.mly" +# 1078 "src/ocaml/preprocess/parser_raw.mly" ( text_cstr _startpos @ [_1] ) -# 18804 "src/ocaml/preprocess/parser_raw.ml" +# 19080 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18810 "src/ocaml/preprocess/parser_raw.ml" +# 19086 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18824,7 +19100,7 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = # 211 "" ( [] ) -# 18828 "src/ocaml/preprocess/parser_raw.ml" +# 19104 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18856,15 +19132,15 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = let x = let _startpos = _startpos__1_ in -# 1000 "src/ocaml/preprocess/parser_raw.mly" +# 1066 "src/ocaml/preprocess/parser_raw.mly" ( text_str _startpos @ [_1] ) -# 18862 "src/ocaml/preprocess/parser_raw.ml" +# 19138 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18868 "src/ocaml/preprocess/parser_raw.ml" +# 19144 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18882,7 +19158,7 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase list list) = # 211 "" ( [] ) -# 18886 "src/ocaml/preprocess/parser_raw.ml" +# 19162 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18915,32 +19191,32 @@ module Tables = struct let _1 = let x = let _1 = -# 1066 "src/ocaml/preprocess/parser_raw.mly" +# 1132 "src/ocaml/preprocess/parser_raw.mly" ( [] ) -# 18921 "src/ocaml/preprocess/parser_raw.ml" +# 19197 "src/ocaml/preprocess/parser_raw.ml" in -# 1298 "src/ocaml/preprocess/parser_raw.mly" +# 1385 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18926 "src/ocaml/preprocess/parser_raw.ml" +# 19202 "src/ocaml/preprocess/parser_raw.ml" in # 183 "" ( x ) -# 18932 "src/ocaml/preprocess/parser_raw.ml" +# 19208 "src/ocaml/preprocess/parser_raw.ml" in -# 1310 "src/ocaml/preprocess/parser_raw.mly" +# 1397 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18938 "src/ocaml/preprocess/parser_raw.ml" +# 19214 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 18944 "src/ocaml/preprocess/parser_raw.ml" +# 19220 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18992,58 +19268,58 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 18998 "src/ocaml/preprocess/parser_raw.ml" +# 19274 "src/ocaml/preprocess/parser_raw.ml" in -# 1518 "src/ocaml/preprocess/parser_raw.mly" +# 1605 "src/ocaml/preprocess/parser_raw.mly" ( mkstrexp e attrs ) -# 19003 "src/ocaml/preprocess/parser_raw.ml" +# 19279 "src/ocaml/preprocess/parser_raw.ml" in -# 1010 "src/ocaml/preprocess/parser_raw.mly" +# 1076 "src/ocaml/preprocess/parser_raw.mly" ( Ptop_def [_1] ) -# 19009 "src/ocaml/preprocess/parser_raw.ml" +# 19285 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1008 "src/ocaml/preprocess/parser_raw.mly" +# 1074 "src/ocaml/preprocess/parser_raw.mly" ( text_def _startpos @ [_1] ) -# 19017 "src/ocaml/preprocess/parser_raw.ml" +# 19293 "src/ocaml/preprocess/parser_raw.ml" in -# 1068 "src/ocaml/preprocess/parser_raw.mly" +# 1134 "src/ocaml/preprocess/parser_raw.mly" ( x ) -# 19023 "src/ocaml/preprocess/parser_raw.ml" +# 19299 "src/ocaml/preprocess/parser_raw.ml" in -# 1298 "src/ocaml/preprocess/parser_raw.mly" +# 1385 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19029 "src/ocaml/preprocess/parser_raw.ml" +# 19305 "src/ocaml/preprocess/parser_raw.ml" in # 183 "" ( x ) -# 19035 "src/ocaml/preprocess/parser_raw.ml" +# 19311 "src/ocaml/preprocess/parser_raw.ml" in -# 1310 "src/ocaml/preprocess/parser_raw.mly" +# 1397 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19041 "src/ocaml/preprocess/parser_raw.ml" +# 19317 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 19047 "src/ocaml/preprocess/parser_raw.ml" +# 19323 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19075,27 +19351,27 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase list list) = let x = let _1 = let _1 = -# 1010 "src/ocaml/preprocess/parser_raw.mly" +# 1076 "src/ocaml/preprocess/parser_raw.mly" ( Ptop_def [_1] ) -# 19081 "src/ocaml/preprocess/parser_raw.ml" +# 19357 "src/ocaml/preprocess/parser_raw.ml" in let _startpos = _startpos__1_ in -# 1008 "src/ocaml/preprocess/parser_raw.mly" +# 1074 "src/ocaml/preprocess/parser_raw.mly" ( text_def _startpos @ [_1] ) -# 19087 "src/ocaml/preprocess/parser_raw.ml" +# 19363 "src/ocaml/preprocess/parser_raw.ml" in -# 1310 "src/ocaml/preprocess/parser_raw.mly" +# 1397 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19093 "src/ocaml/preprocess/parser_raw.ml" +# 19369 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 19099 "src/ocaml/preprocess/parser_raw.ml" +# 19375 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19130,29 +19406,29 @@ module Tables = struct let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1019 "src/ocaml/preprocess/parser_raw.mly" +# 1085 "src/ocaml/preprocess/parser_raw.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 19137 "src/ocaml/preprocess/parser_raw.ml" +# 19413 "src/ocaml/preprocess/parser_raw.ml" in let _startpos = _startpos__1_ in -# 1008 "src/ocaml/preprocess/parser_raw.mly" +# 1074 "src/ocaml/preprocess/parser_raw.mly" ( text_def _startpos @ [_1] ) -# 19144 "src/ocaml/preprocess/parser_raw.ml" +# 19420 "src/ocaml/preprocess/parser_raw.ml" in -# 1310 "src/ocaml/preprocess/parser_raw.mly" +# 1397 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19150 "src/ocaml/preprocess/parser_raw.ml" +# 19426 "src/ocaml/preprocess/parser_raw.ml" in # 213 "" ( x :: xs ) -# 19156 "src/ocaml/preprocess/parser_raw.ml" +# 19432 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19191,7 +19467,7 @@ module Tables = struct let _v : ((Longident.t Location.loc * Parsetree.pattern) list * unit option) = let _2 = # 124 "" ( None ) -# 19195 "src/ocaml/preprocess/parser_raw.ml" +# 19471 "src/ocaml/preprocess/parser_raw.ml" in let x = let label = @@ -19199,9 +19475,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 19205 "src/ocaml/preprocess/parser_raw.ml" +# 19481 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_label_ = _startpos__1_ in @@ -19209,7 +19485,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3056 "src/ocaml/preprocess/parser_raw.mly" +# 3207 "src/ocaml/preprocess/parser_raw.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -19223,13 +19499,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 19227 "src/ocaml/preprocess/parser_raw.ml" +# 19503 "src/ocaml/preprocess/parser_raw.ml" in -# 1235 "src/ocaml/preprocess/parser_raw.mly" +# 1322 "src/ocaml/preprocess/parser_raw.mly" ( [x], None ) -# 19233 "src/ocaml/preprocess/parser_raw.ml" +# 19509 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19275,7 +19551,7 @@ module Tables = struct let _v : ((Longident.t Location.loc * Parsetree.pattern) list * unit option) = let _2 = # 126 "" ( Some x ) -# 19279 "src/ocaml/preprocess/parser_raw.ml" +# 19555 "src/ocaml/preprocess/parser_raw.ml" in let x = let label = @@ -19283,9 +19559,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 19289 "src/ocaml/preprocess/parser_raw.ml" +# 19565 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_label_ = _startpos__1_ in @@ -19293,7 +19569,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3056 "src/ocaml/preprocess/parser_raw.mly" +# 3207 "src/ocaml/preprocess/parser_raw.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -19307,13 +19583,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 19311 "src/ocaml/preprocess/parser_raw.ml" +# 19587 "src/ocaml/preprocess/parser_raw.ml" in -# 1235 "src/ocaml/preprocess/parser_raw.mly" +# 1322 "src/ocaml/preprocess/parser_raw.mly" ( [x], None ) -# 19317 "src/ocaml/preprocess/parser_raw.ml" +# 19593 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19376,9 +19652,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 19382 "src/ocaml/preprocess/parser_raw.ml" +# 19658 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_label_ = _startpos__1_ in @@ -19386,7 +19662,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3056 "src/ocaml/preprocess/parser_raw.mly" +# 3207 "src/ocaml/preprocess/parser_raw.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -19400,13 +19676,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 19404 "src/ocaml/preprocess/parser_raw.ml" +# 19680 "src/ocaml/preprocess/parser_raw.ml" in -# 1237 "src/ocaml/preprocess/parser_raw.mly" +# 1324 "src/ocaml/preprocess/parser_raw.mly" ( [x], Some y ) -# 19410 "src/ocaml/preprocess/parser_raw.ml" +# 19686 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19462,9 +19738,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 19468 "src/ocaml/preprocess/parser_raw.ml" +# 19744 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_label_ = _startpos__1_ in @@ -19472,7 +19748,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3056 "src/ocaml/preprocess/parser_raw.mly" +# 3207 "src/ocaml/preprocess/parser_raw.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -19486,14 +19762,14 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 19490 "src/ocaml/preprocess/parser_raw.ml" +# 19766 "src/ocaml/preprocess/parser_raw.ml" in -# 1241 "src/ocaml/preprocess/parser_raw.mly" +# 1328 "src/ocaml/preprocess/parser_raw.mly" ( let xs, y = tail in x :: xs, y ) -# 19497 "src/ocaml/preprocess/parser_raw.ml" +# 19773 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19554,9 +19830,9 @@ module Tables = struct let _v : (Ast_helper.let_bindings) = let _5 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19560 "src/ocaml/preprocess/parser_raw.ml" +# 19836 "src/ocaml/preprocess/parser_raw.ml" in let _2 = @@ -19564,23 +19840,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19570 "src/ocaml/preprocess/parser_raw.ml" +# 19846 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 19576 "src/ocaml/preprocess/parser_raw.ml" +# 19852 "src/ocaml/preprocess/parser_raw.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in -# 4102 "src/ocaml/preprocess/parser_raw.mly" +# 4315 "src/ocaml/preprocess/parser_raw.mly" ( let (ext, attr) = _2 in mklbs ext _3 (mklb ~loc:_loc__4_ true _4 (attr@_5)) ) -# 19584 "src/ocaml/preprocess/parser_raw.ml" +# 19860 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19603,9 +19879,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Ast_helper.let_bindings) = -# 4106 "src/ocaml/preprocess/parser_raw.mly" +# 4319 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19609 "src/ocaml/preprocess/parser_raw.ml" +# 19885 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19635,9 +19911,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Ast_helper.let_bindings) = -# 4107 "src/ocaml/preprocess/parser_raw.mly" +# 4320 "src/ocaml/preprocess/parser_raw.mly" ( addlb _1 _2 ) -# 19641 "src/ocaml/preprocess/parser_raw.ml" +# 19917 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19674,9 +19950,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.case) = -# 2806 "src/ocaml/preprocess/parser_raw.mly" +# 2932 "src/ocaml/preprocess/parser_raw.mly" ( Exp.case _1 (merloc _endpos__2_ _3) ) -# 19680 "src/ocaml/preprocess/parser_raw.ml" +# 19956 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19727,9 +20003,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.case) = -# 2808 "src/ocaml/preprocess/parser_raw.mly" +# 2934 "src/ocaml/preprocess/parser_raw.mly" ( Exp.case _1 ~guard:(merloc _endpos__2_ _3) (merloc _endpos__4_ _5) ) -# 19733 "src/ocaml/preprocess/parser_raw.ml" +# 20009 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19767,10 +20043,10 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.case) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2810 "src/ocaml/preprocess/parser_raw.mly" +# 2936 "src/ocaml/preprocess/parser_raw.mly" ( Exp.case _1 (merloc _endpos__2_ (Exp.unreachable ~loc:(make_loc _loc__3_) ())) ) -# 19774 "src/ocaml/preprocess/parser_raw.ml" +# 20050 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19831,9 +20107,9 @@ module Tables = struct let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 19837 "src/ocaml/preprocess/parser_raw.ml" +# 20113 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -19842,49 +20118,49 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19848 "src/ocaml/preprocess/parser_raw.ml" +# 20124 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19857 "src/ocaml/preprocess/parser_raw.ml" +# 20133 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3484 "src/ocaml/preprocess/parser_raw.mly" +# 3635 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19866 "src/ocaml/preprocess/parser_raw.ml" +# 20142 "src/ocaml/preprocess/parser_raw.ml" in let _1 = let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 19873 "src/ocaml/preprocess/parser_raw.ml" +# 20149 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 19881 "src/ocaml/preprocess/parser_raw.ml" +# 20157 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3694 "src/ocaml/preprocess/parser_raw.mly" +# 3901 "src/ocaml/preprocess/parser_raw.mly" ( let info = match rhs_info _endpos__4_ with | Some _ as info_before_semi -> info_before_semi @@ -19892,13 +20168,13 @@ module Tables = struct in let attrs = add_info_attrs info (_4 @ _6) in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 19896 "src/ocaml/preprocess/parser_raw.ml" +# 20172 "src/ocaml/preprocess/parser_raw.ml" in -# 3675 "src/ocaml/preprocess/parser_raw.mly" +# 3882 "src/ocaml/preprocess/parser_raw.mly" ( let (f, c) = tail in (head :: f, c) ) -# 19902 "src/ocaml/preprocess/parser_raw.ml" +# 20178 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19939,15 +20215,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 3705 "src/ocaml/preprocess/parser_raw.mly" +# 3912 "src/ocaml/preprocess/parser_raw.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 19945 "src/ocaml/preprocess/parser_raw.ml" +# 20221 "src/ocaml/preprocess/parser_raw.ml" in -# 3675 "src/ocaml/preprocess/parser_raw.mly" +# 3882 "src/ocaml/preprocess/parser_raw.mly" ( let (f, c) = tail in (head :: f, c) ) -# 19951 "src/ocaml/preprocess/parser_raw.ml" +# 20227 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20001,9 +20277,9 @@ module Tables = struct let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 20007 "src/ocaml/preprocess/parser_raw.ml" +# 20283 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -20012,49 +20288,49 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20018 "src/ocaml/preprocess/parser_raw.ml" +# 20294 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20027 "src/ocaml/preprocess/parser_raw.ml" +# 20303 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3484 "src/ocaml/preprocess/parser_raw.mly" +# 3635 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20036 "src/ocaml/preprocess/parser_raw.ml" +# 20312 "src/ocaml/preprocess/parser_raw.ml" in let _1 = let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20043 "src/ocaml/preprocess/parser_raw.ml" +# 20319 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 20051 "src/ocaml/preprocess/parser_raw.ml" +# 20327 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3694 "src/ocaml/preprocess/parser_raw.mly" +# 3901 "src/ocaml/preprocess/parser_raw.mly" ( let info = match rhs_info _endpos__4_ with | Some _ as info_before_semi -> info_before_semi @@ -20062,13 +20338,13 @@ module Tables = struct in let attrs = add_info_attrs info (_4 @ _6) in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 20066 "src/ocaml/preprocess/parser_raw.ml" +# 20342 "src/ocaml/preprocess/parser_raw.ml" in -# 3678 "src/ocaml/preprocess/parser_raw.mly" +# 3885 "src/ocaml/preprocess/parser_raw.mly" ( [head], Closed ) -# 20072 "src/ocaml/preprocess/parser_raw.ml" +# 20348 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20102,15 +20378,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 3705 "src/ocaml/preprocess/parser_raw.mly" +# 3912 "src/ocaml/preprocess/parser_raw.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 20108 "src/ocaml/preprocess/parser_raw.ml" +# 20384 "src/ocaml/preprocess/parser_raw.ml" in -# 3678 "src/ocaml/preprocess/parser_raw.mly" +# 3885 "src/ocaml/preprocess/parser_raw.mly" ( [head], Closed ) -# 20114 "src/ocaml/preprocess/parser_raw.ml" +# 20390 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20150,9 +20426,9 @@ module Tables = struct let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 20156 "src/ocaml/preprocess/parser_raw.ml" +# 20432 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -20161,50 +20437,50 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20167 "src/ocaml/preprocess/parser_raw.ml" +# 20443 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3484 "src/ocaml/preprocess/parser_raw.mly" +# 3635 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20176 "src/ocaml/preprocess/parser_raw.ml" +# 20452 "src/ocaml/preprocess/parser_raw.ml" in let _1 = let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20183 "src/ocaml/preprocess/parser_raw.ml" +# 20459 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 20191 "src/ocaml/preprocess/parser_raw.ml" +# 20467 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3687 "src/ocaml/preprocess/parser_raw.mly" +# 3894 "src/ocaml/preprocess/parser_raw.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _4 in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 20202 "src/ocaml/preprocess/parser_raw.ml" +# 20478 "src/ocaml/preprocess/parser_raw.ml" in -# 3681 "src/ocaml/preprocess/parser_raw.mly" +# 3888 "src/ocaml/preprocess/parser_raw.mly" ( [head], Closed ) -# 20208 "src/ocaml/preprocess/parser_raw.ml" +# 20484 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20231,15 +20507,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 3705 "src/ocaml/preprocess/parser_raw.mly" +# 3912 "src/ocaml/preprocess/parser_raw.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 20237 "src/ocaml/preprocess/parser_raw.ml" +# 20513 "src/ocaml/preprocess/parser_raw.ml" in -# 3681 "src/ocaml/preprocess/parser_raw.mly" +# 3888 "src/ocaml/preprocess/parser_raw.mly" ( [head], Closed ) -# 20243 "src/ocaml/preprocess/parser_raw.ml" +# 20519 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20262,9 +20538,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.object_field list * Asttypes.closed_flag) = -# 3683 "src/ocaml/preprocess/parser_raw.mly" +# 3890 "src/ocaml/preprocess/parser_raw.mly" ( [], Open ) -# 20268 "src/ocaml/preprocess/parser_raw.ml" +# 20544 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20309,9 +20585,9 @@ module Tables = struct let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 20315 "src/ocaml/preprocess/parser_raw.ml" +# 20591 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let private_ : (Asttypes.private_flag) = Obj.magic private_ in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -20322,41 +20598,41 @@ module Tables = struct Parsetree.attributes) = let ty = let _1 = _1_inlined2 in -# 3480 "src/ocaml/preprocess/parser_raw.mly" +# 3631 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20328 "src/ocaml/preprocess/parser_raw.ml" +# 20604 "src/ocaml/preprocess/parser_raw.ml" in let label = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20336 "src/ocaml/preprocess/parser_raw.ml" +# 20612 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 20344 "src/ocaml/preprocess/parser_raw.ml" +# 20620 "src/ocaml/preprocess/parser_raw.ml" in let attrs = -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20350 "src/ocaml/preprocess/parser_raw.ml" +# 20626 "src/ocaml/preprocess/parser_raw.ml" in let _1 = -# 3954 "src/ocaml/preprocess/parser_raw.mly" +# 4161 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 20355 "src/ocaml/preprocess/parser_raw.ml" +# 20631 "src/ocaml/preprocess/parser_raw.ml" in -# 2130 "src/ocaml/preprocess/parser_raw.mly" +# 2217 "src/ocaml/preprocess/parser_raw.mly" ( (label, private_, Cfk_virtual ty), attrs ) -# 20360 "src/ocaml/preprocess/parser_raw.ml" +# 20636 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20394,9 +20670,9 @@ module Tables = struct } = _menhir_stack in let _5 : (Parsetree.expression) = Obj.magic _5 in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 20400 "src/ocaml/preprocess/parser_raw.ml" +# 20676 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -20407,36 +20683,36 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20413 "src/ocaml/preprocess/parser_raw.ml" +# 20689 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 20421 "src/ocaml/preprocess/parser_raw.ml" +# 20697 "src/ocaml/preprocess/parser_raw.ml" in let _2 = -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20427 "src/ocaml/preprocess/parser_raw.ml" +# 20703 "src/ocaml/preprocess/parser_raw.ml" in let _1 = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 20432 "src/ocaml/preprocess/parser_raw.ml" +# 20708 "src/ocaml/preprocess/parser_raw.ml" in -# 2132 "src/ocaml/preprocess/parser_raw.mly" +# 2219 "src/ocaml/preprocess/parser_raw.mly" ( let e = _5 in let loc = Location.(e.pexp_loc.loc_start, e.pexp_loc.loc_end) in (_4, _3, Cfk_concrete (_1, ghexp ~loc (Pexp_poly (e, None)))), _2 ) -# 20440 "src/ocaml/preprocess/parser_raw.ml" +# 20716 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20480,9 +20756,9 @@ module Tables = struct } = _menhir_stack in let _5 : (Parsetree.expression) = Obj.magic _5 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 20486 "src/ocaml/preprocess/parser_raw.ml" +# 20762 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -20494,39 +20770,39 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20500 "src/ocaml/preprocess/parser_raw.ml" +# 20776 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 20508 "src/ocaml/preprocess/parser_raw.ml" +# 20784 "src/ocaml/preprocess/parser_raw.ml" in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20516 "src/ocaml/preprocess/parser_raw.ml" +# 20792 "src/ocaml/preprocess/parser_raw.ml" in let _1 = -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 20522 "src/ocaml/preprocess/parser_raw.ml" +# 20798 "src/ocaml/preprocess/parser_raw.ml" in -# 2132 "src/ocaml/preprocess/parser_raw.mly" +# 2219 "src/ocaml/preprocess/parser_raw.mly" ( let e = _5 in let loc = Location.(e.pexp_loc.loc_start, e.pexp_loc.loc_end) in (_4, _3, Cfk_concrete (_1, ghexp ~loc (Pexp_poly (e, None)))), _2 ) -# 20530 "src/ocaml/preprocess/parser_raw.ml" +# 20806 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20585,9 +20861,9 @@ module Tables = struct let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 20591 "src/ocaml/preprocess/parser_raw.ml" +# 20867 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -20598,45 +20874,45 @@ module Tables = struct Parsetree.attributes) = let _6 = let _1 = _1_inlined2 in -# 3480 "src/ocaml/preprocess/parser_raw.mly" +# 3631 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20604 "src/ocaml/preprocess/parser_raw.ml" +# 20880 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__6_ = _startpos__1_inlined2_ in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20613 "src/ocaml/preprocess/parser_raw.ml" +# 20889 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 20621 "src/ocaml/preprocess/parser_raw.ml" +# 20897 "src/ocaml/preprocess/parser_raw.ml" in let _2 = -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20627 "src/ocaml/preprocess/parser_raw.ml" +# 20903 "src/ocaml/preprocess/parser_raw.ml" in let _1 = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 20632 "src/ocaml/preprocess/parser_raw.ml" +# 20908 "src/ocaml/preprocess/parser_raw.ml" in -# 2138 "src/ocaml/preprocess/parser_raw.mly" +# 2225 "src/ocaml/preprocess/parser_raw.mly" ( let poly_exp = let loc = (_startpos__6_, _endpos__8_) in ghexp ~loc (Pexp_poly(_8, Some _6)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 20640 "src/ocaml/preprocess/parser_raw.ml" +# 20916 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20701,9 +20977,9 @@ module Tables = struct let _1_inlined3 : (Parsetree.core_type) = Obj.magic _1_inlined3 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 20707 "src/ocaml/preprocess/parser_raw.ml" +# 20983 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -20715,48 +20991,48 @@ module Tables = struct Parsetree.attributes) = let _6 = let _1 = _1_inlined3 in -# 3480 "src/ocaml/preprocess/parser_raw.mly" +# 3631 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20721 "src/ocaml/preprocess/parser_raw.ml" +# 20997 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__6_ = _startpos__1_inlined3_ in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20730 "src/ocaml/preprocess/parser_raw.ml" +# 21006 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 20738 "src/ocaml/preprocess/parser_raw.ml" +# 21014 "src/ocaml/preprocess/parser_raw.ml" in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20746 "src/ocaml/preprocess/parser_raw.ml" +# 21022 "src/ocaml/preprocess/parser_raw.ml" in let _1 = -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 20752 "src/ocaml/preprocess/parser_raw.ml" +# 21028 "src/ocaml/preprocess/parser_raw.ml" in -# 2138 "src/ocaml/preprocess/parser_raw.mly" +# 2225 "src/ocaml/preprocess/parser_raw.mly" ( let poly_exp = let loc = (_startpos__6_, _endpos__8_) in ghexp ~loc (Pexp_poly(_8, Some _6)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 20760 "src/ocaml/preprocess/parser_raw.ml" +# 21036 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20836,9 +21112,9 @@ module Tables = struct let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 20842 "src/ocaml/preprocess/parser_raw.ml" +# 21118 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -20847,38 +21123,38 @@ module Tables = struct let _endpos = _endpos__11_ in let _v : ((string Location.loc * Asttypes.private_flag * Parsetree.class_field_kind) * Parsetree.attributes) = let _7 = -# 2689 "src/ocaml/preprocess/parser_raw.mly" +# 2809 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 20853 "src/ocaml/preprocess/parser_raw.ml" +# 21129 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__7_ = _startpos_xs_ in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20861 "src/ocaml/preprocess/parser_raw.ml" +# 21137 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 20869 "src/ocaml/preprocess/parser_raw.ml" +# 21145 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__4_ = _startpos__1_inlined1_ in let _2 = -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 20876 "src/ocaml/preprocess/parser_raw.ml" +# 21152 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in let _1 = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 20882 "src/ocaml/preprocess/parser_raw.ml" +# 21158 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__11_ in @@ -20894,7 +21170,7 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2144 "src/ocaml/preprocess/parser_raw.mly" +# 2231 "src/ocaml/preprocess/parser_raw.mly" ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in let poly_exp = let exp, poly = @@ -20905,7 +21181,7 @@ module Tables = struct ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 20909 "src/ocaml/preprocess/parser_raw.ml" +# 21185 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20991,9 +21267,9 @@ module Tables = struct let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 20997 "src/ocaml/preprocess/parser_raw.ml" +# 21273 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -21003,41 +21279,41 @@ module Tables = struct let _endpos = _endpos__11_ in let _v : ((string Location.loc * Asttypes.private_flag * Parsetree.class_field_kind) * Parsetree.attributes) = let _7 = -# 2689 "src/ocaml/preprocess/parser_raw.mly" +# 2809 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 21009 "src/ocaml/preprocess/parser_raw.ml" +# 21285 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__7_ = _startpos_xs_ in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21017 "src/ocaml/preprocess/parser_raw.ml" +# 21293 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 21025 "src/ocaml/preprocess/parser_raw.ml" +# 21301 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__4_ = _startpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21034 "src/ocaml/preprocess/parser_raw.ml" +# 21310 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _1 = -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 21041 "src/ocaml/preprocess/parser_raw.ml" +# 21317 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__11_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -21052,7 +21328,7 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2144 "src/ocaml/preprocess/parser_raw.mly" +# 2231 "src/ocaml/preprocess/parser_raw.mly" ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in let poly_exp = let exp, poly = @@ -21063,7 +21339,7 @@ module Tables = struct ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 21067 "src/ocaml/preprocess/parser_raw.ml" +# 21343 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21082,17 +21358,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 21088 "src/ocaml/preprocess/parser_raw.ml" +# 21364 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3808 "src/ocaml/preprocess/parser_raw.mly" +# 4015 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 21096 "src/ocaml/preprocess/parser_raw.ml" +# 21372 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21123,9 +21399,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 21129 "src/ocaml/preprocess/parser_raw.ml" +# 21405 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -21133,9 +21409,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 3809 "src/ocaml/preprocess/parser_raw.mly" +# 4016 "src/ocaml/preprocess/parser_raw.mly" ( Ldot(_1,_3) ) -# 21139 "src/ocaml/preprocess/parser_raw.ml" +# 21415 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21154,17 +21430,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) -# 21160 "src/ocaml/preprocess/parser_raw.ml" +# 21436 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3808 "src/ocaml/preprocess/parser_raw.mly" +# 4015 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 21168 "src/ocaml/preprocess/parser_raw.ml" +# 21444 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21195,9 +21471,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) -# 21201 "src/ocaml/preprocess/parser_raw.ml" +# 21477 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -21205,9 +21481,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 3809 "src/ocaml/preprocess/parser_raw.mly" +# 4016 "src/ocaml/preprocess/parser_raw.mly" ( Ldot(_1,_3) ) -# 21211 "src/ocaml/preprocess/parser_raw.ml" +# 21487 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21230,14 +21506,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = let _1 = -# 3848 "src/ocaml/preprocess/parser_raw.mly" +# 4055 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21236 "src/ocaml/preprocess/parser_raw.ml" +# 21512 "src/ocaml/preprocess/parser_raw.ml" in -# 3808 "src/ocaml/preprocess/parser_raw.mly" +# 4015 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 21241 "src/ocaml/preprocess/parser_raw.ml" +# 21517 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21275,20 +21551,20 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Longident.t) = let _1 = let _1 = -# 3788 "src/ocaml/preprocess/parser_raw.mly" +# 3995 "src/ocaml/preprocess/parser_raw.mly" ( "::" ) -# 21281 "src/ocaml/preprocess/parser_raw.ml" +# 21557 "src/ocaml/preprocess/parser_raw.ml" in -# 3848 "src/ocaml/preprocess/parser_raw.mly" +# 4055 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21286 "src/ocaml/preprocess/parser_raw.ml" +# 21562 "src/ocaml/preprocess/parser_raw.ml" in -# 3808 "src/ocaml/preprocess/parser_raw.mly" +# 4015 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 21292 "src/ocaml/preprocess/parser_raw.ml" +# 21568 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21311,14 +21587,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = let _1 = -# 3848 "src/ocaml/preprocess/parser_raw.mly" +# 4055 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21317 "src/ocaml/preprocess/parser_raw.ml" +# 21593 "src/ocaml/preprocess/parser_raw.ml" in -# 3808 "src/ocaml/preprocess/parser_raw.mly" +# 4015 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 21322 "src/ocaml/preprocess/parser_raw.ml" +# 21598 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21357,15 +21633,15 @@ module Tables = struct let _v : (Longident.t) = let _3 = let _1 = _1_inlined1 in -# 3848 "src/ocaml/preprocess/parser_raw.mly" +# 4055 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21363 "src/ocaml/preprocess/parser_raw.ml" +# 21639 "src/ocaml/preprocess/parser_raw.ml" in -# 3809 "src/ocaml/preprocess/parser_raw.mly" +# 4016 "src/ocaml/preprocess/parser_raw.mly" ( Ldot(_1,_3) ) -# 21369 "src/ocaml/preprocess/parser_raw.ml" +# 21645 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21418,20 +21694,20 @@ module Tables = struct let _v : (Longident.t) = let _3 = let (_2, _1) = (_2_inlined1, _1_inlined1) in let _1 = -# 3788 "src/ocaml/preprocess/parser_raw.mly" +# 3995 "src/ocaml/preprocess/parser_raw.mly" ( "::" ) -# 21424 "src/ocaml/preprocess/parser_raw.ml" +# 21700 "src/ocaml/preprocess/parser_raw.ml" in -# 3848 "src/ocaml/preprocess/parser_raw.mly" +# 4055 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21429 "src/ocaml/preprocess/parser_raw.ml" +# 21705 "src/ocaml/preprocess/parser_raw.ml" in -# 3809 "src/ocaml/preprocess/parser_raw.mly" +# 4016 "src/ocaml/preprocess/parser_raw.mly" ( Ldot(_1,_3) ) -# 21435 "src/ocaml/preprocess/parser_raw.ml" +# 21711 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21470,15 +21746,15 @@ module Tables = struct let _v : (Longident.t) = let _3 = let _1 = _1_inlined1 in -# 3848 "src/ocaml/preprocess/parser_raw.mly" +# 4055 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21476 "src/ocaml/preprocess/parser_raw.ml" +# 21752 "src/ocaml/preprocess/parser_raw.ml" in -# 3809 "src/ocaml/preprocess/parser_raw.mly" +# 4016 "src/ocaml/preprocess/parser_raw.mly" ( Ldot(_1,_3) ) -# 21482 "src/ocaml/preprocess/parser_raw.ml" +# 21758 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21501,9 +21777,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3808 "src/ocaml/preprocess/parser_raw.mly" +# 4015 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 21507 "src/ocaml/preprocess/parser_raw.ml" +# 21783 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21540,9 +21816,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 3809 "src/ocaml/preprocess/parser_raw.mly" +# 4016 "src/ocaml/preprocess/parser_raw.mly" ( Ldot(_1,_3) ) -# 21546 "src/ocaml/preprocess/parser_raw.ml" +# 21822 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21561,17 +21837,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 21567 "src/ocaml/preprocess/parser_raw.ml" +# 21843 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3808 "src/ocaml/preprocess/parser_raw.mly" +# 4015 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 21575 "src/ocaml/preprocess/parser_raw.ml" +# 21851 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21602,9 +21878,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 21608 "src/ocaml/preprocess/parser_raw.ml" +# 21884 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -21612,9 +21888,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 3809 "src/ocaml/preprocess/parser_raw.mly" +# 4016 "src/ocaml/preprocess/parser_raw.mly" ( Ldot(_1,_3) ) -# 21618 "src/ocaml/preprocess/parser_raw.ml" +# 21894 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21633,17 +21909,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) -# 21639 "src/ocaml/preprocess/parser_raw.ml" +# 21915 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3808 "src/ocaml/preprocess/parser_raw.mly" +# 4015 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 21647 "src/ocaml/preprocess/parser_raw.ml" +# 21923 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21674,9 +21950,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) -# 21680 "src/ocaml/preprocess/parser_raw.ml" +# 21956 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -21684,9 +21960,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 3809 "src/ocaml/preprocess/parser_raw.mly" +# 4016 "src/ocaml/preprocess/parser_raw.mly" ( Ldot(_1,_3) ) -# 21690 "src/ocaml/preprocess/parser_raw.ml" +# 21966 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21709,9 +21985,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3808 "src/ocaml/preprocess/parser_raw.mly" +# 4015 "src/ocaml/preprocess/parser_raw.mly" ( Lident _1 ) -# 21715 "src/ocaml/preprocess/parser_raw.ml" +# 21991 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21748,9 +22024,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 3809 "src/ocaml/preprocess/parser_raw.mly" +# 4016 "src/ocaml/preprocess/parser_raw.mly" ( Ldot(_1,_3) ) -# 21754 "src/ocaml/preprocess/parser_raw.ml" +# 22030 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21773,9 +22049,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3824 "src/ocaml/preprocess/parser_raw.mly" +# 4031 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21779 "src/ocaml/preprocess/parser_raw.ml" +# 22055 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21822,9 +22098,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3826 "src/ocaml/preprocess/parser_raw.mly" +# 4033 "src/ocaml/preprocess/parser_raw.mly" ( lapply ~loc:_sloc _1 _3 ) -# 21828 "src/ocaml/preprocess/parser_raw.ml" +# 22104 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21847,9 +22123,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3821 "src/ocaml/preprocess/parser_raw.mly" +# 4028 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21853 "src/ocaml/preprocess/parser_raw.ml" +# 22129 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21879,9 +22155,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = -# 1587 "src/ocaml/preprocess/parser_raw.mly" +# 1674 "src/ocaml/preprocess/parser_raw.mly" ( me ) -# 21885 "src/ocaml/preprocess/parser_raw.ml" +# 22161 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21926,24 +22202,24 @@ module Tables = struct let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1594 "src/ocaml/preprocess/parser_raw.mly" +# 1681 "src/ocaml/preprocess/parser_raw.mly" ( Pmod_constraint(me, mty) ) -# 21932 "src/ocaml/preprocess/parser_raw.ml" +# 22208 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_me_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "src/ocaml/preprocess/parser_raw.mly" +# 1105 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc _1 ) -# 21941 "src/ocaml/preprocess/parser_raw.ml" +# 22217 "src/ocaml/preprocess/parser_raw.ml" in -# 1598 "src/ocaml/preprocess/parser_raw.mly" +# 1685 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21947 "src/ocaml/preprocess/parser_raw.ml" +# 22223 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21974,25 +22250,25 @@ module Tables = struct let _endpos = _endpos_body_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1596 "src/ocaml/preprocess/parser_raw.mly" +# 1683 "src/ocaml/preprocess/parser_raw.mly" ( let (_, arg) = arg_and_pos in Pmod_functor(arg, body) ) -# 21981 "src/ocaml/preprocess/parser_raw.ml" +# 22257 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_body_, _startpos_arg_and_pos_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "src/ocaml/preprocess/parser_raw.mly" +# 1105 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc _1 ) -# 21990 "src/ocaml/preprocess/parser_raw.ml" +# 22266 "src/ocaml/preprocess/parser_raw.ml" in -# 1598 "src/ocaml/preprocess/parser_raw.mly" +# 1685 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 21996 "src/ocaml/preprocess/parser_raw.ml" +# 22272 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22022,9 +22298,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_mty_ in let _v : (Parsetree.module_type) = -# 1847 "src/ocaml/preprocess/parser_raw.mly" +# 1934 "src/ocaml/preprocess/parser_raw.mly" ( mty ) -# 22028 "src/ocaml/preprocess/parser_raw.ml" +# 22304 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22055,25 +22331,25 @@ module Tables = struct let _endpos = _endpos_body_ in let _v : (Parsetree.module_type) = let _1 = let _1 = -# 1854 "src/ocaml/preprocess/parser_raw.mly" +# 1941 "src/ocaml/preprocess/parser_raw.mly" ( let (_, arg) = arg_and_pos in Pmty_functor(arg, body) ) -# 22062 "src/ocaml/preprocess/parser_raw.ml" +# 22338 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_body_, _startpos_arg_and_pos_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1041 "src/ocaml/preprocess/parser_raw.mly" +# 1107 "src/ocaml/preprocess/parser_raw.mly" ( mkmty ~loc:_sloc _1 ) -# 22071 "src/ocaml/preprocess/parser_raw.ml" +# 22347 "src/ocaml/preprocess/parser_raw.ml" in -# 1857 "src/ocaml/preprocess/parser_raw.mly" +# 1944 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22077 "src/ocaml/preprocess/parser_raw.ml" +# 22353 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22119,18 +22395,18 @@ module Tables = struct let _v : (Parsetree.module_expr) = let attrs = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22125 "src/ocaml/preprocess/parser_raw.ml" +# 22401 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1411 "src/ocaml/preprocess/parser_raw.mly" +# 1498 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_structure s) ) -# 22134 "src/ocaml/preprocess/parser_raw.ml" +# 22410 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22183,22 +22459,22 @@ module Tables = struct let _v : (Parsetree.module_expr) = let attrs = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22189 "src/ocaml/preprocess/parser_raw.ml" +# 22465 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_me_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1421 "src/ocaml/preprocess/parser_raw.mly" +# 1508 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mod_attrs ~loc:_sloc attrs ( List.fold_left (fun acc (startpos, arg) -> mkmod ~loc:(startpos, _endpos) (Pmod_functor (arg, acc)) ) me args ) ) -# 22202 "src/ocaml/preprocess/parser_raw.ml" +# 22478 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22221,9 +22497,9 @@ module Tables = struct let _startpos = _startpos_me_ in let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = -# 1427 "src/ocaml/preprocess/parser_raw.mly" +# 1514 "src/ocaml/preprocess/parser_raw.mly" ( me ) -# 22227 "src/ocaml/preprocess/parser_raw.ml" +# 22503 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22253,9 +22529,9 @@ module Tables = struct let _startpos = _startpos_me_ in let _endpos = _endpos_attr_ in let _v : (Parsetree.module_expr) = -# 1429 "src/ocaml/preprocess/parser_raw.mly" +# 1516 "src/ocaml/preprocess/parser_raw.mly" ( Mod.attr me attr ) -# 22259 "src/ocaml/preprocess/parser_raw.ml" +# 22535 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22284,30 +22560,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 22290 "src/ocaml/preprocess/parser_raw.ml" +# 22566 "src/ocaml/preprocess/parser_raw.ml" in -# 1433 "src/ocaml/preprocess/parser_raw.mly" +# 1520 "src/ocaml/preprocess/parser_raw.mly" ( Pmod_ident x ) -# 22296 "src/ocaml/preprocess/parser_raw.ml" +# 22572 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "src/ocaml/preprocess/parser_raw.mly" +# 1105 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc _1 ) -# 22305 "src/ocaml/preprocess/parser_raw.ml" +# 22581 "src/ocaml/preprocess/parser_raw.ml" in -# 1448 "src/ocaml/preprocess/parser_raw.mly" +# 1535 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22311 "src/ocaml/preprocess/parser_raw.ml" +# 22587 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22338,24 +22614,24 @@ module Tables = struct let _endpos = _endpos_me2_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1436 "src/ocaml/preprocess/parser_raw.mly" +# 1523 "src/ocaml/preprocess/parser_raw.mly" ( Pmod_apply(me1, me2) ) -# 22344 "src/ocaml/preprocess/parser_raw.ml" +# 22620 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_me2_, _startpos_me1_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "src/ocaml/preprocess/parser_raw.mly" +# 1105 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc _1 ) -# 22353 "src/ocaml/preprocess/parser_raw.ml" +# 22629 "src/ocaml/preprocess/parser_raw.ml" in -# 1448 "src/ocaml/preprocess/parser_raw.mly" +# 1535 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22359 "src/ocaml/preprocess/parser_raw.ml" +# 22635 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22393,24 +22669,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1439 "src/ocaml/preprocess/parser_raw.mly" +# 1526 "src/ocaml/preprocess/parser_raw.mly" ( Pmod_apply_unit me ) -# 22399 "src/ocaml/preprocess/parser_raw.ml" +# 22675 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_me_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "src/ocaml/preprocess/parser_raw.mly" +# 1105 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc _1 ) -# 22408 "src/ocaml/preprocess/parser_raw.ml" +# 22684 "src/ocaml/preprocess/parser_raw.ml" in -# 1448 "src/ocaml/preprocess/parser_raw.mly" +# 1535 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22414 "src/ocaml/preprocess/parser_raw.ml" +# 22690 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22434,24 +22710,24 @@ module Tables = struct let _endpos = _endpos_ex_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1442 "src/ocaml/preprocess/parser_raw.mly" +# 1529 "src/ocaml/preprocess/parser_raw.mly" ( Pmod_extension ex ) -# 22440 "src/ocaml/preprocess/parser_raw.ml" +# 22716 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_ex_, _startpos_ex_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "src/ocaml/preprocess/parser_raw.mly" +# 1105 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc _1 ) -# 22449 "src/ocaml/preprocess/parser_raw.ml" +# 22725 "src/ocaml/preprocess/parser_raw.ml" in -# 1448 "src/ocaml/preprocess/parser_raw.mly" +# 1535 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22455 "src/ocaml/preprocess/parser_raw.ml" +# 22731 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22479,25 +22755,25 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 1445 "src/ocaml/preprocess/parser_raw.mly" +# 1532 "src/ocaml/preprocess/parser_raw.mly" ( let id = mkrhs Ast_helper.hole_txt _loc in Pmod_extension (id, PStr []) ) -# 22486 "src/ocaml/preprocess/parser_raw.ml" +# 22762 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1039 "src/ocaml/preprocess/parser_raw.mly" +# 1105 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc _1 ) -# 22495 "src/ocaml/preprocess/parser_raw.ml" +# 22771 "src/ocaml/preprocess/parser_raw.ml" in -# 1448 "src/ocaml/preprocess/parser_raw.mly" +# 1535 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22501 "src/ocaml/preprocess/parser_raw.ml" +# 22777 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22516,17 +22792,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let x : ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) -# 22522 "src/ocaml/preprocess/parser_raw.ml" +# 22798 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (string option) = -# 1394 "src/ocaml/preprocess/parser_raw.mly" +# 1481 "src/ocaml/preprocess/parser_raw.mly" ( Some x ) -# 22530 "src/ocaml/preprocess/parser_raw.ml" +# 22806 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22549,9 +22825,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string option) = -# 1397 "src/ocaml/preprocess/parser_raw.mly" +# 1484 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 22555 "src/ocaml/preprocess/parser_raw.ml" +# 22831 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22609,9 +22885,9 @@ module Tables = struct let _1_inlined3 : (Longident.t) = Obj.magic _1_inlined3 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) -# 22615 "src/ocaml/preprocess/parser_raw.ml" +# 22891 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let ext : (string Location.loc option) = Obj.magic ext in @@ -22622,9 +22898,9 @@ module Tables = struct let _v : (Parsetree.module_substitution * string Location.loc option) = let attrs2 = let _1 = _1_inlined4 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22628 "src/ocaml/preprocess/parser_raw.ml" +# 22904 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -22634,9 +22910,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 22640 "src/ocaml/preprocess/parser_raw.ml" +# 22916 "src/ocaml/preprocess/parser_raw.ml" in let uid = @@ -22645,31 +22921,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 22651 "src/ocaml/preprocess/parser_raw.ml" +# 22927 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22659 "src/ocaml/preprocess/parser_raw.ml" +# 22935 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1887 "src/ocaml/preprocess/parser_raw.mly" +# 1974 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Ms.mk uid body ~attrs ~loc ~docs, ext ) -# 22673 "src/ocaml/preprocess/parser_raw.ml" +# 22949 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22715,18 +22991,18 @@ module Tables = struct let _v : (Parsetree.module_type) = let attrs = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22721 "src/ocaml/preprocess/parser_raw.ml" +# 22997 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1723 "src/ocaml/preprocess/parser_raw.mly" +# 1810 "src/ocaml/preprocess/parser_raw.mly" ( mkmty ~loc:_sloc ~attrs (Pmty_signature s) ) -# 22730 "src/ocaml/preprocess/parser_raw.ml" +# 23006 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22779,22 +23055,22 @@ module Tables = struct let _v : (Parsetree.module_type) = let attrs = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22785 "src/ocaml/preprocess/parser_raw.ml" +# 23061 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_mty_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1735 "src/ocaml/preprocess/parser_raw.mly" +# 1822 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mty_attrs ~loc:_sloc attrs ( List.fold_left (fun acc (startpos, arg) -> mkmty ~loc:(startpos, _endpos) (Pmty_functor (arg, acc)) ) mty args ) ) -# 22798 "src/ocaml/preprocess/parser_raw.ml" +# 23074 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22847,18 +23123,18 @@ module Tables = struct let _v : (Parsetree.module_type) = let _4 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22853 "src/ocaml/preprocess/parser_raw.ml" +# 23129 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1741 "src/ocaml/preprocess/parser_raw.mly" +# 1828 "src/ocaml/preprocess/parser_raw.mly" ( mkmty ~loc:_sloc ~attrs:_4 (Pmty_typeof _5) ) -# 22862 "src/ocaml/preprocess/parser_raw.ml" +# 23138 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22895,9 +23171,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.module_type) = -# 1743 "src/ocaml/preprocess/parser_raw.mly" +# 1830 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 22901 "src/ocaml/preprocess/parser_raw.ml" +# 23177 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22927,9 +23203,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_type) = -# 1749 "src/ocaml/preprocess/parser_raw.mly" +# 1836 "src/ocaml/preprocess/parser_raw.mly" ( Mty.attr _1 _2 ) -# 22933 "src/ocaml/preprocess/parser_raw.ml" +# 23209 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22958,30 +23234,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 22964 "src/ocaml/preprocess/parser_raw.ml" +# 23240 "src/ocaml/preprocess/parser_raw.ml" in -# 1752 "src/ocaml/preprocess/parser_raw.mly" +# 1839 "src/ocaml/preprocess/parser_raw.mly" ( Pmty_ident _1 ) -# 22970 "src/ocaml/preprocess/parser_raw.ml" +# 23246 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1041 "src/ocaml/preprocess/parser_raw.mly" +# 1107 "src/ocaml/preprocess/parser_raw.mly" ( mkmty ~loc:_sloc _1 ) -# 22979 "src/ocaml/preprocess/parser_raw.ml" +# 23255 "src/ocaml/preprocess/parser_raw.ml" in -# 1765 "src/ocaml/preprocess/parser_raw.mly" +# 1852 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 22985 "src/ocaml/preprocess/parser_raw.ml" +# 23261 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23026,24 +23302,24 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : (Parsetree.module_type) = let _1 = let _1 = -# 1754 "src/ocaml/preprocess/parser_raw.mly" +# 1841 "src/ocaml/preprocess/parser_raw.mly" ( Pmty_functor(Unit, _4) ) -# 23032 "src/ocaml/preprocess/parser_raw.ml" +# 23308 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__4_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1041 "src/ocaml/preprocess/parser_raw.mly" +# 1107 "src/ocaml/preprocess/parser_raw.mly" ( mkmty ~loc:_sloc _1 ) -# 23041 "src/ocaml/preprocess/parser_raw.ml" +# 23317 "src/ocaml/preprocess/parser_raw.ml" in -# 1765 "src/ocaml/preprocess/parser_raw.mly" +# 1852 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23047 "src/ocaml/preprocess/parser_raw.ml" +# 23323 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23081,24 +23357,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.module_type) = let _1 = let _1 = -# 1757 "src/ocaml/preprocess/parser_raw.mly" +# 1844 "src/ocaml/preprocess/parser_raw.mly" ( Pmty_functor(Named (mknoloc None, _1), _3) ) -# 23087 "src/ocaml/preprocess/parser_raw.ml" +# 23363 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1041 "src/ocaml/preprocess/parser_raw.mly" +# 1107 "src/ocaml/preprocess/parser_raw.mly" ( mkmty ~loc:_sloc _1 ) -# 23096 "src/ocaml/preprocess/parser_raw.ml" +# 23372 "src/ocaml/preprocess/parser_raw.ml" in -# 1765 "src/ocaml/preprocess/parser_raw.mly" +# 1852 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23102 "src/ocaml/preprocess/parser_raw.ml" +# 23378 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23140,18 +23416,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 23144 "src/ocaml/preprocess/parser_raw.ml" +# 23420 "src/ocaml/preprocess/parser_raw.ml" in -# 1130 "src/ocaml/preprocess/parser_raw.mly" +# 1217 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 23149 "src/ocaml/preprocess/parser_raw.ml" +# 23425 "src/ocaml/preprocess/parser_raw.ml" in -# 1759 "src/ocaml/preprocess/parser_raw.mly" +# 1846 "src/ocaml/preprocess/parser_raw.mly" ( Pmty_with(_1, _3) ) -# 23155 "src/ocaml/preprocess/parser_raw.ml" +# 23431 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_xs_ in @@ -23159,15 +23435,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1041 "src/ocaml/preprocess/parser_raw.mly" +# 1107 "src/ocaml/preprocess/parser_raw.mly" ( mkmty ~loc:_sloc _1 ) -# 23165 "src/ocaml/preprocess/parser_raw.ml" +# 23441 "src/ocaml/preprocess/parser_raw.ml" in -# 1765 "src/ocaml/preprocess/parser_raw.mly" +# 1852 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23171 "src/ocaml/preprocess/parser_raw.ml" +# 23447 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23191,23 +23467,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.module_type) = let _1 = let _1 = -# 1763 "src/ocaml/preprocess/parser_raw.mly" +# 1850 "src/ocaml/preprocess/parser_raw.mly" ( Pmty_extension _1 ) -# 23197 "src/ocaml/preprocess/parser_raw.ml" +# 23473 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1041 "src/ocaml/preprocess/parser_raw.mly" +# 1107 "src/ocaml/preprocess/parser_raw.mly" ( mkmty ~loc:_sloc _1 ) -# 23205 "src/ocaml/preprocess/parser_raw.ml" +# 23481 "src/ocaml/preprocess/parser_raw.ml" in -# 1765 "src/ocaml/preprocess/parser_raw.mly" +# 1852 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23211 "src/ocaml/preprocess/parser_raw.ml" +# 23487 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23274,9 +23550,9 @@ module Tables = struct let _v : (Parsetree.module_type_declaration * string Location.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23280 "src/ocaml/preprocess/parser_raw.ml" +# 23556 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -23286,31 +23562,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 23292 "src/ocaml/preprocess/parser_raw.ml" +# 23568 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23300 "src/ocaml/preprocess/parser_raw.ml" +# 23576 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1669 "src/ocaml/preprocess/parser_raw.mly" +# 1756 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Mtd.mk id ?typ ~attrs ~loc ~docs, ext ) -# 23314 "src/ocaml/preprocess/parser_raw.ml" +# 23590 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23384,9 +23660,9 @@ module Tables = struct let _v : (Parsetree.module_type_declaration * string Location.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23390 "src/ocaml/preprocess/parser_raw.ml" +# 23666 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -23396,31 +23672,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 23402 "src/ocaml/preprocess/parser_raw.ml" +# 23678 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23410 "src/ocaml/preprocess/parser_raw.ml" +# 23686 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1945 "src/ocaml/preprocess/parser_raw.mly" +# 2032 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Mtd.mk id ~typ ~attrs ~loc ~docs, ext ) -# 23424 "src/ocaml/preprocess/parser_raw.ml" +# 23700 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23443,9 +23719,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3833 "src/ocaml/preprocess/parser_raw.mly" +# 4040 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23449 "src/ocaml/preprocess/parser_raw.ml" +# 23725 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23461,9 +23737,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.mutable_flag) = -# 3914 "src/ocaml/preprocess/parser_raw.mly" +# 4121 "src/ocaml/preprocess/parser_raw.mly" ( Immutable ) -# 23467 "src/ocaml/preprocess/parser_raw.ml" +# 23743 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23486,9 +23762,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag) = -# 3915 "src/ocaml/preprocess/parser_raw.mly" +# 4122 "src/ocaml/preprocess/parser_raw.mly" ( Mutable ) -# 23492 "src/ocaml/preprocess/parser_raw.ml" +# 23768 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23504,9 +23780,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 3923 "src/ocaml/preprocess/parser_raw.mly" +# 4130 "src/ocaml/preprocess/parser_raw.mly" ( Immutable, Concrete ) -# 23510 "src/ocaml/preprocess/parser_raw.ml" +# 23786 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23529,9 +23805,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 3925 "src/ocaml/preprocess/parser_raw.mly" +# 4132 "src/ocaml/preprocess/parser_raw.mly" ( Mutable, Concrete ) -# 23535 "src/ocaml/preprocess/parser_raw.ml" +# 23811 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23554,9 +23830,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 3927 "src/ocaml/preprocess/parser_raw.mly" +# 4134 "src/ocaml/preprocess/parser_raw.mly" ( Immutable, Virtual ) -# 23560 "src/ocaml/preprocess/parser_raw.ml" +# 23836 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23586,9 +23862,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 3930 "src/ocaml/preprocess/parser_raw.mly" +# 4137 "src/ocaml/preprocess/parser_raw.mly" ( Mutable, Virtual ) -# 23592 "src/ocaml/preprocess/parser_raw.ml" +# 23868 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23618,9 +23894,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 3930 "src/ocaml/preprocess/parser_raw.mly" +# 4137 "src/ocaml/preprocess/parser_raw.mly" ( Mutable, Virtual ) -# 23624 "src/ocaml/preprocess/parser_raw.ml" +# 23900 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23650,9 +23926,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string) = -# 3885 "src/ocaml/preprocess/parser_raw.mly" +# 4092 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 23656 "src/ocaml/preprocess/parser_raw.ml" +# 23932 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23671,9 +23947,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 23677 "src/ocaml/preprocess/parser_raw.ml" +# 23953 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -23683,15 +23959,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 23689 "src/ocaml/preprocess/parser_raw.ml" +# 23965 "src/ocaml/preprocess/parser_raw.ml" in # 221 "" ( [ x ] ) -# 23695 "src/ocaml/preprocess/parser_raw.ml" +# 23971 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23717,9 +23993,9 @@ module Tables = struct } = _menhir_stack in let xs : (string Location.loc list) = Obj.magic xs in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 23723 "src/ocaml/preprocess/parser_raw.ml" +# 23999 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -23729,15 +24005,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 23735 "src/ocaml/preprocess/parser_raw.ml" +# 24011 "src/ocaml/preprocess/parser_raw.ml" in # 223 "" ( x :: xs ) -# 23741 "src/ocaml/preprocess/parser_raw.ml" +# 24017 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23756,22 +24032,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let s : ( -# 837 "src/ocaml/preprocess/parser_raw.mly" +# 903 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string option) -# 23762 "src/ocaml/preprocess/parser_raw.ml" +# 24038 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic s in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : (string list) = let x = -# 3881 "src/ocaml/preprocess/parser_raw.mly" +# 4088 "src/ocaml/preprocess/parser_raw.mly" ( let body, _, _ = s in body ) -# 23770 "src/ocaml/preprocess/parser_raw.ml" +# 24046 "src/ocaml/preprocess/parser_raw.ml" in # 221 "" ( [ x ] ) -# 23775 "src/ocaml/preprocess/parser_raw.ml" +# 24051 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23797,22 +24073,22 @@ module Tables = struct } = _menhir_stack in let xs : (string list) = Obj.magic xs in let s : ( -# 837 "src/ocaml/preprocess/parser_raw.mly" +# 903 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string option) -# 23803 "src/ocaml/preprocess/parser_raw.ml" +# 24079 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic s in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_s_ in let _endpos = _endpos_xs_ in let _v : (string list) = let x = -# 3881 "src/ocaml/preprocess/parser_raw.mly" +# 4088 "src/ocaml/preprocess/parser_raw.mly" ( let body, _, _ = s in body ) -# 23811 "src/ocaml/preprocess/parser_raw.ml" +# 24087 "src/ocaml/preprocess/parser_raw.ml" in # 223 "" ( x :: xs ) -# 23816 "src/ocaml/preprocess/parser_raw.ml" +# 24092 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23835,14 +24111,14 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3910 "src/ocaml/preprocess/parser_raw.mly" +# 4117 "src/ocaml/preprocess/parser_raw.mly" ( Public ) -# 23841 "src/ocaml/preprocess/parser_raw.ml" +# 24117 "src/ocaml/preprocess/parser_raw.ml" in -# 3190 "src/ocaml/preprocess/parser_raw.mly" +# 3341 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_abstract, priv, Some ty) ) -# 23846 "src/ocaml/preprocess/parser_raw.ml" +# 24122 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23872,14 +24148,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3911 "src/ocaml/preprocess/parser_raw.mly" +# 4118 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 23878 "src/ocaml/preprocess/parser_raw.ml" +# 24154 "src/ocaml/preprocess/parser_raw.ml" in -# 3190 "src/ocaml/preprocess/parser_raw.mly" +# 3341 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_abstract, priv, Some ty) ) -# 23883 "src/ocaml/preprocess/parser_raw.ml" +# 24159 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23902,26 +24178,26 @@ module Tables = struct let _startpos = _startpos_cs_ in let _endpos = _endpos_cs_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3910 "src/ocaml/preprocess/parser_raw.mly" +# 4117 "src/ocaml/preprocess/parser_raw.mly" ( Public ) -# 23908 "src/ocaml/preprocess/parser_raw.ml" +# 24184 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = # 124 "" ( None ) -# 23914 "src/ocaml/preprocess/parser_raw.ml" +# 24190 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23919 "src/ocaml/preprocess/parser_raw.ml" +# 24195 "src/ocaml/preprocess/parser_raw.ml" in -# 3194 "src/ocaml/preprocess/parser_raw.mly" +# 3345 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_variant cs, priv, oty) ) -# 23925 "src/ocaml/preprocess/parser_raw.ml" +# 24201 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23951,26 +24227,26 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_cs_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3911 "src/ocaml/preprocess/parser_raw.mly" +# 4118 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 23957 "src/ocaml/preprocess/parser_raw.ml" +# 24233 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = # 124 "" ( None ) -# 23963 "src/ocaml/preprocess/parser_raw.ml" +# 24239 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 23968 "src/ocaml/preprocess/parser_raw.ml" +# 24244 "src/ocaml/preprocess/parser_raw.ml" in -# 3194 "src/ocaml/preprocess/parser_raw.mly" +# 3345 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_variant cs, priv, oty) ) -# 23974 "src/ocaml/preprocess/parser_raw.ml" +# 24250 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24007,33 +24283,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_cs_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3910 "src/ocaml/preprocess/parser_raw.mly" +# 4117 "src/ocaml/preprocess/parser_raw.mly" ( Public ) -# 24013 "src/ocaml/preprocess/parser_raw.ml" +# 24289 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 24020 "src/ocaml/preprocess/parser_raw.ml" +# 24296 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 24025 "src/ocaml/preprocess/parser_raw.ml" +# 24301 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24031 "src/ocaml/preprocess/parser_raw.ml" +# 24307 "src/ocaml/preprocess/parser_raw.ml" in -# 3194 "src/ocaml/preprocess/parser_raw.mly" +# 3345 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_variant cs, priv, oty) ) -# 24037 "src/ocaml/preprocess/parser_raw.ml" +# 24313 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24077,33 +24353,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_cs_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3911 "src/ocaml/preprocess/parser_raw.mly" +# 4118 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 24083 "src/ocaml/preprocess/parser_raw.ml" +# 24359 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 24090 "src/ocaml/preprocess/parser_raw.ml" +# 24366 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 24095 "src/ocaml/preprocess/parser_raw.ml" +# 24371 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24101 "src/ocaml/preprocess/parser_raw.ml" +# 24377 "src/ocaml/preprocess/parser_raw.ml" in -# 3194 "src/ocaml/preprocess/parser_raw.mly" +# 3345 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_variant cs, priv, oty) ) -# 24107 "src/ocaml/preprocess/parser_raw.ml" +# 24383 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24126,26 +24402,26 @@ module Tables = struct let _startpos = _startpos__3_ in let _endpos = _endpos__3_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3910 "src/ocaml/preprocess/parser_raw.mly" +# 4117 "src/ocaml/preprocess/parser_raw.mly" ( Public ) -# 24132 "src/ocaml/preprocess/parser_raw.ml" +# 24408 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = # 124 "" ( None ) -# 24138 "src/ocaml/preprocess/parser_raw.ml" +# 24414 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24143 "src/ocaml/preprocess/parser_raw.ml" +# 24419 "src/ocaml/preprocess/parser_raw.ml" in -# 3198 "src/ocaml/preprocess/parser_raw.mly" +# 3349 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_open, priv, oty) ) -# 24149 "src/ocaml/preprocess/parser_raw.ml" +# 24425 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24175,26 +24451,26 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3911 "src/ocaml/preprocess/parser_raw.mly" +# 4118 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 24181 "src/ocaml/preprocess/parser_raw.ml" +# 24457 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = # 124 "" ( None ) -# 24187 "src/ocaml/preprocess/parser_raw.ml" +# 24463 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24192 "src/ocaml/preprocess/parser_raw.ml" +# 24468 "src/ocaml/preprocess/parser_raw.ml" in -# 3198 "src/ocaml/preprocess/parser_raw.mly" +# 3349 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_open, priv, oty) ) -# 24198 "src/ocaml/preprocess/parser_raw.ml" +# 24474 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24231,33 +24507,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos__3_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3910 "src/ocaml/preprocess/parser_raw.mly" +# 4117 "src/ocaml/preprocess/parser_raw.mly" ( Public ) -# 24237 "src/ocaml/preprocess/parser_raw.ml" +# 24513 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 24244 "src/ocaml/preprocess/parser_raw.ml" +# 24520 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 24249 "src/ocaml/preprocess/parser_raw.ml" +# 24525 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24255 "src/ocaml/preprocess/parser_raw.ml" +# 24531 "src/ocaml/preprocess/parser_raw.ml" in -# 3198 "src/ocaml/preprocess/parser_raw.mly" +# 3349 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_open, priv, oty) ) -# 24261 "src/ocaml/preprocess/parser_raw.ml" +# 24537 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24301,33 +24577,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos__3_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3911 "src/ocaml/preprocess/parser_raw.mly" +# 4118 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 24307 "src/ocaml/preprocess/parser_raw.ml" +# 24583 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 24314 "src/ocaml/preprocess/parser_raw.ml" +# 24590 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 24319 "src/ocaml/preprocess/parser_raw.ml" +# 24595 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24325 "src/ocaml/preprocess/parser_raw.ml" +# 24601 "src/ocaml/preprocess/parser_raw.ml" in -# 3198 "src/ocaml/preprocess/parser_raw.mly" +# 3349 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_open, priv, oty) ) -# 24331 "src/ocaml/preprocess/parser_raw.ml" +# 24607 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24364,26 +24640,26 @@ module Tables = struct let _startpos = _startpos__3_ in let _endpos = _endpos__5_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3910 "src/ocaml/preprocess/parser_raw.mly" +# 4117 "src/ocaml/preprocess/parser_raw.mly" ( Public ) -# 24370 "src/ocaml/preprocess/parser_raw.ml" +# 24646 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = # 124 "" ( None ) -# 24376 "src/ocaml/preprocess/parser_raw.ml" +# 24652 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24381 "src/ocaml/preprocess/parser_raw.ml" +# 24657 "src/ocaml/preprocess/parser_raw.ml" in -# 3202 "src/ocaml/preprocess/parser_raw.mly" +# 3353 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_record ls, priv, oty) ) -# 24387 "src/ocaml/preprocess/parser_raw.ml" +# 24663 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24427,26 +24703,26 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3911 "src/ocaml/preprocess/parser_raw.mly" +# 4118 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 24433 "src/ocaml/preprocess/parser_raw.ml" +# 24709 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = # 124 "" ( None ) -# 24439 "src/ocaml/preprocess/parser_raw.ml" +# 24715 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24444 "src/ocaml/preprocess/parser_raw.ml" +# 24720 "src/ocaml/preprocess/parser_raw.ml" in -# 3202 "src/ocaml/preprocess/parser_raw.mly" +# 3353 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_record ls, priv, oty) ) -# 24450 "src/ocaml/preprocess/parser_raw.ml" +# 24726 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24497,33 +24773,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos__5_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3910 "src/ocaml/preprocess/parser_raw.mly" +# 4117 "src/ocaml/preprocess/parser_raw.mly" ( Public ) -# 24503 "src/ocaml/preprocess/parser_raw.ml" +# 24779 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 24510 "src/ocaml/preprocess/parser_raw.ml" +# 24786 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 24515 "src/ocaml/preprocess/parser_raw.ml" +# 24791 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24521 "src/ocaml/preprocess/parser_raw.ml" +# 24797 "src/ocaml/preprocess/parser_raw.ml" in -# 3202 "src/ocaml/preprocess/parser_raw.mly" +# 3353 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_record ls, priv, oty) ) -# 24527 "src/ocaml/preprocess/parser_raw.ml" +# 24803 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24581,33 +24857,136 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos__5_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 3911 "src/ocaml/preprocess/parser_raw.mly" +# 4118 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 24587 "src/ocaml/preprocess/parser_raw.ml" +# 24863 "src/ocaml/preprocess/parser_raw.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 24594 "src/ocaml/preprocess/parser_raw.ml" +# 24870 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 24599 "src/ocaml/preprocess/parser_raw.ml" +# 24875 "src/ocaml/preprocess/parser_raw.ml" in -# 3206 "src/ocaml/preprocess/parser_raw.mly" +# 3357 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24605 "src/ocaml/preprocess/parser_raw.ml" +# 24881 "src/ocaml/preprocess/parser_raw.ml" in -# 3202 "src/ocaml/preprocess/parser_raw.mly" +# 3353 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_record ls, priv, oty) ) -# 24611 "src/ocaml/preprocess/parser_raw.ml" +# 24887 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = meth_list; + MenhirLib.EngineTypes.startp = _startpos_meth_list_; + MenhirLib.EngineTypes.endp = _endpos_meth_list_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let meth_list : (Parsetree.object_field list * Asttypes.closed_flag) = Obj.magic meth_list in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (Parsetree.core_type) = let _1 = + let _1 = +# 3777 "src/ocaml/preprocess/parser_raw.mly" + ( let (f, c) = meth_list in Ptyp_object (f, c) ) +# 24927 "src/ocaml/preprocess/parser_raw.ml" + in + let _endpos__1_ = _endpos__3_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1099 "src/ocaml/preprocess/parser_raw.mly" + ( mktyp ~loc:_sloc _1 ) +# 24936 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3781 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 24942 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Parsetree.core_type) = let _1 = + let _1 = +# 3779 "src/ocaml/preprocess/parser_raw.mly" + ( Ptyp_object ([], Closed) ) +# 24975 "src/ocaml/preprocess/parser_raw.ml" + in + let _endpos__1_ = _endpos__2_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1099 "src/ocaml/preprocess/parser_raw.mly" + ( mktyp ~loc:_sloc _1 ) +# 24984 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 3781 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 24990 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24660,37 +25039,37 @@ module Tables = struct let _v : (Parsetree.module_expr Parsetree.open_infos * string Location.loc option) = let attrs2 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24666 "src/ocaml/preprocess/parser_raw.ml" +# 25045 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24675 "src/ocaml/preprocess/parser_raw.ml" +# 25054 "src/ocaml/preprocess/parser_raw.ml" in let override = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 24681 "src/ocaml/preprocess/parser_raw.ml" +# 25060 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1688 "src/ocaml/preprocess/parser_raw.mly" +# 1775 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk me ~override ~attrs ~loc ~docs, ext ) -# 24694 "src/ocaml/preprocess/parser_raw.ml" +# 25073 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24750,40 +25129,40 @@ module Tables = struct let _v : (Parsetree.module_expr Parsetree.open_infos * string Location.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24756 "src/ocaml/preprocess/parser_raw.ml" +# 25135 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let attrs1 = let _1 = _1_inlined2 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24765 "src/ocaml/preprocess/parser_raw.ml" +# 25144 "src/ocaml/preprocess/parser_raw.ml" in let override = let _1 = _1_inlined1 in -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 24773 "src/ocaml/preprocess/parser_raw.ml" +# 25152 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1688 "src/ocaml/preprocess/parser_raw.mly" +# 1775 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk me ~override ~attrs ~loc ~docs, ext ) -# 24787 "src/ocaml/preprocess/parser_raw.ml" +# 25166 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24836,9 +25215,9 @@ module Tables = struct let _v : (Longident.t Location.loc Parsetree.open_infos * string Location.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24842 "src/ocaml/preprocess/parser_raw.ml" +# 25221 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -24848,36 +25227,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 24854 "src/ocaml/preprocess/parser_raw.ml" +# 25233 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24862 "src/ocaml/preprocess/parser_raw.ml" +# 25241 "src/ocaml/preprocess/parser_raw.ml" in let override = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 24868 "src/ocaml/preprocess/parser_raw.ml" +# 25247 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1703 "src/ocaml/preprocess/parser_raw.mly" +# 1790 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk id ~override ~attrs ~loc ~docs, ext ) -# 24881 "src/ocaml/preprocess/parser_raw.ml" +# 25260 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24937,9 +25316,9 @@ module Tables = struct let _v : (Longident.t Location.loc Parsetree.open_infos * string Location.loc option) = let attrs2 = let _1 = _1_inlined4 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24943 "src/ocaml/preprocess/parser_raw.ml" +# 25322 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -24949,39 +25328,39 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 24955 "src/ocaml/preprocess/parser_raw.ml" +# 25334 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined2 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 24963 "src/ocaml/preprocess/parser_raw.ml" +# 25342 "src/ocaml/preprocess/parser_raw.ml" in let override = let _1 = _1_inlined1 in -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 24971 "src/ocaml/preprocess/parser_raw.ml" +# 25350 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1703 "src/ocaml/preprocess/parser_raw.mly" +# 1790 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk id ~override ~attrs ~loc ~docs, ext ) -# 24985 "src/ocaml/preprocess/parser_raw.ml" +# 25364 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25000,17 +25379,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 823 "src/ocaml/preprocess/parser_raw.mly" +# 889 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25006 "src/ocaml/preprocess/parser_raw.ml" +# 25385 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3747 "src/ocaml/preprocess/parser_raw.mly" +# 3954 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25014 "src/ocaml/preprocess/parser_raw.ml" +# 25393 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25029,17 +25408,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 781 "src/ocaml/preprocess/parser_raw.mly" +# 847 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25035 "src/ocaml/preprocess/parser_raw.ml" +# 25414 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3748 "src/ocaml/preprocess/parser_raw.mly" +# 3955 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25043 "src/ocaml/preprocess/parser_raw.ml" +# 25422 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25058,17 +25437,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 782 "src/ocaml/preprocess/parser_raw.mly" +# 848 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25064 "src/ocaml/preprocess/parser_raw.ml" +# 25443 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3749 "src/ocaml/preprocess/parser_raw.mly" +# 3956 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25072 "src/ocaml/preprocess/parser_raw.ml" +# 25451 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25108,17 +25487,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25114 "src/ocaml/preprocess/parser_raw.ml" +# 25493 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (string) = -# 3750 "src/ocaml/preprocess/parser_raw.mly" +# 3957 "src/ocaml/preprocess/parser_raw.mly" ( "."^ _1 ^"(" ^ _3 ^ ")" ) -# 25122 "src/ocaml/preprocess/parser_raw.ml" +# 25501 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25165,17 +25544,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25171 "src/ocaml/preprocess/parser_raw.ml" +# 25550 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (string) = -# 3751 "src/ocaml/preprocess/parser_raw.mly" +# 3958 "src/ocaml/preprocess/parser_raw.mly" ( "."^ _1 ^ "(" ^ _3 ^ ")<-" ) -# 25179 "src/ocaml/preprocess/parser_raw.ml" +# 25558 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25215,17 +25594,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25221 "src/ocaml/preprocess/parser_raw.ml" +# 25600 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (string) = -# 3752 "src/ocaml/preprocess/parser_raw.mly" +# 3959 "src/ocaml/preprocess/parser_raw.mly" ( "."^ _1 ^"[" ^ _3 ^ "]" ) -# 25229 "src/ocaml/preprocess/parser_raw.ml" +# 25608 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25272,17 +25651,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25278 "src/ocaml/preprocess/parser_raw.ml" +# 25657 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (string) = -# 3753 "src/ocaml/preprocess/parser_raw.mly" +# 3960 "src/ocaml/preprocess/parser_raw.mly" ( "."^ _1 ^ "[" ^ _3 ^ "]<-" ) -# 25286 "src/ocaml/preprocess/parser_raw.ml" +# 25665 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25322,17 +25701,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25328 "src/ocaml/preprocess/parser_raw.ml" +# 25707 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (string) = -# 3754 "src/ocaml/preprocess/parser_raw.mly" +# 3961 "src/ocaml/preprocess/parser_raw.mly" ( "."^ _1 ^"{" ^ _3 ^ "}" ) -# 25336 "src/ocaml/preprocess/parser_raw.ml" +# 25715 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25379,17 +25758,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25385 "src/ocaml/preprocess/parser_raw.ml" +# 25764 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (string) = -# 3755 "src/ocaml/preprocess/parser_raw.mly" +# 3962 "src/ocaml/preprocess/parser_raw.mly" ( "."^ _1 ^ "{" ^ _3 ^ "}<-" ) -# 25393 "src/ocaml/preprocess/parser_raw.ml" +# 25772 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25408,17 +25787,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 834 "src/ocaml/preprocess/parser_raw.mly" +# 900 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25414 "src/ocaml/preprocess/parser_raw.ml" +# 25793 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3756 "src/ocaml/preprocess/parser_raw.mly" +# 3963 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25422 "src/ocaml/preprocess/parser_raw.ml" +# 25801 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25441,9 +25820,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3757 "src/ocaml/preprocess/parser_raw.mly" +# 3964 "src/ocaml/preprocess/parser_raw.mly" ( "!" ) -# 25447 "src/ocaml/preprocess/parser_raw.ml" +# 25826 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25462,22 +25841,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 775 "src/ocaml/preprocess/parser_raw.mly" +# 841 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25468 "src/ocaml/preprocess/parser_raw.ml" +# 25847 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v : (string) = let _1 = -# 3761 "src/ocaml/preprocess/parser_raw.mly" +# 3968 "src/ocaml/preprocess/parser_raw.mly" ( op ) -# 25476 "src/ocaml/preprocess/parser_raw.ml" +# 25855 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25481 "src/ocaml/preprocess/parser_raw.ml" +# 25860 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25496,22 +25875,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 776 "src/ocaml/preprocess/parser_raw.mly" +# 842 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25502 "src/ocaml/preprocess/parser_raw.ml" +# 25881 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v : (string) = let _1 = -# 3762 "src/ocaml/preprocess/parser_raw.mly" +# 3969 "src/ocaml/preprocess/parser_raw.mly" ( op ) -# 25510 "src/ocaml/preprocess/parser_raw.ml" +# 25889 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25515 "src/ocaml/preprocess/parser_raw.ml" +# 25894 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25530,22 +25909,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 777 "src/ocaml/preprocess/parser_raw.mly" +# 843 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25536 "src/ocaml/preprocess/parser_raw.ml" +# 25915 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v : (string) = let _1 = -# 3763 "src/ocaml/preprocess/parser_raw.mly" +# 3970 "src/ocaml/preprocess/parser_raw.mly" ( op ) -# 25544 "src/ocaml/preprocess/parser_raw.ml" +# 25923 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25549 "src/ocaml/preprocess/parser_raw.ml" +# 25928 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25564,22 +25943,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 778 "src/ocaml/preprocess/parser_raw.mly" +# 844 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25570 "src/ocaml/preprocess/parser_raw.ml" +# 25949 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v : (string) = let _1 = -# 3764 "src/ocaml/preprocess/parser_raw.mly" +# 3971 "src/ocaml/preprocess/parser_raw.mly" ( op ) -# 25578 "src/ocaml/preprocess/parser_raw.ml" +# 25957 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25583 "src/ocaml/preprocess/parser_raw.ml" +# 25962 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25598,22 +25977,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 779 "src/ocaml/preprocess/parser_raw.mly" +# 845 "src/ocaml/preprocess/parser_raw.mly" (string) -# 25604 "src/ocaml/preprocess/parser_raw.ml" +# 25983 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v : (string) = let _1 = -# 3765 "src/ocaml/preprocess/parser_raw.mly" +# 3972 "src/ocaml/preprocess/parser_raw.mly" ( op ) -# 25612 "src/ocaml/preprocess/parser_raw.ml" +# 25991 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25617 "src/ocaml/preprocess/parser_raw.ml" +# 25996 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25636,14 +26015,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3766 "src/ocaml/preprocess/parser_raw.mly" +# 3973 "src/ocaml/preprocess/parser_raw.mly" ("+") -# 25642 "src/ocaml/preprocess/parser_raw.ml" +# 26021 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25647 "src/ocaml/preprocess/parser_raw.ml" +# 26026 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25666,14 +26045,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3767 "src/ocaml/preprocess/parser_raw.mly" +# 3974 "src/ocaml/preprocess/parser_raw.mly" ("+.") -# 25672 "src/ocaml/preprocess/parser_raw.ml" +# 26051 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25677 "src/ocaml/preprocess/parser_raw.ml" +# 26056 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25696,14 +26075,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3768 "src/ocaml/preprocess/parser_raw.mly" +# 3975 "src/ocaml/preprocess/parser_raw.mly" ("+=") -# 25702 "src/ocaml/preprocess/parser_raw.ml" +# 26081 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25707 "src/ocaml/preprocess/parser_raw.ml" +# 26086 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25726,14 +26105,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3769 "src/ocaml/preprocess/parser_raw.mly" +# 3976 "src/ocaml/preprocess/parser_raw.mly" ("-") -# 25732 "src/ocaml/preprocess/parser_raw.ml" +# 26111 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25737 "src/ocaml/preprocess/parser_raw.ml" +# 26116 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25756,14 +26135,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3770 "src/ocaml/preprocess/parser_raw.mly" +# 3977 "src/ocaml/preprocess/parser_raw.mly" ("-.") -# 25762 "src/ocaml/preprocess/parser_raw.ml" +# 26141 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25767 "src/ocaml/preprocess/parser_raw.ml" +# 26146 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25786,14 +26165,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3771 "src/ocaml/preprocess/parser_raw.mly" +# 3978 "src/ocaml/preprocess/parser_raw.mly" ("*") -# 25792 "src/ocaml/preprocess/parser_raw.ml" +# 26171 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25797 "src/ocaml/preprocess/parser_raw.ml" +# 26176 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25816,14 +26195,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3772 "src/ocaml/preprocess/parser_raw.mly" +# 3979 "src/ocaml/preprocess/parser_raw.mly" ("%") -# 25822 "src/ocaml/preprocess/parser_raw.ml" +# 26201 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25827 "src/ocaml/preprocess/parser_raw.ml" +# 26206 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25846,14 +26225,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3773 "src/ocaml/preprocess/parser_raw.mly" +# 3980 "src/ocaml/preprocess/parser_raw.mly" ("=") -# 25852 "src/ocaml/preprocess/parser_raw.ml" +# 26231 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25857 "src/ocaml/preprocess/parser_raw.ml" +# 26236 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25876,14 +26255,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3774 "src/ocaml/preprocess/parser_raw.mly" +# 3981 "src/ocaml/preprocess/parser_raw.mly" ("<") -# 25882 "src/ocaml/preprocess/parser_raw.ml" +# 26261 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25887 "src/ocaml/preprocess/parser_raw.ml" +# 26266 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25906,14 +26285,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3775 "src/ocaml/preprocess/parser_raw.mly" +# 3982 "src/ocaml/preprocess/parser_raw.mly" (">") -# 25912 "src/ocaml/preprocess/parser_raw.ml" +# 26291 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25917 "src/ocaml/preprocess/parser_raw.ml" +# 26296 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25936,14 +26315,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3776 "src/ocaml/preprocess/parser_raw.mly" +# 3983 "src/ocaml/preprocess/parser_raw.mly" ("or") -# 25942 "src/ocaml/preprocess/parser_raw.ml" +# 26321 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25947 "src/ocaml/preprocess/parser_raw.ml" +# 26326 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25966,14 +26345,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3777 "src/ocaml/preprocess/parser_raw.mly" +# 3984 "src/ocaml/preprocess/parser_raw.mly" ("||") -# 25972 "src/ocaml/preprocess/parser_raw.ml" +# 26351 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 25977 "src/ocaml/preprocess/parser_raw.ml" +# 26356 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25996,14 +26375,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3778 "src/ocaml/preprocess/parser_raw.mly" +# 3985 "src/ocaml/preprocess/parser_raw.mly" ("&") -# 26002 "src/ocaml/preprocess/parser_raw.ml" +# 26381 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 26007 "src/ocaml/preprocess/parser_raw.ml" +# 26386 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26026,14 +26405,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3779 "src/ocaml/preprocess/parser_raw.mly" +# 3986 "src/ocaml/preprocess/parser_raw.mly" ("&&") -# 26032 "src/ocaml/preprocess/parser_raw.ml" +# 26411 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 26037 "src/ocaml/preprocess/parser_raw.ml" +# 26416 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26056,14 +26435,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = let _1 = -# 3780 "src/ocaml/preprocess/parser_raw.mly" +# 3987 "src/ocaml/preprocess/parser_raw.mly" (":=") -# 26062 "src/ocaml/preprocess/parser_raw.ml" +# 26441 "src/ocaml/preprocess/parser_raw.ml" in -# 3758 "src/ocaml/preprocess/parser_raw.mly" +# 3965 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 26067 "src/ocaml/preprocess/parser_raw.ml" +# 26446 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26086,9 +26465,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (bool) = -# 3660 "src/ocaml/preprocess/parser_raw.mly" +# 3867 "src/ocaml/preprocess/parser_raw.mly" ( true ) -# 26092 "src/ocaml/preprocess/parser_raw.ml" +# 26471 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26104,9 +26483,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (bool) = -# 3661 "src/ocaml/preprocess/parser_raw.mly" +# 3868 "src/ocaml/preprocess/parser_raw.mly" ( false ) -# 26110 "src/ocaml/preprocess/parser_raw.ml" +# 26489 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26124,7 +26503,7 @@ module Tables = struct let _v : (unit option) = # 114 "" ( None ) -# 26128 "src/ocaml/preprocess/parser_raw.ml" +# 26507 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26149,7 +26528,7 @@ module Tables = struct let _v : (unit option) = # 116 "" ( Some x ) -# 26153 "src/ocaml/preprocess/parser_raw.ml" +# 26532 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26167,7 +26546,7 @@ module Tables = struct let _v : (unit option) = # 114 "" ( None ) -# 26171 "src/ocaml/preprocess/parser_raw.ml" +# 26550 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26192,7 +26571,7 @@ module Tables = struct let _v : (unit option) = # 116 "" ( Some x ) -# 26196 "src/ocaml/preprocess/parser_raw.ml" +# 26575 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26210,7 +26589,7 @@ module Tables = struct let _v : (string Location.loc option) = # 114 "" ( None ) -# 26214 "src/ocaml/preprocess/parser_raw.ml" +# 26593 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26235,9 +26614,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 26241 "src/ocaml/preprocess/parser_raw.ml" +# 26620 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -26250,21 +26629,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 26256 "src/ocaml/preprocess/parser_raw.ml" +# 26635 "src/ocaml/preprocess/parser_raw.ml" in # 183 "" ( x ) -# 26262 "src/ocaml/preprocess/parser_raw.ml" +# 26641 "src/ocaml/preprocess/parser_raw.ml" in # 116 "" ( Some x ) -# 26268 "src/ocaml/preprocess/parser_raw.ml" +# 26647 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26282,7 +26661,7 @@ module Tables = struct let _v : (Parsetree.core_type option) = # 114 "" ( None ) -# 26286 "src/ocaml/preprocess/parser_raw.ml" +# 26665 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26314,12 +26693,67 @@ module Tables = struct let _v : (Parsetree.core_type option) = let x = # 183 "" ( x ) -# 26318 "src/ocaml/preprocess/parser_raw.ml" +# 26697 "src/ocaml/preprocess/parser_raw.ml" in # 116 "" ( Some x ) -# 26323 "src/ocaml/preprocess/parser_raw.ml" +# 26702 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.core_type option) = +# 114 "" + ( None ) +# 26720 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let x : (Parsetree.core_type) = Obj.magic x in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_x_ in + let _v : (Parsetree.core_type option) = let x = +# 183 "" + ( x ) +# 26752 "src/ocaml/preprocess/parser_raw.ml" + in + +# 116 "" + ( Some x ) +# 26757 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26337,7 +26771,7 @@ module Tables = struct let _v : (Parsetree.expression option) = # 114 "" ( None ) -# 26341 "src/ocaml/preprocess/parser_raw.ml" +# 26775 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26369,12 +26803,12 @@ module Tables = struct let _v : (Parsetree.expression option) = let x = # 183 "" ( x ) -# 26373 "src/ocaml/preprocess/parser_raw.ml" +# 26807 "src/ocaml/preprocess/parser_raw.ml" in # 116 "" ( Some x ) -# 26378 "src/ocaml/preprocess/parser_raw.ml" +# 26812 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26392,7 +26826,7 @@ module Tables = struct let _v : (Parsetree.module_type option) = # 114 "" ( None ) -# 26396 "src/ocaml/preprocess/parser_raw.ml" +# 26830 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26424,12 +26858,12 @@ module Tables = struct let _v : (Parsetree.module_type option) = let x = # 183 "" ( x ) -# 26428 "src/ocaml/preprocess/parser_raw.ml" +# 26862 "src/ocaml/preprocess/parser_raw.ml" in # 116 "" ( Some x ) -# 26433 "src/ocaml/preprocess/parser_raw.ml" +# 26867 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26447,7 +26881,7 @@ module Tables = struct let _v : (Parsetree.pattern option) = # 114 "" ( None ) -# 26451 "src/ocaml/preprocess/parser_raw.ml" +# 26885 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26479,12 +26913,12 @@ module Tables = struct let _v : (Parsetree.pattern option) = let x = # 183 "" ( x ) -# 26483 "src/ocaml/preprocess/parser_raw.ml" +# 26917 "src/ocaml/preprocess/parser_raw.ml" in # 116 "" ( Some x ) -# 26488 "src/ocaml/preprocess/parser_raw.ml" +# 26922 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26502,7 +26936,7 @@ module Tables = struct let _v : (Parsetree.expression option) = # 114 "" ( None ) -# 26506 "src/ocaml/preprocess/parser_raw.ml" +# 26940 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26534,12 +26968,12 @@ module Tables = struct let _v : (Parsetree.expression option) = let x = # 183 "" ( x ) -# 26538 "src/ocaml/preprocess/parser_raw.ml" +# 26972 "src/ocaml/preprocess/parser_raw.ml" in # 116 "" ( Some x ) -# 26543 "src/ocaml/preprocess/parser_raw.ml" +# 26977 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26554,10 +26988,10 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in - let _v : ((Parsetree.core_type option * Parsetree.core_type option) option) = + let _v : (Parsetree.type_constraint option) = # 114 "" ( None ) -# 26561 "src/ocaml/preprocess/parser_raw.ml" +# 26995 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26575,14 +27009,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let x : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic x in + let x : (Parsetree.type_constraint) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in - let _v : ((Parsetree.core_type option * Parsetree.core_type option) option) = + let _v : (Parsetree.type_constraint option) = # 116 "" ( Some x ) -# 26586 "src/ocaml/preprocess/parser_raw.ml" +# 27020 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26601,17 +27035,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 816 "src/ocaml/preprocess/parser_raw.mly" +# 882 "src/ocaml/preprocess/parser_raw.mly" (string) -# 26607 "src/ocaml/preprocess/parser_raw.ml" +# 27041 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3969 "src/ocaml/preprocess/parser_raw.mly" +# 4176 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 26615 "src/ocaml/preprocess/parser_raw.ml" +# 27049 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26643,18 +27077,18 @@ module Tables = struct } = _menhir_stack in let _3 : unit = Obj.magic _3 in let _2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 26649 "src/ocaml/preprocess/parser_raw.ml" +# 27083 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (string) = -# 3970 "src/ocaml/preprocess/parser_raw.mly" +# 4177 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 26658 "src/ocaml/preprocess/parser_raw.ml" +# 27092 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26708,9 +27142,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1457 "src/ocaml/preprocess/parser_raw.mly" +# 1544 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc (Pmod_constraint(me, mty)) ) -# 26714 "src/ocaml/preprocess/parser_raw.ml" +# 27148 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26747,9 +27181,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.module_expr) = -# 1464 "src/ocaml/preprocess/parser_raw.mly" +# 1551 "src/ocaml/preprocess/parser_raw.mly" ( me (* TODO consider reloc *) ) -# 26753 "src/ocaml/preprocess/parser_raw.ml" +# 27187 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26800,25 +27234,25 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.module_expr) = let e = -# 1487 "src/ocaml/preprocess/parser_raw.mly" +# 1574 "src/ocaml/preprocess/parser_raw.mly" ( e ) -# 26806 "src/ocaml/preprocess/parser_raw.ml" +# 27240 "src/ocaml/preprocess/parser_raw.ml" in let attrs = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 26813 "src/ocaml/preprocess/parser_raw.ml" +# 27247 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1472 "src/ocaml/preprocess/parser_raw.mly" +# 1559 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 26822 "src/ocaml/preprocess/parser_raw.ml" +# 27256 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26889,11 +27323,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3635 "src/ocaml/preprocess/parser_raw.mly" +# 3842 "src/ocaml/preprocess/parser_raw.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 26897 "src/ocaml/preprocess/parser_raw.ml" +# 27331 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_ty_ = _endpos__1_ in @@ -26901,26 +27335,26 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in -# 1489 "src/ocaml/preprocess/parser_raw.mly" +# 1576 "src/ocaml/preprocess/parser_raw.mly" ( ghexp ~loc:_loc (Pexp_constraint (e, ty)) ) -# 26907 "src/ocaml/preprocess/parser_raw.ml" +# 27341 "src/ocaml/preprocess/parser_raw.ml" in let attrs = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 26915 "src/ocaml/preprocess/parser_raw.ml" +# 27349 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1472 "src/ocaml/preprocess/parser_raw.mly" +# 1559 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 26924 "src/ocaml/preprocess/parser_raw.ml" +# 27358 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27006,11 +27440,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3635 "src/ocaml/preprocess/parser_raw.mly" +# 3842 "src/ocaml/preprocess/parser_raw.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 27014 "src/ocaml/preprocess/parser_raw.ml" +# 27448 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_ty2_ = _endpos__1_inlined1_ in @@ -27019,37 +27453,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3635 "src/ocaml/preprocess/parser_raw.mly" +# 3842 "src/ocaml/preprocess/parser_raw.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 27027 "src/ocaml/preprocess/parser_raw.ml" +# 27461 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_ty2_ in let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in -# 1491 "src/ocaml/preprocess/parser_raw.mly" +# 1578 "src/ocaml/preprocess/parser_raw.mly" ( ghexp ~loc:_loc (Pexp_coerce (e, Some ty1, ty2)) ) -# 27036 "src/ocaml/preprocess/parser_raw.ml" +# 27470 "src/ocaml/preprocess/parser_raw.ml" in let attrs = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27044 "src/ocaml/preprocess/parser_raw.ml" +# 27478 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1472 "src/ocaml/preprocess/parser_raw.mly" +# 1559 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 27053 "src/ocaml/preprocess/parser_raw.ml" +# 27487 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27120,11 +27554,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3635 "src/ocaml/preprocess/parser_raw.mly" +# 3842 "src/ocaml/preprocess/parser_raw.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 27128 "src/ocaml/preprocess/parser_raw.ml" +# 27562 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_ty2_ = _endpos__1_ in @@ -27132,26 +27566,26 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in -# 1493 "src/ocaml/preprocess/parser_raw.mly" +# 1580 "src/ocaml/preprocess/parser_raw.mly" ( ghexp ~loc:_loc (Pexp_coerce (e, None, ty2)) ) -# 27138 "src/ocaml/preprocess/parser_raw.ml" +# 27572 "src/ocaml/preprocess/parser_raw.ml" in let attrs = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27146 "src/ocaml/preprocess/parser_raw.ml" +# 27580 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1472 "src/ocaml/preprocess/parser_raw.mly" +# 1559 "src/ocaml/preprocess/parser_raw.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 27155 "src/ocaml/preprocess/parser_raw.ml" +# 27589 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27181,9 +27615,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1366 "src/ocaml/preprocess/parser_raw.mly" +# 1453 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27187 "src/ocaml/preprocess/parser_raw.ml" +# 27621 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27213,9 +27647,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1351 "src/ocaml/preprocess/parser_raw.mly" +# 1438 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27219 "src/ocaml/preprocess/parser_raw.ml" +# 27653 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27245,9 +27679,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = -# 1326 "src/ocaml/preprocess/parser_raw.mly" +# 1413 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27251 "src/ocaml/preprocess/parser_raw.ml" +# 27685 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27277,9 +27711,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 1331 "src/ocaml/preprocess/parser_raw.mly" +# 1418 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27283 "src/ocaml/preprocess/parser_raw.ml" +# 27717 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27309,9 +27743,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1356 "src/ocaml/preprocess/parser_raw.mly" +# 1443 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27315 "src/ocaml/preprocess/parser_raw.ml" +# 27749 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27341,9 +27775,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1361 "src/ocaml/preprocess/parser_raw.mly" +# 1448 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27347 "src/ocaml/preprocess/parser_raw.ml" +# 27781 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27373,9 +27807,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_expr) = -# 1321 "src/ocaml/preprocess/parser_raw.mly" +# 1408 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27379 "src/ocaml/preprocess/parser_raw.ml" +# 27813 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27405,9 +27839,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_type) = -# 1316 "src/ocaml/preprocess/parser_raw.mly" +# 1403 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27411 "src/ocaml/preprocess/parser_raw.ml" +# 27845 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27437,9 +27871,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1341 "src/ocaml/preprocess/parser_raw.mly" +# 1428 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27443 "src/ocaml/preprocess/parser_raw.ml" +# 27877 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27469,9 +27903,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = -# 1336 "src/ocaml/preprocess/parser_raw.mly" +# 1423 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27475 "src/ocaml/preprocess/parser_raw.ml" +# 27909 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27501,9 +27935,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1346 "src/ocaml/preprocess/parser_raw.mly" +# 1433 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27507 "src/ocaml/preprocess/parser_raw.ml" +# 27941 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27545,15 +27979,15 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 2915 "src/ocaml/preprocess/parser_raw.mly" +# 3066 "src/ocaml/preprocess/parser_raw.mly" ( mkpat_cons ~loc:_sloc _loc__2_ (ghpat ~loc:_sloc (Ppat_tuple[_1;_3])) ) -# 27551 "src/ocaml/preprocess/parser_raw.ml" +# 27985 "src/ocaml/preprocess/parser_raw.ml" in -# 2903 "src/ocaml/preprocess/parser_raw.mly" +# 3054 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27557 "src/ocaml/preprocess/parser_raw.ml" +# 27991 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27583,14 +28017,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = -# 2917 "src/ocaml/preprocess/parser_raw.mly" +# 3068 "src/ocaml/preprocess/parser_raw.mly" ( Pat.attr _1 _2 ) -# 27589 "src/ocaml/preprocess/parser_raw.ml" +# 28023 "src/ocaml/preprocess/parser_raw.ml" in -# 2903 "src/ocaml/preprocess/parser_raw.mly" +# 3054 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27594 "src/ocaml/preprocess/parser_raw.ml" +# 28028 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27613,14 +28047,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = -# 2919 "src/ocaml/preprocess/parser_raw.mly" +# 3070 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27619 "src/ocaml/preprocess/parser_raw.ml" +# 28053 "src/ocaml/preprocess/parser_raw.ml" in -# 2903 "src/ocaml/preprocess/parser_raw.mly" +# 3054 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27624 "src/ocaml/preprocess/parser_raw.ml" +# 28058 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27665,15 +28099,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 27671 "src/ocaml/preprocess/parser_raw.ml" +# 28105 "src/ocaml/preprocess/parser_raw.ml" in -# 2922 "src/ocaml/preprocess/parser_raw.mly" +# 3073 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_alias(_1, _3) ) -# 27677 "src/ocaml/preprocess/parser_raw.ml" +# 28111 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -27681,21 +28115,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 27687 "src/ocaml/preprocess/parser_raw.ml" +# 28121 "src/ocaml/preprocess/parser_raw.ml" in -# 2933 "src/ocaml/preprocess/parser_raw.mly" +# 3084 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27693 "src/ocaml/preprocess/parser_raw.ml" +# 28127 "src/ocaml/preprocess/parser_raw.ml" in -# 2903 "src/ocaml/preprocess/parser_raw.mly" +# 3054 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27699 "src/ocaml/preprocess/parser_raw.ml" +# 28133 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27720,29 +28154,29 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 2926 "src/ocaml/preprocess/parser_raw.mly" +# 3077 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_tuple(List.rev _1) ) -# 27726 "src/ocaml/preprocess/parser_raw.ml" +# 28160 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 27734 "src/ocaml/preprocess/parser_raw.ml" +# 28168 "src/ocaml/preprocess/parser_raw.ml" in -# 2933 "src/ocaml/preprocess/parser_raw.mly" +# 3084 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27740 "src/ocaml/preprocess/parser_raw.ml" +# 28174 "src/ocaml/preprocess/parser_raw.ml" in -# 2903 "src/ocaml/preprocess/parser_raw.mly" +# 3054 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27746 "src/ocaml/preprocess/parser_raw.ml" +# 28180 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27781,30 +28215,30 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 2930 "src/ocaml/preprocess/parser_raw.mly" +# 3081 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_or(_1, _3) ) -# 27787 "src/ocaml/preprocess/parser_raw.ml" +# 28221 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 27796 "src/ocaml/preprocess/parser_raw.ml" +# 28230 "src/ocaml/preprocess/parser_raw.ml" in -# 2933 "src/ocaml/preprocess/parser_raw.mly" +# 3084 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27802 "src/ocaml/preprocess/parser_raw.ml" +# 28236 "src/ocaml/preprocess/parser_raw.ml" in -# 2903 "src/ocaml/preprocess/parser_raw.mly" +# 3054 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27808 "src/ocaml/preprocess/parser_raw.ml" +# 28242 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27852,24 +28286,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 27858 "src/ocaml/preprocess/parser_raw.ml" +# 28292 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 27864 "src/ocaml/preprocess/parser_raw.ml" +# 28298 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2905 "src/ocaml/preprocess/parser_raw.mly" +# 3056 "src/ocaml/preprocess/parser_raw.mly" ( mkpat_attrs ~loc:_sloc (Ppat_exception _3) _2) -# 27873 "src/ocaml/preprocess/parser_raw.ml" +# 28307 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27906,9 +28340,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3036 "src/ocaml/preprocess/parser_raw.mly" +# 3187 "src/ocaml/preprocess/parser_raw.mly" ( _3 :: _1 ) -# 27912 "src/ocaml/preprocess/parser_raw.ml" +# 28346 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27945,9 +28379,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3037 "src/ocaml/preprocess/parser_raw.mly" +# 3188 "src/ocaml/preprocess/parser_raw.mly" ( [_3; _1] ) -# 27951 "src/ocaml/preprocess/parser_raw.ml" +# 28385 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27984,9 +28418,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3036 "src/ocaml/preprocess/parser_raw.mly" +# 3187 "src/ocaml/preprocess/parser_raw.mly" ( _3 :: _1 ) -# 27990 "src/ocaml/preprocess/parser_raw.ml" +# 28424 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28023,9 +28457,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3037 "src/ocaml/preprocess/parser_raw.mly" +# 3188 "src/ocaml/preprocess/parser_raw.mly" ( [_3; _1] ) -# 28029 "src/ocaml/preprocess/parser_raw.ml" +# 28463 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28048,9 +28482,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 2938 "src/ocaml/preprocess/parser_raw.mly" +# 3089 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28054 "src/ocaml/preprocess/parser_raw.ml" +# 28488 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28086,15 +28520,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 28092 "src/ocaml/preprocess/parser_raw.ml" +# 28526 "src/ocaml/preprocess/parser_raw.ml" in -# 2941 "src/ocaml/preprocess/parser_raw.mly" +# 3092 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_construct(_1, Some ([], _2)) ) -# 28098 "src/ocaml/preprocess/parser_raw.ml" +# 28532 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in @@ -28102,15 +28536,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 28108 "src/ocaml/preprocess/parser_raw.ml" +# 28542 "src/ocaml/preprocess/parser_raw.ml" in -# 2947 "src/ocaml/preprocess/parser_raw.mly" +# 3098 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28114 "src/ocaml/preprocess/parser_raw.ml" +# 28548 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28170,24 +28604,24 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let newtypes = -# 2689 "src/ocaml/preprocess/parser_raw.mly" +# 2809 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 28176 "src/ocaml/preprocess/parser_raw.ml" +# 28610 "src/ocaml/preprocess/parser_raw.ml" in let constr = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 28185 "src/ocaml/preprocess/parser_raw.ml" +# 28619 "src/ocaml/preprocess/parser_raw.ml" in -# 2944 "src/ocaml/preprocess/parser_raw.mly" +# 3095 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_construct(constr, Some (newtypes, pat)) ) -# 28191 "src/ocaml/preprocess/parser_raw.ml" +# 28625 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_pat_ in @@ -28195,15 +28629,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 28201 "src/ocaml/preprocess/parser_raw.ml" +# 28635 "src/ocaml/preprocess/parser_raw.ml" in -# 2947 "src/ocaml/preprocess/parser_raw.mly" +# 3098 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28207 "src/ocaml/preprocess/parser_raw.ml" +# 28641 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28234,24 +28668,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2946 "src/ocaml/preprocess/parser_raw.mly" +# 3097 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_variant(_1, Some _2) ) -# 28240 "src/ocaml/preprocess/parser_raw.ml" +# 28674 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 28249 "src/ocaml/preprocess/parser_raw.ml" +# 28683 "src/ocaml/preprocess/parser_raw.ml" in -# 2947 "src/ocaml/preprocess/parser_raw.mly" +# 3098 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28255 "src/ocaml/preprocess/parser_raw.ml" +# 28689 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28299,24 +28733,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28305 "src/ocaml/preprocess/parser_raw.ml" +# 28739 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 28311 "src/ocaml/preprocess/parser_raw.ml" +# 28745 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2949 "src/ocaml/preprocess/parser_raw.mly" +# 3100 "src/ocaml/preprocess/parser_raw.mly" ( mkpat_attrs ~loc:_sloc (Ppat_lazy _3) _2) -# 28320 "src/ocaml/preprocess/parser_raw.ml" +# 28754 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28358,15 +28792,15 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 2915 "src/ocaml/preprocess/parser_raw.mly" +# 3066 "src/ocaml/preprocess/parser_raw.mly" ( mkpat_cons ~loc:_sloc _loc__2_ (ghpat ~loc:_sloc (Ppat_tuple[_1;_3])) ) -# 28364 "src/ocaml/preprocess/parser_raw.ml" +# 28798 "src/ocaml/preprocess/parser_raw.ml" in -# 2910 "src/ocaml/preprocess/parser_raw.mly" +# 3061 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28370 "src/ocaml/preprocess/parser_raw.ml" +# 28804 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28396,14 +28830,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = -# 2917 "src/ocaml/preprocess/parser_raw.mly" +# 3068 "src/ocaml/preprocess/parser_raw.mly" ( Pat.attr _1 _2 ) -# 28402 "src/ocaml/preprocess/parser_raw.ml" +# 28836 "src/ocaml/preprocess/parser_raw.ml" in -# 2910 "src/ocaml/preprocess/parser_raw.mly" +# 3061 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28407 "src/ocaml/preprocess/parser_raw.ml" +# 28841 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28426,14 +28860,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = -# 2919 "src/ocaml/preprocess/parser_raw.mly" +# 3070 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28432 "src/ocaml/preprocess/parser_raw.ml" +# 28866 "src/ocaml/preprocess/parser_raw.ml" in -# 2910 "src/ocaml/preprocess/parser_raw.mly" +# 3061 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28437 "src/ocaml/preprocess/parser_raw.ml" +# 28871 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28478,15 +28912,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 28484 "src/ocaml/preprocess/parser_raw.ml" +# 28918 "src/ocaml/preprocess/parser_raw.ml" in -# 2922 "src/ocaml/preprocess/parser_raw.mly" +# 3073 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_alias(_1, _3) ) -# 28490 "src/ocaml/preprocess/parser_raw.ml" +# 28924 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -28494,21 +28928,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 28500 "src/ocaml/preprocess/parser_raw.ml" +# 28934 "src/ocaml/preprocess/parser_raw.ml" in -# 2933 "src/ocaml/preprocess/parser_raw.mly" +# 3084 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28506 "src/ocaml/preprocess/parser_raw.ml" +# 28940 "src/ocaml/preprocess/parser_raw.ml" in -# 2910 "src/ocaml/preprocess/parser_raw.mly" +# 3061 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28512 "src/ocaml/preprocess/parser_raw.ml" +# 28946 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28533,29 +28967,29 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 2926 "src/ocaml/preprocess/parser_raw.mly" +# 3077 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_tuple(List.rev _1) ) -# 28539 "src/ocaml/preprocess/parser_raw.ml" +# 28973 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 28547 "src/ocaml/preprocess/parser_raw.ml" +# 28981 "src/ocaml/preprocess/parser_raw.ml" in -# 2933 "src/ocaml/preprocess/parser_raw.mly" +# 3084 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28553 "src/ocaml/preprocess/parser_raw.ml" +# 28987 "src/ocaml/preprocess/parser_raw.ml" in -# 2910 "src/ocaml/preprocess/parser_raw.mly" +# 3061 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28559 "src/ocaml/preprocess/parser_raw.ml" +# 28993 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28594,30 +29028,30 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 2930 "src/ocaml/preprocess/parser_raw.mly" +# 3081 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_or(_1, _3) ) -# 28600 "src/ocaml/preprocess/parser_raw.ml" +# 29034 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 28609 "src/ocaml/preprocess/parser_raw.ml" +# 29043 "src/ocaml/preprocess/parser_raw.ml" in -# 2933 "src/ocaml/preprocess/parser_raw.mly" +# 3084 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28615 "src/ocaml/preprocess/parser_raw.ml" +# 29049 "src/ocaml/preprocess/parser_raw.ml" in -# 2910 "src/ocaml/preprocess/parser_raw.mly" +# 3061 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28621 "src/ocaml/preprocess/parser_raw.ml" +# 29055 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28636,9 +29070,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 28642 "src/ocaml/preprocess/parser_raw.ml" +# 29076 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -28650,30 +29084,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 28656 "src/ocaml/preprocess/parser_raw.ml" +# 29090 "src/ocaml/preprocess/parser_raw.ml" in -# 2367 "src/ocaml/preprocess/parser_raw.mly" +# 2485 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_var _1 ) -# 28662 "src/ocaml/preprocess/parser_raw.ml" +# 29096 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 28671 "src/ocaml/preprocess/parser_raw.ml" +# 29105 "src/ocaml/preprocess/parser_raw.ml" in -# 2369 "src/ocaml/preprocess/parser_raw.mly" +# 2487 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28677 "src/ocaml/preprocess/parser_raw.ml" +# 29111 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28697,23 +29131,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2368 "src/ocaml/preprocess/parser_raw.mly" +# 2486 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_any ) -# 28703 "src/ocaml/preprocess/parser_raw.ml" +# 29137 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 28711 "src/ocaml/preprocess/parser_raw.ml" +# 29145 "src/ocaml/preprocess/parser_raw.ml" in -# 2369 "src/ocaml/preprocess/parser_raw.mly" +# 2487 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28717 "src/ocaml/preprocess/parser_raw.ml" +# 29151 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28736,9 +29170,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.payload) = -# 4081 "src/ocaml/preprocess/parser_raw.mly" +# 4288 "src/ocaml/preprocess/parser_raw.mly" ( PStr _1 ) -# 28742 "src/ocaml/preprocess/parser_raw.ml" +# 29176 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28768,9 +29202,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4082 "src/ocaml/preprocess/parser_raw.mly" +# 4289 "src/ocaml/preprocess/parser_raw.mly" ( PSig _2 ) -# 28774 "src/ocaml/preprocess/parser_raw.ml" +# 29208 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28800,9 +29234,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4083 "src/ocaml/preprocess/parser_raw.mly" +# 4290 "src/ocaml/preprocess/parser_raw.mly" ( PTyp _2 ) -# 28806 "src/ocaml/preprocess/parser_raw.ml" +# 29240 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28832,9 +29266,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4084 "src/ocaml/preprocess/parser_raw.mly" +# 4291 "src/ocaml/preprocess/parser_raw.mly" ( PPat (_2, None) ) -# 28838 "src/ocaml/preprocess/parser_raw.ml" +# 29272 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28878,9 +29312,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.payload) = -# 4085 "src/ocaml/preprocess/parser_raw.mly" +# 4292 "src/ocaml/preprocess/parser_raw.mly" ( PPat (_2, Some _4) ) -# 28884 "src/ocaml/preprocess/parser_raw.ml" +# 29318 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28903,9 +29337,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3474 "src/ocaml/preprocess/parser_raw.mly" +# 3625 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28909 "src/ocaml/preprocess/parser_raw.ml" +# 29343 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28948,24 +29382,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 28952 "src/ocaml/preprocess/parser_raw.ml" +# 29386 "src/ocaml/preprocess/parser_raw.ml" in -# 1098 "src/ocaml/preprocess/parser_raw.mly" +# 1164 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 28957 "src/ocaml/preprocess/parser_raw.ml" +# 29391 "src/ocaml/preprocess/parser_raw.ml" in -# 3466 "src/ocaml/preprocess/parser_raw.mly" +# 3617 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28963 "src/ocaml/preprocess/parser_raw.ml" +# 29397 "src/ocaml/preprocess/parser_raw.ml" in -# 3470 "src/ocaml/preprocess/parser_raw.mly" +# 3621 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_poly(_1, _3) ) -# 28969 "src/ocaml/preprocess/parser_raw.ml" +# 29403 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in @@ -28973,15 +29407,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 28979 "src/ocaml/preprocess/parser_raw.ml" +# 29413 "src/ocaml/preprocess/parser_raw.ml" in -# 3476 "src/ocaml/preprocess/parser_raw.mly" +# 3627 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 28985 "src/ocaml/preprocess/parser_raw.ml" +# 29419 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29004,14 +29438,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = -# 3505 "src/ocaml/preprocess/parser_raw.mly" +# 3656 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29010 "src/ocaml/preprocess/parser_raw.ml" +# 29444 "src/ocaml/preprocess/parser_raw.ml" in -# 3474 "src/ocaml/preprocess/parser_raw.mly" +# 3625 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29015 "src/ocaml/preprocess/parser_raw.ml" +# 29449 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29050,33 +29484,33 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let _3 = -# 3505 "src/ocaml/preprocess/parser_raw.mly" +# 3656 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29056 "src/ocaml/preprocess/parser_raw.ml" +# 29490 "src/ocaml/preprocess/parser_raw.ml" in let _1 = let _1 = let xs = # 253 "" ( List.rev xs ) -# 29063 "src/ocaml/preprocess/parser_raw.ml" +# 29497 "src/ocaml/preprocess/parser_raw.ml" in -# 1098 "src/ocaml/preprocess/parser_raw.mly" +# 1164 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 29068 "src/ocaml/preprocess/parser_raw.ml" +# 29502 "src/ocaml/preprocess/parser_raw.ml" in -# 3466 "src/ocaml/preprocess/parser_raw.mly" +# 3617 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29074 "src/ocaml/preprocess/parser_raw.ml" +# 29508 "src/ocaml/preprocess/parser_raw.ml" in -# 3470 "src/ocaml/preprocess/parser_raw.mly" +# 3621 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_poly(_1, _3) ) -# 29080 "src/ocaml/preprocess/parser_raw.ml" +# 29514 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_xs_ in @@ -29084,15 +29518,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 29090 "src/ocaml/preprocess/parser_raw.ml" +# 29524 "src/ocaml/preprocess/parser_raw.ml" in -# 3476 "src/ocaml/preprocess/parser_raw.mly" +# 3627 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29096 "src/ocaml/preprocess/parser_raw.ml" +# 29530 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29139,9 +29573,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4042 "src/ocaml/preprocess/parser_raw.mly" - ( Attr.mk ~loc:(make_loc _sloc) _2 _3 ) -# 29145 "src/ocaml/preprocess/parser_raw.ml" +# 4249 "src/ocaml/preprocess/parser_raw.mly" + ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) +# 29579 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29222,9 +29656,9 @@ module Tables = struct let _v : (Parsetree.value_description * string Location.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29228 "src/ocaml/preprocess/parser_raw.ml" +# 29662 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -29234,30 +29668,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 29240 "src/ocaml/preprocess/parser_raw.ml" +# 29674 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29248 "src/ocaml/preprocess/parser_raw.ml" +# 29682 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3100 "src/ocaml/preprocess/parser_raw.mly" +# 3251 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Val.mk id ty ~prim ~attrs ~loc ~docs, ext ) -# 29261 "src/ocaml/preprocess/parser_raw.ml" +# 29695 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29273,14 +29707,14 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.private_flag) = let _1 = -# 3910 "src/ocaml/preprocess/parser_raw.mly" +# 4117 "src/ocaml/preprocess/parser_raw.mly" ( Public ) -# 29279 "src/ocaml/preprocess/parser_raw.ml" +# 29713 "src/ocaml/preprocess/parser_raw.ml" in -# 3907 "src/ocaml/preprocess/parser_raw.mly" +# 4114 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29284 "src/ocaml/preprocess/parser_raw.ml" +# 29718 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29303,14 +29737,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = let _1 = -# 3911 "src/ocaml/preprocess/parser_raw.mly" +# 4118 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 29309 "src/ocaml/preprocess/parser_raw.ml" +# 29743 "src/ocaml/preprocess/parser_raw.ml" in -# 3907 "src/ocaml/preprocess/parser_raw.mly" +# 4114 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29314 "src/ocaml/preprocess/parser_raw.ml" +# 29748 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29326,9 +29760,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 3933 "src/ocaml/preprocess/parser_raw.mly" +# 4140 "src/ocaml/preprocess/parser_raw.mly" ( Public, Concrete ) -# 29332 "src/ocaml/preprocess/parser_raw.ml" +# 29766 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29351,9 +29785,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 3934 "src/ocaml/preprocess/parser_raw.mly" +# 4141 "src/ocaml/preprocess/parser_raw.mly" ( Private, Concrete ) -# 29357 "src/ocaml/preprocess/parser_raw.ml" +# 29791 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29376,9 +29810,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 3935 "src/ocaml/preprocess/parser_raw.mly" +# 4142 "src/ocaml/preprocess/parser_raw.mly" ( Public, Virtual ) -# 29382 "src/ocaml/preprocess/parser_raw.ml" +# 29816 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29408,9 +29842,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 3936 "src/ocaml/preprocess/parser_raw.mly" +# 4143 "src/ocaml/preprocess/parser_raw.mly" ( Private, Virtual ) -# 29414 "src/ocaml/preprocess/parser_raw.ml" +# 29848 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29440,9 +29874,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 3937 "src/ocaml/preprocess/parser_raw.mly" +# 4144 "src/ocaml/preprocess/parser_raw.mly" ( Private, Virtual ) -# 29446 "src/ocaml/preprocess/parser_raw.ml" +# 29880 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29458,9 +29892,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.rec_flag) = -# 3888 "src/ocaml/preprocess/parser_raw.mly" +# 4095 "src/ocaml/preprocess/parser_raw.mly" ( Nonrecursive ) -# 29464 "src/ocaml/preprocess/parser_raw.ml" +# 29898 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29483,9 +29917,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.rec_flag) = -# 3889 "src/ocaml/preprocess/parser_raw.mly" +# 4096 "src/ocaml/preprocess/parser_raw.mly" ( Recursive ) -# 29489 "src/ocaml/preprocess/parser_raw.ml" +# 29923 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29511,12 +29945,12 @@ module Tables = struct (Longident.t Location.loc * Parsetree.expression) list) = let eo = # 124 "" ( None ) -# 29515 "src/ocaml/preprocess/parser_raw.ml" +# 29949 "src/ocaml/preprocess/parser_raw.ml" in -# 2835 "src/ocaml/preprocess/parser_raw.mly" +# 2986 "src/ocaml/preprocess/parser_raw.mly" ( eo, fields ) -# 29520 "src/ocaml/preprocess/parser_raw.ml" +# 29954 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29557,18 +29991,18 @@ module Tables = struct let x = # 191 "" ( x ) -# 29561 "src/ocaml/preprocess/parser_raw.ml" +# 29995 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 29566 "src/ocaml/preprocess/parser_raw.ml" +# 30000 "src/ocaml/preprocess/parser_raw.ml" in -# 2835 "src/ocaml/preprocess/parser_raw.mly" +# 2986 "src/ocaml/preprocess/parser_raw.mly" ( eo, fields ) -# 29572 "src/ocaml/preprocess/parser_raw.ml" +# 30006 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29593,17 +30027,17 @@ module Tables = struct let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.constructor_declaration list) = let x = -# 3287 "src/ocaml/preprocess/parser_raw.mly" +# 3438 "src/ocaml/preprocess/parser_raw.mly" ( let cid, vars, args, res, attrs, loc, info = d in Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info ) -# 29602 "src/ocaml/preprocess/parser_raw.ml" +# 30036 "src/ocaml/preprocess/parser_raw.ml" in -# 1208 "src/ocaml/preprocess/parser_raw.mly" +# 1295 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 29607 "src/ocaml/preprocess/parser_raw.ml" +# 30041 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29628,17 +30062,17 @@ module Tables = struct let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.constructor_declaration list) = let x = -# 3287 "src/ocaml/preprocess/parser_raw.mly" +# 3438 "src/ocaml/preprocess/parser_raw.mly" ( let cid, vars, args, res, attrs, loc, info = d in Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info ) -# 29637 "src/ocaml/preprocess/parser_raw.ml" +# 30071 "src/ocaml/preprocess/parser_raw.ml" in -# 1211 "src/ocaml/preprocess/parser_raw.mly" +# 1298 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 29642 "src/ocaml/preprocess/parser_raw.ml" +# 30076 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29670,17 +30104,17 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_d_ in let _v : (Parsetree.constructor_declaration list) = let x = -# 3287 "src/ocaml/preprocess/parser_raw.mly" +# 3438 "src/ocaml/preprocess/parser_raw.mly" ( let cid, vars, args, res, attrs, loc, info = d in Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info ) -# 29679 "src/ocaml/preprocess/parser_raw.ml" +# 30113 "src/ocaml/preprocess/parser_raw.ml" in -# 1215 "src/ocaml/preprocess/parser_raw.mly" +# 1302 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 29684 "src/ocaml/preprocess/parser_raw.ml" +# 30118 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29706,23 +30140,23 @@ module Tables = struct let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = let _1 = -# 3404 "src/ocaml/preprocess/parser_raw.mly" +# 3555 "src/ocaml/preprocess/parser_raw.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 29715 "src/ocaml/preprocess/parser_raw.ml" +# 30149 "src/ocaml/preprocess/parser_raw.ml" in -# 3398 "src/ocaml/preprocess/parser_raw.mly" +# 3549 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29720 "src/ocaml/preprocess/parser_raw.ml" +# 30154 "src/ocaml/preprocess/parser_raw.ml" in -# 1208 "src/ocaml/preprocess/parser_raw.mly" +# 1295 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 29726 "src/ocaml/preprocess/parser_raw.ml" +# 30160 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29745,14 +30179,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3400 "src/ocaml/preprocess/parser_raw.mly" +# 3551 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29751 "src/ocaml/preprocess/parser_raw.ml" +# 30185 "src/ocaml/preprocess/parser_raw.ml" in -# 1208 "src/ocaml/preprocess/parser_raw.mly" +# 1295 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 29756 "src/ocaml/preprocess/parser_raw.ml" +# 30190 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29778,23 +30212,23 @@ module Tables = struct let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = let _1 = -# 3404 "src/ocaml/preprocess/parser_raw.mly" +# 3555 "src/ocaml/preprocess/parser_raw.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 29787 "src/ocaml/preprocess/parser_raw.ml" +# 30221 "src/ocaml/preprocess/parser_raw.ml" in -# 3398 "src/ocaml/preprocess/parser_raw.mly" +# 3549 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29792 "src/ocaml/preprocess/parser_raw.ml" +# 30226 "src/ocaml/preprocess/parser_raw.ml" in -# 1211 "src/ocaml/preprocess/parser_raw.mly" +# 1298 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 29798 "src/ocaml/preprocess/parser_raw.ml" +# 30232 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29817,14 +30251,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3400 "src/ocaml/preprocess/parser_raw.mly" +# 3551 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29823 "src/ocaml/preprocess/parser_raw.ml" +# 30257 "src/ocaml/preprocess/parser_raw.ml" in -# 1211 "src/ocaml/preprocess/parser_raw.mly" +# 1298 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 29828 "src/ocaml/preprocess/parser_raw.ml" +# 30262 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29857,23 +30291,23 @@ module Tables = struct let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = let _1 = -# 3404 "src/ocaml/preprocess/parser_raw.mly" +# 3555 "src/ocaml/preprocess/parser_raw.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 29866 "src/ocaml/preprocess/parser_raw.ml" +# 30300 "src/ocaml/preprocess/parser_raw.ml" in -# 3398 "src/ocaml/preprocess/parser_raw.mly" +# 3549 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29871 "src/ocaml/preprocess/parser_raw.ml" +# 30305 "src/ocaml/preprocess/parser_raw.ml" in -# 1215 "src/ocaml/preprocess/parser_raw.mly" +# 1302 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 29877 "src/ocaml/preprocess/parser_raw.ml" +# 30311 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29903,14 +30337,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos__1_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3400 "src/ocaml/preprocess/parser_raw.mly" +# 3551 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 29909 "src/ocaml/preprocess/parser_raw.ml" +# 30343 "src/ocaml/preprocess/parser_raw.ml" in -# 1215 "src/ocaml/preprocess/parser_raw.mly" +# 1302 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 29914 "src/ocaml/preprocess/parser_raw.ml" +# 30348 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29935,17 +30369,17 @@ module Tables = struct let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3404 "src/ocaml/preprocess/parser_raw.mly" +# 3555 "src/ocaml/preprocess/parser_raw.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 29944 "src/ocaml/preprocess/parser_raw.ml" +# 30378 "src/ocaml/preprocess/parser_raw.ml" in -# 1208 "src/ocaml/preprocess/parser_raw.mly" +# 1295 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 29949 "src/ocaml/preprocess/parser_raw.ml" +# 30383 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29970,17 +30404,17 @@ module Tables = struct let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3404 "src/ocaml/preprocess/parser_raw.mly" +# 3555 "src/ocaml/preprocess/parser_raw.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 29979 "src/ocaml/preprocess/parser_raw.ml" +# 30413 "src/ocaml/preprocess/parser_raw.ml" in -# 1211 "src/ocaml/preprocess/parser_raw.mly" +# 1298 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 29984 "src/ocaml/preprocess/parser_raw.ml" +# 30418 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30012,17 +30446,17 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3404 "src/ocaml/preprocess/parser_raw.mly" +# 3555 "src/ocaml/preprocess/parser_raw.mly" ( let cid, vars, args, res, attrs, loc, info = d in Te.decl cid ~vars ~args ?res ~attrs ~loc ~info ) -# 30021 "src/ocaml/preprocess/parser_raw.ml" +# 30455 "src/ocaml/preprocess/parser_raw.ml" in -# 1215 "src/ocaml/preprocess/parser_raw.mly" +# 1302 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30026 "src/ocaml/preprocess/parser_raw.ml" +# 30460 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30038,9 +30472,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : ((Parsetree.core_type * Parsetree.core_type * Location.t) list) = -# 1074 "src/ocaml/preprocess/parser_raw.mly" +# 1140 "src/ocaml/preprocess/parser_raw.mly" ( [] ) -# 30044 "src/ocaml/preprocess/parser_raw.ml" +# 30478 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30097,21 +30531,78 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2247 "src/ocaml/preprocess/parser_raw.mly" +# 2334 "src/ocaml/preprocess/parser_raw.mly" ( _1, _3, make_loc _sloc ) -# 30103 "src/ocaml/preprocess/parser_raw.ml" +# 30537 "src/ocaml/preprocess/parser_raw.ml" in # 183 "" ( x ) -# 30109 "src/ocaml/preprocess/parser_raw.ml" +# 30543 "src/ocaml/preprocess/parser_raw.ml" in -# 1076 "src/ocaml/preprocess/parser_raw.mly" +# 1142 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30115 "src/ocaml/preprocess/parser_raw.ml" +# 30549 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let x : (Parsetree.function_param list) = Obj.magic x in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_x_ in + let _endpos = _endpos_x_ in + let _v : (Parsetree.function_param list) = +# 1173 "src/ocaml/preprocess/parser_raw.mly" + ( List.rev x ) +# 30574 "src/ocaml/preprocess/parser_raw.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let x : (Parsetree.function_param list) = Obj.magic x in + let xs : (Parsetree.function_param list) = Obj.magic xs in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_xs_ in + let _endpos = _endpos_x_ in + let _v : (Parsetree.function_param list) = +# 1175 "src/ocaml/preprocess/parser_raw.mly" + ( List.rev_append x xs ) +# 30606 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30134,9 +30625,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1088 "src/ocaml/preprocess/parser_raw.mly" +# 1154 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 30140 "src/ocaml/preprocess/parser_raw.ml" +# 30631 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30166,9 +30657,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1090 "src/ocaml/preprocess/parser_raw.mly" +# 1156 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30172 "src/ocaml/preprocess/parser_raw.ml" +# 30663 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30191,9 +30682,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Asttypes.arg_label * Parsetree.expression) list) = -# 1088 "src/ocaml/preprocess/parser_raw.mly" +# 1154 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 30197 "src/ocaml/preprocess/parser_raw.ml" +# 30688 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30223,9 +30714,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Asttypes.arg_label * Parsetree.expression) list) = -# 1090 "src/ocaml/preprocess/parser_raw.mly" +# 1156 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30229 "src/ocaml/preprocess/parser_raw.ml" +# 30720 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30248,9 +30739,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (string list) = -# 1088 "src/ocaml/preprocess/parser_raw.mly" +# 1154 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 30254 "src/ocaml/preprocess/parser_raw.ml" +# 30745 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30280,9 +30771,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (string list) = -# 1090 "src/ocaml/preprocess/parser_raw.mly" +# 1156 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30286 "src/ocaml/preprocess/parser_raw.ml" +# 30777 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30295,9 +30786,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -30306,33 +30797,25 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _1_inlined1 : (string) = Obj.magic _1_inlined1 in + let _2 : (string) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined1_ in + let _endpos = _endpos__2_ in let _v : (string Location.loc list) = let x = - let _2 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 996 "src/ocaml/preprocess/parser_raw.mly" - ( mkrhs _1 _sloc ) -# 30324 "src/ocaml/preprocess/parser_raw.ml" - - in + let _endpos = _endpos__2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 3462 "src/ocaml/preprocess/parser_raw.mly" - ( _2 ) -# 30330 "src/ocaml/preprocess/parser_raw.ml" +# 3613 "src/ocaml/preprocess/parser_raw.mly" + ( mkrhs _2 _sloc ) +# 30813 "src/ocaml/preprocess/parser_raw.ml" in -# 1088 "src/ocaml/preprocess/parser_raw.mly" +# 1154 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 30336 "src/ocaml/preprocess/parser_raw.ml" +# 30819 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30345,9 +30828,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1; @@ -30362,34 +30845,26 @@ module Tables = struct }; }; } = _menhir_stack in - let _1_inlined1 : (string) = Obj.magic _1_inlined1 in + let _2 : (string) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let xs : (string Location.loc list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_xs_ in - let _endpos = _endpos__1_inlined1_ in + let _endpos = _endpos__2_ in let _v : (string Location.loc list) = let x = - let _2 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 996 "src/ocaml/preprocess/parser_raw.mly" - ( mkrhs _1 _sloc ) -# 30381 "src/ocaml/preprocess/parser_raw.ml" - - in + let _endpos = _endpos__2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 3462 "src/ocaml/preprocess/parser_raw.mly" - ( _2 ) -# 30387 "src/ocaml/preprocess/parser_raw.ml" +# 3613 "src/ocaml/preprocess/parser_raw.mly" + ( mkrhs _2 _sloc ) +# 30862 "src/ocaml/preprocess/parser_raw.ml" in -# 1090 "src/ocaml/preprocess/parser_raw.mly" +# 1156 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30393 "src/ocaml/preprocess/parser_raw.ml" +# 30868 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30414,12 +30889,12 @@ module Tables = struct let _v : (Parsetree.case list) = let _1 = # 124 "" ( None ) -# 30418 "src/ocaml/preprocess/parser_raw.ml" +# 30893 "src/ocaml/preprocess/parser_raw.ml" in -# 1179 "src/ocaml/preprocess/parser_raw.mly" +# 1266 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 30423 "src/ocaml/preprocess/parser_raw.ml" +# 30898 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30453,13 +30928,13 @@ module Tables = struct # 126 "" ( Some x ) -# 30457 "src/ocaml/preprocess/parser_raw.ml" +# 30932 "src/ocaml/preprocess/parser_raw.ml" in -# 1179 "src/ocaml/preprocess/parser_raw.mly" +# 1266 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 30463 "src/ocaml/preprocess/parser_raw.ml" +# 30938 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30496,9 +30971,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.case list) = -# 1183 "src/ocaml/preprocess/parser_raw.mly" +# 1270 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30502 "src/ocaml/preprocess/parser_raw.ml" +# 30977 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30522,20 +30997,20 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type list) = let xs = let x = -# 3505 "src/ocaml/preprocess/parser_raw.mly" +# 3656 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 30528 "src/ocaml/preprocess/parser_raw.ml" +# 31003 "src/ocaml/preprocess/parser_raw.ml" in -# 1114 "src/ocaml/preprocess/parser_raw.mly" +# 1201 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 30533 "src/ocaml/preprocess/parser_raw.ml" +# 31008 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30539 "src/ocaml/preprocess/parser_raw.ml" +# 31014 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30573,20 +31048,20 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type list) = let xs = let x = -# 3505 "src/ocaml/preprocess/parser_raw.mly" +# 3656 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 30579 "src/ocaml/preprocess/parser_raw.ml" +# 31054 "src/ocaml/preprocess/parser_raw.ml" in -# 1118 "src/ocaml/preprocess/parser_raw.mly" +# 1205 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30584 "src/ocaml/preprocess/parser_raw.ml" +# 31059 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30590 "src/ocaml/preprocess/parser_raw.ml" +# 31065 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30609,14 +31084,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.with_constraint list) = let xs = -# 1114 "src/ocaml/preprocess/parser_raw.mly" +# 1201 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 30615 "src/ocaml/preprocess/parser_raw.ml" +# 31090 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30620 "src/ocaml/preprocess/parser_raw.ml" +# 31095 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30653,14 +31128,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.with_constraint list) = let xs = -# 1118 "src/ocaml/preprocess/parser_raw.mly" +# 1205 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30659 "src/ocaml/preprocess/parser_raw.ml" +# 31134 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30664 "src/ocaml/preprocess/parser_raw.ml" +# 31139 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30683,14 +31158,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.row_field list) = let xs = -# 1114 "src/ocaml/preprocess/parser_raw.mly" +# 1201 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 30689 "src/ocaml/preprocess/parser_raw.ml" +# 31164 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30694 "src/ocaml/preprocess/parser_raw.ml" +# 31169 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30727,14 +31202,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.row_field list) = let xs = -# 1118 "src/ocaml/preprocess/parser_raw.mly" +# 1205 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30733 "src/ocaml/preprocess/parser_raw.ml" +# 31208 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30738 "src/ocaml/preprocess/parser_raw.ml" +# 31213 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30757,14 +31232,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = let xs = -# 1114 "src/ocaml/preprocess/parser_raw.mly" +# 1201 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 30763 "src/ocaml/preprocess/parser_raw.ml" +# 31238 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30768 "src/ocaml/preprocess/parser_raw.ml" +# 31243 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30801,14 +31276,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = let xs = -# 1118 "src/ocaml/preprocess/parser_raw.mly" +# 1205 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30807 "src/ocaml/preprocess/parser_raw.ml" +# 31282 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30812 "src/ocaml/preprocess/parser_raw.ml" +# 31287 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30831,14 +31306,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let xs = -# 1114 "src/ocaml/preprocess/parser_raw.mly" +# 1201 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 30837 "src/ocaml/preprocess/parser_raw.ml" +# 31312 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30842 "src/ocaml/preprocess/parser_raw.ml" +# 31317 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30875,14 +31350,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let xs = -# 1118 "src/ocaml/preprocess/parser_raw.mly" +# 1205 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30881 "src/ocaml/preprocess/parser_raw.ml" +# 31356 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30886 "src/ocaml/preprocess/parser_raw.ml" +# 31361 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30905,14 +31380,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = let xs = -# 1114 "src/ocaml/preprocess/parser_raw.mly" +# 1201 "src/ocaml/preprocess/parser_raw.mly" ( [ x ] ) -# 30911 "src/ocaml/preprocess/parser_raw.ml" +# 31386 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30916 "src/ocaml/preprocess/parser_raw.ml" +# 31391 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30949,14 +31424,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = let xs = -# 1118 "src/ocaml/preprocess/parser_raw.mly" +# 1205 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30955 "src/ocaml/preprocess/parser_raw.ml" +# 31430 "src/ocaml/preprocess/parser_raw.ml" in -# 1122 "src/ocaml/preprocess/parser_raw.mly" +# 1209 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 30960 "src/ocaml/preprocess/parser_raw.ml" +# 31435 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30993,9 +31468,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = -# 1145 "src/ocaml/preprocess/parser_raw.mly" +# 1232 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 30999 "src/ocaml/preprocess/parser_raw.ml" +# 31474 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31032,9 +31507,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.core_type list) = -# 1149 "src/ocaml/preprocess/parser_raw.mly" +# 1236 "src/ocaml/preprocess/parser_raw.mly" ( [ x2; x1 ] ) -# 31038 "src/ocaml/preprocess/parser_raw.ml" +# 31513 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31071,9 +31546,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.expression list) = -# 1145 "src/ocaml/preprocess/parser_raw.mly" +# 1232 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 31077 "src/ocaml/preprocess/parser_raw.ml" +# 31552 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31110,9 +31585,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.expression list) = -# 1149 "src/ocaml/preprocess/parser_raw.mly" +# 1236 "src/ocaml/preprocess/parser_raw.mly" ( [ x2; x1 ] ) -# 31116 "src/ocaml/preprocess/parser_raw.ml" +# 31591 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31149,9 +31624,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = -# 1145 "src/ocaml/preprocess/parser_raw.mly" +# 1232 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 31155 "src/ocaml/preprocess/parser_raw.ml" +# 31630 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31188,9 +31663,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.core_type list) = -# 1149 "src/ocaml/preprocess/parser_raw.mly" +# 1236 "src/ocaml/preprocess/parser_raw.mly" ( [ x2; x1 ] ) -# 31194 "src/ocaml/preprocess/parser_raw.ml" +# 31669 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31213,9 +31688,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.row_field) = -# 3645 "src/ocaml/preprocess/parser_raw.mly" +# 3852 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 31219 "src/ocaml/preprocess/parser_raw.ml" +# 31694 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31241,9 +31716,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3647 "src/ocaml/preprocess/parser_raw.mly" +# 3854 "src/ocaml/preprocess/parser_raw.mly" ( Rf.inherit_ ~loc:(make_loc _sloc) _1 ) -# 31247 "src/ocaml/preprocess/parser_raw.ml" +# 31722 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31268,12 +31743,12 @@ module Tables = struct let _v : (Parsetree.expression list) = let _2 = # 124 "" ( None ) -# 31272 "src/ocaml/preprocess/parser_raw.ml" +# 31747 "src/ocaml/preprocess/parser_raw.ml" in -# 1166 "src/ocaml/preprocess/parser_raw.mly" +# 1253 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 31277 "src/ocaml/preprocess/parser_raw.ml" +# 31752 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31307,13 +31782,13 @@ module Tables = struct # 126 "" ( Some x ) -# 31311 "src/ocaml/preprocess/parser_raw.ml" +# 31786 "src/ocaml/preprocess/parser_raw.ml" in -# 1166 "src/ocaml/preprocess/parser_raw.mly" +# 1253 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 31317 "src/ocaml/preprocess/parser_raw.ml" +# 31792 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31350,9 +31825,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.expression list) = -# 1170 "src/ocaml/preprocess/parser_raw.mly" +# 1257 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 31356 "src/ocaml/preprocess/parser_raw.ml" +# 31831 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31378,9 +31853,9 @@ module Tables = struct } = _menhir_stack in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 31384 "src/ocaml/preprocess/parser_raw.ml" +# 31859 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -31388,26 +31863,26 @@ module Tables = struct let _v : ((string Location.loc * Parsetree.expression) list) = let _2 = # 124 "" ( None ) -# 31392 "src/ocaml/preprocess/parser_raw.ml" +# 31867 "src/ocaml/preprocess/parser_raw.ml" in let x = let label = let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 31399 "src/ocaml/preprocess/parser_raw.ml" +# 31874 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 31407 "src/ocaml/preprocess/parser_raw.ml" +# 31882 "src/ocaml/preprocess/parser_raw.ml" in -# 2858 "src/ocaml/preprocess/parser_raw.mly" +# 3009 "src/ocaml/preprocess/parser_raw.mly" ( let label, e = match oe with | None -> @@ -31417,13 +31892,13 @@ module Tables = struct label, e in label, e ) -# 31421 "src/ocaml/preprocess/parser_raw.ml" +# 31896 "src/ocaml/preprocess/parser_raw.ml" in -# 1166 "src/ocaml/preprocess/parser_raw.mly" +# 1253 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 31427 "src/ocaml/preprocess/parser_raw.ml" +# 31902 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31456,9 +31931,9 @@ module Tables = struct let x : unit = Obj.magic x in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 31462 "src/ocaml/preprocess/parser_raw.ml" +# 31937 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -31466,26 +31941,26 @@ module Tables = struct let _v : ((string Location.loc * Parsetree.expression) list) = let _2 = # 126 "" ( Some x ) -# 31470 "src/ocaml/preprocess/parser_raw.ml" +# 31945 "src/ocaml/preprocess/parser_raw.ml" in let x = let label = let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 31477 "src/ocaml/preprocess/parser_raw.ml" +# 31952 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 31485 "src/ocaml/preprocess/parser_raw.ml" +# 31960 "src/ocaml/preprocess/parser_raw.ml" in -# 2858 "src/ocaml/preprocess/parser_raw.mly" +# 3009 "src/ocaml/preprocess/parser_raw.mly" ( let label, e = match oe with | None -> @@ -31495,13 +31970,13 @@ module Tables = struct label, e in label, e ) -# 31499 "src/ocaml/preprocess/parser_raw.ml" +# 31974 "src/ocaml/preprocess/parser_raw.ml" in -# 1166 "src/ocaml/preprocess/parser_raw.mly" +# 1253 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 31505 "src/ocaml/preprocess/parser_raw.ml" +# 31980 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31541,9 +32016,9 @@ module Tables = struct let _2 : unit = Obj.magic _2 in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 31547 "src/ocaml/preprocess/parser_raw.ml" +# 32022 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -31551,21 +32026,21 @@ module Tables = struct let _v : ((string Location.loc * Parsetree.expression) list) = let x = let label = let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 31557 "src/ocaml/preprocess/parser_raw.ml" +# 32032 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 31565 "src/ocaml/preprocess/parser_raw.ml" +# 32040 "src/ocaml/preprocess/parser_raw.ml" in -# 2858 "src/ocaml/preprocess/parser_raw.mly" +# 3009 "src/ocaml/preprocess/parser_raw.mly" ( let label, e = match oe with | None -> @@ -31575,13 +32050,13 @@ module Tables = struct label, e in label, e ) -# 31579 "src/ocaml/preprocess/parser_raw.ml" +# 32054 "src/ocaml/preprocess/parser_raw.ml" in -# 1170 "src/ocaml/preprocess/parser_raw.mly" +# 1257 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 31585 "src/ocaml/preprocess/parser_raw.ml" +# 32060 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31606,12 +32081,12 @@ module Tables = struct let _v : (Parsetree.pattern list) = let _2 = # 124 "" ( None ) -# 31610 "src/ocaml/preprocess/parser_raw.ml" +# 32085 "src/ocaml/preprocess/parser_raw.ml" in -# 1166 "src/ocaml/preprocess/parser_raw.mly" +# 1253 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 31615 "src/ocaml/preprocess/parser_raw.ml" +# 32090 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31645,13 +32120,13 @@ module Tables = struct # 126 "" ( Some x ) -# 31649 "src/ocaml/preprocess/parser_raw.ml" +# 32124 "src/ocaml/preprocess/parser_raw.ml" in -# 1166 "src/ocaml/preprocess/parser_raw.mly" +# 1253 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 31655 "src/ocaml/preprocess/parser_raw.ml" +# 32130 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31688,9 +32163,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.pattern list) = -# 1170 "src/ocaml/preprocess/parser_raw.mly" +# 1257 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 31694 "src/ocaml/preprocess/parser_raw.ml" +# 32169 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31721,7 +32196,7 @@ module Tables = struct }; } = _menhir_stack in let eo : (Parsetree.expression option) = Obj.magic eo in - let c : ((Parsetree.core_type option * Parsetree.core_type option) option) = Obj.magic c in + let c : (Parsetree.type_constraint option) = Obj.magic c in let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -31729,7 +32204,7 @@ module Tables = struct let _v : ((Longident.t Location.loc * Parsetree.expression) list) = let _2 = # 124 "" ( None ) -# 31733 "src/ocaml/preprocess/parser_raw.ml" +# 32208 "src/ocaml/preprocess/parser_raw.ml" in let x = let label = @@ -31737,9 +32212,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 31743 "src/ocaml/preprocess/parser_raw.ml" +# 32218 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_label_ = _startpos__1_ in @@ -31747,7 +32222,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 2841 "src/ocaml/preprocess/parser_raw.mly" +# 2992 "src/ocaml/preprocess/parser_raw.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -31757,13 +32232,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 31761 "src/ocaml/preprocess/parser_raw.ml" +# 32236 "src/ocaml/preprocess/parser_raw.ml" in -# 1166 "src/ocaml/preprocess/parser_raw.mly" +# 1253 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 31767 "src/ocaml/preprocess/parser_raw.ml" +# 32242 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31801,7 +32276,7 @@ module Tables = struct } = _menhir_stack in let x : unit = Obj.magic x in let eo : (Parsetree.expression option) = Obj.magic eo in - let c : ((Parsetree.core_type option * Parsetree.core_type option) option) = Obj.magic c in + let c : (Parsetree.type_constraint option) = Obj.magic c in let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -31809,7 +32284,7 @@ module Tables = struct let _v : ((Longident.t Location.loc * Parsetree.expression) list) = let _2 = # 126 "" ( Some x ) -# 31813 "src/ocaml/preprocess/parser_raw.ml" +# 32288 "src/ocaml/preprocess/parser_raw.ml" in let x = let label = @@ -31817,9 +32292,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 31823 "src/ocaml/preprocess/parser_raw.ml" +# 32298 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_label_ = _startpos__1_ in @@ -31827,7 +32302,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 2841 "src/ocaml/preprocess/parser_raw.mly" +# 2992 "src/ocaml/preprocess/parser_raw.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -31837,13 +32312,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 31841 "src/ocaml/preprocess/parser_raw.ml" +# 32316 "src/ocaml/preprocess/parser_raw.ml" in -# 1166 "src/ocaml/preprocess/parser_raw.mly" +# 1253 "src/ocaml/preprocess/parser_raw.mly" ( [x] ) -# 31847 "src/ocaml/preprocess/parser_raw.ml" +# 32322 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31888,7 +32363,7 @@ module Tables = struct let xs : ((Longident.t Location.loc * Parsetree.expression) list) = Obj.magic xs in let _2 : unit = Obj.magic _2 in let eo : (Parsetree.expression option) = Obj.magic eo in - let c : ((Parsetree.core_type option * Parsetree.core_type option) option) = Obj.magic c in + let c : (Parsetree.type_constraint option) = Obj.magic c in let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -31899,9 +32374,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 31905 "src/ocaml/preprocess/parser_raw.ml" +# 32380 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_label_ = _startpos__1_ in @@ -31909,7 +32384,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 2841 "src/ocaml/preprocess/parser_raw.mly" +# 2992 "src/ocaml/preprocess/parser_raw.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -31919,13 +32394,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 31923 "src/ocaml/preprocess/parser_raw.ml" +# 32398 "src/ocaml/preprocess/parser_raw.ml" in -# 1170 "src/ocaml/preprocess/parser_raw.mly" +# 1257 "src/ocaml/preprocess/parser_raw.mly" ( x :: xs ) -# 31929 "src/ocaml/preprocess/parser_raw.ml" +# 32404 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31947,42 +32422,15 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (Parsetree.expression) = -# 2336 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 31954 "src/ocaml/preprocess/parser_raw.ml" + let _v : (Parsetree.expression) = let _1 = +# 2424 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 32429 "src/ocaml/preprocess/parser_raw.ml" in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.expression) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.expression) = -# 2337 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 31986 "src/ocaml/preprocess/parser_raw.ml" + +# 2462 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 32434 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31995,107 +32443,97 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; } = _menhir_stack in - let _3 : (Parsetree.expression) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.expression) = Obj.magic _1 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Location.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos_xs_ in let _v : (Parsetree.expression) = let _1 = - let _1 = -# 2339 "src/ocaml/preprocess/parser_raw.mly" - ( Pexp_sequence(_1, _3) ) -# 32026 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in + let _3 = + let xs = + let xs = +# 253 "" + ( List.rev xs ) +# 32483 "src/ocaml/preprocess/parser_raw.ml" + in + +# 1278 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 32488 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 2928 "src/ocaml/preprocess/parser_raw.mly" + ( xs ) +# 32494 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4262 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 32505 "src/ocaml/preprocess/parser_raw.ml" + + in + +# 4275 "src/ocaml/preprocess/parser_raw.mly" + ( _1, _2 ) +# 32511 "src/ocaml/preprocess/parser_raw.ml" + + in + let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" - ( mkexp ~loc:_sloc _1 ) -# 32035 "src/ocaml/preprocess/parser_raw.ml" +# 2426 "src/ocaml/preprocess/parser_raw.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 32531 "src/ocaml/preprocess/parser_raw.ml" in -# 2340 "src/ocaml/preprocess/parser_raw.mly" - ( _1 ) -# 32041 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - } = _menhir_stack in - let _5 : (Parsetree.expression) = Obj.magic _5 in - let _4 : (string Location.loc) = Obj.magic _4 in - let _3 : unit = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.expression) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v : (Parsetree.expression) = let _endpos = _endpos__5_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2342 "src/ocaml/preprocess/parser_raw.mly" - ( let seq = mkexp ~loc:_sloc (Pexp_sequence (_1, _5)) in - let payload = PStr [mkstrexp seq []] in - mkexp ~loc:_sloc (Pexp_extension (_4, payload)) ) -# 32099 "src/ocaml/preprocess/parser_raw.ml" +# 2462 "src/ocaml/preprocess/parser_raw.mly" + ( _1 ) +# 32537 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32163,18 +32601,18 @@ module Tables = struct let _v : (Parsetree.type_exception * string Location.loc option) = let attrs = let _1 = _1_inlined4 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32169 "src/ocaml/preprocess/parser_raw.ml" +# 32607 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs_ = _endpos__1_inlined4_ in let attrs2 = let _1 = _1_inlined3 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32178 "src/ocaml/preprocess/parser_raw.ml" +# 32616 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -32184,17 +32622,17 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 32190 "src/ocaml/preprocess/parser_raw.ml" +# 32628 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32198 "src/ocaml/preprocess/parser_raw.ml" +# 32636 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs_ in @@ -32202,14 +32640,14 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3317 "src/ocaml/preprocess/parser_raw.mly" +# 3468 "src/ocaml/preprocess/parser_raw.mly" ( let vars, args, res = vars_args_res in let loc = make_loc (_startpos, _endpos_attrs2_) in let docs = symbol_docs _sloc in Te.mk_exception ~attrs (Te.decl id ~vars ~args ?res ~attrs:(attrs1 @ attrs2) ~loc ~docs) , ext ) -# 32213 "src/ocaml/preprocess/parser_raw.ml" +# 32651 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32235,21 +32673,21 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 32239 "src/ocaml/preprocess/parser_raw.ml" +# 32677 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 989 "src/ocaml/preprocess/parser_raw.mly" +# 1055 "src/ocaml/preprocess/parser_raw.mly" ( extra_sig _startpos _endpos _1 ) -# 32247 "src/ocaml/preprocess/parser_raw.ml" +# 32685 "src/ocaml/preprocess/parser_raw.ml" in -# 1771 "src/ocaml/preprocess/parser_raw.mly" +# 1858 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32253 "src/ocaml/preprocess/parser_raw.ml" +# 32691 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32281,9 +32719,9 @@ module Tables = struct let _v : (Parsetree.signature_item) = let _2 = let _1 = _1_inlined1 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32287 "src/ocaml/preprocess/parser_raw.ml" +# 32725 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -32291,10 +32729,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1786 "src/ocaml/preprocess/parser_raw.mly" +# 1873 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in mksig ~loc:_sloc (Psig_extension (_1, (add_docs_attrs docs _2))) ) -# 32298 "src/ocaml/preprocess/parser_raw.ml" +# 32736 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32318,23 +32756,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1790 "src/ocaml/preprocess/parser_raw.mly" +# 1877 "src/ocaml/preprocess/parser_raw.mly" ( Psig_attribute _1 ) -# 32324 "src/ocaml/preprocess/parser_raw.ml" +# 32762 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "src/ocaml/preprocess/parser_raw.mly" +# 1103 "src/ocaml/preprocess/parser_raw.mly" ( mksig ~loc:_sloc _1 ) -# 32332 "src/ocaml/preprocess/parser_raw.ml" +# 32770 "src/ocaml/preprocess/parser_raw.ml" in -# 1792 "src/ocaml/preprocess/parser_raw.mly" +# 1879 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32338 "src/ocaml/preprocess/parser_raw.ml" +# 32776 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32358,23 +32796,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1795 "src/ocaml/preprocess/parser_raw.mly" +# 1882 "src/ocaml/preprocess/parser_raw.mly" ( psig_value _1 ) -# 32364 "src/ocaml/preprocess/parser_raw.ml" +# 32802 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 32372 "src/ocaml/preprocess/parser_raw.ml" +# 32810 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32378 "src/ocaml/preprocess/parser_raw.ml" +# 32816 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32398,23 +32836,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1797 "src/ocaml/preprocess/parser_raw.mly" +# 1884 "src/ocaml/preprocess/parser_raw.mly" ( psig_value _1 ) -# 32404 "src/ocaml/preprocess/parser_raw.ml" +# 32842 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 32412 "src/ocaml/preprocess/parser_raw.ml" +# 32850 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32418 "src/ocaml/preprocess/parser_raw.ml" +# 32856 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32449,26 +32887,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1227 "src/ocaml/preprocess/parser_raw.mly" +# 1314 "src/ocaml/preprocess/parser_raw.mly" ( let (x, b) = a in x, b :: bs ) -# 32455 "src/ocaml/preprocess/parser_raw.ml" +# 32893 "src/ocaml/preprocess/parser_raw.ml" in -# 3136 "src/ocaml/preprocess/parser_raw.mly" +# 3287 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32460 "src/ocaml/preprocess/parser_raw.ml" +# 32898 "src/ocaml/preprocess/parser_raw.ml" in -# 3119 "src/ocaml/preprocess/parser_raw.mly" +# 3270 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32466 "src/ocaml/preprocess/parser_raw.ml" +# 32904 "src/ocaml/preprocess/parser_raw.ml" in -# 1799 "src/ocaml/preprocess/parser_raw.mly" +# 1886 "src/ocaml/preprocess/parser_raw.mly" ( psig_type _1 ) -# 32472 "src/ocaml/preprocess/parser_raw.ml" +# 32910 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -32476,15 +32914,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 32482 "src/ocaml/preprocess/parser_raw.ml" +# 32920 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32488 "src/ocaml/preprocess/parser_raw.ml" +# 32926 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32519,26 +32957,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1227 "src/ocaml/preprocess/parser_raw.mly" +# 1314 "src/ocaml/preprocess/parser_raw.mly" ( let (x, b) = a in x, b :: bs ) -# 32525 "src/ocaml/preprocess/parser_raw.ml" +# 32963 "src/ocaml/preprocess/parser_raw.ml" in -# 3136 "src/ocaml/preprocess/parser_raw.mly" +# 3287 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32530 "src/ocaml/preprocess/parser_raw.ml" +# 32968 "src/ocaml/preprocess/parser_raw.ml" in -# 3124 "src/ocaml/preprocess/parser_raw.mly" +# 3275 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32536 "src/ocaml/preprocess/parser_raw.ml" +# 32974 "src/ocaml/preprocess/parser_raw.ml" in -# 1801 "src/ocaml/preprocess/parser_raw.mly" +# 1888 "src/ocaml/preprocess/parser_raw.mly" ( psig_typesubst _1 ) -# 32542 "src/ocaml/preprocess/parser_raw.ml" +# 32980 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -32546,15 +32984,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 32552 "src/ocaml/preprocess/parser_raw.ml" +# 32990 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32558 "src/ocaml/preprocess/parser_raw.ml" +# 32996 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32639,16 +33077,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32645 "src/ocaml/preprocess/parser_raw.ml" +# 33083 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let cs = -# 1219 "src/ocaml/preprocess/parser_raw.mly" +# 1306 "src/ocaml/preprocess/parser_raw.mly" ( List.rev xs ) -# 32652 "src/ocaml/preprocess/parser_raw.ml" +# 33090 "src/ocaml/preprocess/parser_raw.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -32656,46 +33094,46 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 32662 "src/ocaml/preprocess/parser_raw.ml" +# 33100 "src/ocaml/preprocess/parser_raw.ml" in let _4 = -# 3896 "src/ocaml/preprocess/parser_raw.mly" +# 4103 "src/ocaml/preprocess/parser_raw.mly" ( Recursive ) -# 32668 "src/ocaml/preprocess/parser_raw.ml" +# 33106 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32675 "src/ocaml/preprocess/parser_raw.ml" +# 33113 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3391 "src/ocaml/preprocess/parser_raw.mly" +# 3542 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 32687 "src/ocaml/preprocess/parser_raw.ml" +# 33125 "src/ocaml/preprocess/parser_raw.ml" in -# 3378 "src/ocaml/preprocess/parser_raw.mly" +# 3529 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32693 "src/ocaml/preprocess/parser_raw.ml" +# 33131 "src/ocaml/preprocess/parser_raw.ml" in -# 1803 "src/ocaml/preprocess/parser_raw.mly" +# 1890 "src/ocaml/preprocess/parser_raw.mly" ( psig_typext _1 ) -# 32699 "src/ocaml/preprocess/parser_raw.ml" +# 33137 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -32703,15 +33141,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 32709 "src/ocaml/preprocess/parser_raw.ml" +# 33147 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32715 "src/ocaml/preprocess/parser_raw.ml" +# 33153 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32803,16 +33241,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32809 "src/ocaml/preprocess/parser_raw.ml" +# 33247 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in let cs = -# 1219 "src/ocaml/preprocess/parser_raw.mly" +# 1306 "src/ocaml/preprocess/parser_raw.mly" ( List.rev xs ) -# 32816 "src/ocaml/preprocess/parser_raw.ml" +# 33254 "src/ocaml/preprocess/parser_raw.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -32820,9 +33258,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 32826 "src/ocaml/preprocess/parser_raw.ml" +# 33264 "src/ocaml/preprocess/parser_raw.ml" in let _4 = @@ -32831,41 +33269,41 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 3898 "src/ocaml/preprocess/parser_raw.mly" +# 4105 "src/ocaml/preprocess/parser_raw.mly" ( not_expecting _loc "nonrec flag"; Recursive ) -# 32837 "src/ocaml/preprocess/parser_raw.ml" +# 33275 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32845 "src/ocaml/preprocess/parser_raw.ml" +# 33283 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3391 "src/ocaml/preprocess/parser_raw.mly" +# 3542 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 32857 "src/ocaml/preprocess/parser_raw.ml" +# 33295 "src/ocaml/preprocess/parser_raw.ml" in -# 3378 "src/ocaml/preprocess/parser_raw.mly" +# 3529 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32863 "src/ocaml/preprocess/parser_raw.ml" +# 33301 "src/ocaml/preprocess/parser_raw.ml" in -# 1803 "src/ocaml/preprocess/parser_raw.mly" +# 1890 "src/ocaml/preprocess/parser_raw.mly" ( psig_typext _1 ) -# 32869 "src/ocaml/preprocess/parser_raw.ml" +# 33307 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -32873,15 +33311,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 32879 "src/ocaml/preprocess/parser_raw.ml" +# 33317 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32885 "src/ocaml/preprocess/parser_raw.ml" +# 33323 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32905,23 +33343,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1805 "src/ocaml/preprocess/parser_raw.mly" +# 1892 "src/ocaml/preprocess/parser_raw.mly" ( psig_exception _1 ) -# 32911 "src/ocaml/preprocess/parser_raw.ml" +# 33349 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 32919 "src/ocaml/preprocess/parser_raw.ml" +# 33357 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32925 "src/ocaml/preprocess/parser_raw.ml" +# 33363 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32984,9 +33422,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 32990 "src/ocaml/preprocess/parser_raw.ml" +# 33428 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -32996,37 +33434,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 33002 "src/ocaml/preprocess/parser_raw.ml" +# 33440 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33010 "src/ocaml/preprocess/parser_raw.ml" +# 33448 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1836 "src/ocaml/preprocess/parser_raw.mly" +# 1923 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Md.mk name body ~attrs ~loc ~docs, ext ) -# 33024 "src/ocaml/preprocess/parser_raw.ml" +# 33462 "src/ocaml/preprocess/parser_raw.ml" in -# 1807 "src/ocaml/preprocess/parser_raw.mly" +# 1894 "src/ocaml/preprocess/parser_raw.mly" ( let (body, ext) = _1 in (Psig_module body, ext) ) -# 33030 "src/ocaml/preprocess/parser_raw.ml" +# 33468 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -33034,15 +33472,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 33040 "src/ocaml/preprocess/parser_raw.ml" +# 33478 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33046 "src/ocaml/preprocess/parser_raw.ml" +# 33484 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33112,9 +33550,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33118 "src/ocaml/preprocess/parser_raw.ml" +# 33556 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -33125,9 +33563,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 33131 "src/ocaml/preprocess/parser_raw.ml" +# 33569 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos_id_, _startpos_id_) = (_endpos__1_, _startpos__1_) in @@ -33135,9 +33573,9 @@ module Tables = struct let _symbolstartpos = _startpos_id_ in let _sloc = (_symbolstartpos, _endpos) in -# 1877 "src/ocaml/preprocess/parser_raw.mly" +# 1964 "src/ocaml/preprocess/parser_raw.mly" ( Mty.alias ~loc:(make_loc _sloc) id ) -# 33141 "src/ocaml/preprocess/parser_raw.ml" +# 33579 "src/ocaml/preprocess/parser_raw.ml" in let name = @@ -33146,37 +33584,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 33152 "src/ocaml/preprocess/parser_raw.ml" +# 33590 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33160 "src/ocaml/preprocess/parser_raw.ml" +# 33598 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1868 "src/ocaml/preprocess/parser_raw.mly" +# 1955 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Md.mk name body ~attrs ~loc ~docs, ext ) -# 33174 "src/ocaml/preprocess/parser_raw.ml" +# 33612 "src/ocaml/preprocess/parser_raw.ml" in -# 1809 "src/ocaml/preprocess/parser_raw.mly" +# 1896 "src/ocaml/preprocess/parser_raw.mly" ( let (body, ext) = _1 in (Psig_module body, ext) ) -# 33180 "src/ocaml/preprocess/parser_raw.ml" +# 33618 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -33184,15 +33622,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 33190 "src/ocaml/preprocess/parser_raw.ml" +# 33628 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33196 "src/ocaml/preprocess/parser_raw.ml" +# 33634 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33216,23 +33654,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1811 "src/ocaml/preprocess/parser_raw.mly" +# 1898 "src/ocaml/preprocess/parser_raw.mly" ( let (body, ext) = _1 in (Psig_modsubst body, ext) ) -# 33222 "src/ocaml/preprocess/parser_raw.ml" +# 33660 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 33230 "src/ocaml/preprocess/parser_raw.ml" +# 33668 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33236 "src/ocaml/preprocess/parser_raw.ml" +# 33674 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33318,9 +33756,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33324 "src/ocaml/preprocess/parser_raw.ml" +# 33762 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -33330,49 +33768,49 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 33336 "src/ocaml/preprocess/parser_raw.ml" +# 33774 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33344 "src/ocaml/preprocess/parser_raw.ml" +# 33782 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1913 "src/ocaml/preprocess/parser_raw.mly" +# 2000 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in ext, Md.mk name mty ~attrs ~loc ~docs ) -# 33358 "src/ocaml/preprocess/parser_raw.ml" +# 33796 "src/ocaml/preprocess/parser_raw.ml" in -# 1227 "src/ocaml/preprocess/parser_raw.mly" +# 1314 "src/ocaml/preprocess/parser_raw.mly" ( let (x, b) = a in x, b :: bs ) -# 33364 "src/ocaml/preprocess/parser_raw.ml" +# 33802 "src/ocaml/preprocess/parser_raw.ml" in -# 1902 "src/ocaml/preprocess/parser_raw.mly" +# 1989 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33370 "src/ocaml/preprocess/parser_raw.ml" +# 33808 "src/ocaml/preprocess/parser_raw.ml" in -# 1813 "src/ocaml/preprocess/parser_raw.mly" +# 1900 "src/ocaml/preprocess/parser_raw.mly" ( let (ext, l) = _1 in (Psig_recmodule l, ext) ) -# 33376 "src/ocaml/preprocess/parser_raw.ml" +# 33814 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_bs_ in @@ -33380,15 +33818,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 33386 "src/ocaml/preprocess/parser_raw.ml" +# 33824 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33392 "src/ocaml/preprocess/parser_raw.ml" +# 33830 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33412,23 +33850,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1815 "src/ocaml/preprocess/parser_raw.mly" +# 1902 "src/ocaml/preprocess/parser_raw.mly" ( let (body, ext) = _1 in (Psig_modtype body, ext) ) -# 33418 "src/ocaml/preprocess/parser_raw.ml" +# 33856 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 33426 "src/ocaml/preprocess/parser_raw.ml" +# 33864 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33432 "src/ocaml/preprocess/parser_raw.ml" +# 33870 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33452,23 +33890,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1817 "src/ocaml/preprocess/parser_raw.mly" +# 1904 "src/ocaml/preprocess/parser_raw.mly" ( let (body, ext) = _1 in (Psig_modtypesubst body, ext) ) -# 33458 "src/ocaml/preprocess/parser_raw.ml" +# 33896 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 33466 "src/ocaml/preprocess/parser_raw.ml" +# 33904 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33472 "src/ocaml/preprocess/parser_raw.ml" +# 33910 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33492,23 +33930,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1819 "src/ocaml/preprocess/parser_raw.mly" +# 1906 "src/ocaml/preprocess/parser_raw.mly" ( let (body, ext) = _1 in (Psig_open body, ext) ) -# 33498 "src/ocaml/preprocess/parser_raw.ml" +# 33936 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 33506 "src/ocaml/preprocess/parser_raw.ml" +# 33944 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33512 "src/ocaml/preprocess/parser_raw.ml" +# 33950 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33564,38 +34002,38 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33570 "src/ocaml/preprocess/parser_raw.ml" +# 34008 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33579 "src/ocaml/preprocess/parser_raw.ml" +# 34017 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1653 "src/ocaml/preprocess/parser_raw.mly" +# 1740 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Incl.mk thing ~attrs ~loc ~docs, ext ) -# 33593 "src/ocaml/preprocess/parser_raw.ml" +# 34031 "src/ocaml/preprocess/parser_raw.ml" in -# 1821 "src/ocaml/preprocess/parser_raw.mly" +# 1908 "src/ocaml/preprocess/parser_raw.mly" ( psig_include _1 ) -# 33599 "src/ocaml/preprocess/parser_raw.ml" +# 34037 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined2_ in @@ -33603,15 +34041,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 33609 "src/ocaml/preprocess/parser_raw.ml" +# 34047 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33615 "src/ocaml/preprocess/parser_raw.ml" +# 34053 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33688,9 +34126,9 @@ module Tables = struct let cty : (Parsetree.class_type) = Obj.magic cty in let _7 : unit = Obj.magic _7 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 33694 "src/ocaml/preprocess/parser_raw.ml" +# 34132 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -33708,9 +34146,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33714 "src/ocaml/preprocess/parser_raw.ml" +# 34152 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -33720,24 +34158,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 33726 "src/ocaml/preprocess/parser_raw.ml" +# 34164 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33734 "src/ocaml/preprocess/parser_raw.ml" +# 34172 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2268 "src/ocaml/preprocess/parser_raw.mly" +# 2355 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -33745,25 +34183,25 @@ module Tables = struct ext, Ci.mk id cty ~virt ~params ~attrs ~loc ~docs ) -# 33749 "src/ocaml/preprocess/parser_raw.ml" +# 34187 "src/ocaml/preprocess/parser_raw.ml" in -# 1227 "src/ocaml/preprocess/parser_raw.mly" +# 1314 "src/ocaml/preprocess/parser_raw.mly" ( let (x, b) = a in x, b :: bs ) -# 33755 "src/ocaml/preprocess/parser_raw.ml" +# 34193 "src/ocaml/preprocess/parser_raw.ml" in -# 2256 "src/ocaml/preprocess/parser_raw.mly" +# 2343 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33761 "src/ocaml/preprocess/parser_raw.ml" +# 34199 "src/ocaml/preprocess/parser_raw.ml" in -# 1823 "src/ocaml/preprocess/parser_raw.mly" +# 1910 "src/ocaml/preprocess/parser_raw.mly" ( let (ext, l) = _1 in (Psig_class l, ext) ) -# 33767 "src/ocaml/preprocess/parser_raw.ml" +# 34205 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_bs_ in @@ -33771,15 +34209,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 33777 "src/ocaml/preprocess/parser_raw.ml" +# 34215 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33783 "src/ocaml/preprocess/parser_raw.ml" +# 34221 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33803,23 +34241,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1825 "src/ocaml/preprocess/parser_raw.mly" +# 1912 "src/ocaml/preprocess/parser_raw.mly" ( let (ext, l) = _1 in (Psig_class_type l, ext) ) -# 33809 "src/ocaml/preprocess/parser_raw.ml" +# 34247 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1054 "src/ocaml/preprocess/parser_raw.mly" +# 1120 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 33817 "src/ocaml/preprocess/parser_raw.ml" +# 34255 "src/ocaml/preprocess/parser_raw.ml" in -# 1827 "src/ocaml/preprocess/parser_raw.mly" +# 1914 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33823 "src/ocaml/preprocess/parser_raw.ml" +# 34261 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33842,9 +34280,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 3721 "src/ocaml/preprocess/parser_raw.mly" +# 3928 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 33848 "src/ocaml/preprocess/parser_raw.ml" +# 34286 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33869,18 +34307,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 785 "src/ocaml/preprocess/parser_raw.mly" +# 851 "src/ocaml/preprocess/parser_raw.mly" (string * char option) -# 33875 "src/ocaml/preprocess/parser_raw.ml" +# 34313 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.constant) = -# 3722 "src/ocaml/preprocess/parser_raw.mly" +# 3929 "src/ocaml/preprocess/parser_raw.mly" ( let (n, m) = _2 in Pconst_integer("-" ^ n, m) ) -# 33884 "src/ocaml/preprocess/parser_raw.ml" +# 34322 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33905,18 +34343,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 764 "src/ocaml/preprocess/parser_raw.mly" +# 830 "src/ocaml/preprocess/parser_raw.mly" (string * char option) -# 33911 "src/ocaml/preprocess/parser_raw.ml" +# 34349 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.constant) = -# 3723 "src/ocaml/preprocess/parser_raw.mly" +# 3930 "src/ocaml/preprocess/parser_raw.mly" ( let (f, m) = _2 in Pconst_float("-" ^ f, m) ) -# 33920 "src/ocaml/preprocess/parser_raw.ml" +# 34358 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33941,18 +34379,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 785 "src/ocaml/preprocess/parser_raw.mly" +# 851 "src/ocaml/preprocess/parser_raw.mly" (string * char option) -# 33947 "src/ocaml/preprocess/parser_raw.ml" +# 34385 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.constant) = -# 3724 "src/ocaml/preprocess/parser_raw.mly" +# 3931 "src/ocaml/preprocess/parser_raw.mly" ( let (n, m) = _2 in Pconst_integer (n, m) ) -# 33956 "src/ocaml/preprocess/parser_raw.ml" +# 34394 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33977,18 +34415,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 764 "src/ocaml/preprocess/parser_raw.mly" +# 830 "src/ocaml/preprocess/parser_raw.mly" (string * char option) -# 33983 "src/ocaml/preprocess/parser_raw.ml" +# 34421 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.constant) = -# 3725 "src/ocaml/preprocess/parser_raw.mly" +# 3932 "src/ocaml/preprocess/parser_raw.mly" ( let (f, m) = _2 in Pconst_float(f, m) ) -# 33992 "src/ocaml/preprocess/parser_raw.ml" +# 34430 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34029,18 +34467,18 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 3048 "src/ocaml/preprocess/parser_raw.mly" +# 3199 "src/ocaml/preprocess/parser_raw.mly" ( let fields, closed = _1 in let closed = match closed with Some () -> Open | None -> Closed in fields, closed ) -# 34037 "src/ocaml/preprocess/parser_raw.ml" +# 34475 "src/ocaml/preprocess/parser_raw.ml" in -# 3019 "src/ocaml/preprocess/parser_raw.mly" +# 3170 "src/ocaml/preprocess/parser_raw.mly" ( let (fields, closed) = _2 in Ppat_record(fields, closed) ) -# 34044 "src/ocaml/preprocess/parser_raw.ml" +# 34482 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -34048,15 +34486,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 34054 "src/ocaml/preprocess/parser_raw.ml" +# 34492 "src/ocaml/preprocess/parser_raw.ml" in -# 3033 "src/ocaml/preprocess/parser_raw.mly" +# 3184 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 34060 "src/ocaml/preprocess/parser_raw.ml" +# 34498 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34095,15 +34533,15 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _2 = -# 3042 "src/ocaml/preprocess/parser_raw.mly" +# 3193 "src/ocaml/preprocess/parser_raw.mly" ( ps ) -# 34101 "src/ocaml/preprocess/parser_raw.ml" +# 34539 "src/ocaml/preprocess/parser_raw.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3024 "src/ocaml/preprocess/parser_raw.mly" +# 3175 "src/ocaml/preprocess/parser_raw.mly" ( fst (mktailpat _loc__3_ _2) ) -# 34107 "src/ocaml/preprocess/parser_raw.ml" +# 34545 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -34111,15 +34549,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 34117 "src/ocaml/preprocess/parser_raw.ml" +# 34555 "src/ocaml/preprocess/parser_raw.ml" in -# 3033 "src/ocaml/preprocess/parser_raw.mly" +# 3184 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 34123 "src/ocaml/preprocess/parser_raw.ml" +# 34561 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34158,14 +34596,14 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _2 = -# 3042 "src/ocaml/preprocess/parser_raw.mly" +# 3193 "src/ocaml/preprocess/parser_raw.mly" ( ps ) -# 34164 "src/ocaml/preprocess/parser_raw.ml" +# 34602 "src/ocaml/preprocess/parser_raw.ml" in -# 3028 "src/ocaml/preprocess/parser_raw.mly" +# 3179 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_array _2 ) -# 34169 "src/ocaml/preprocess/parser_raw.ml" +# 34607 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -34173,15 +34611,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 34179 "src/ocaml/preprocess/parser_raw.ml" +# 34617 "src/ocaml/preprocess/parser_raw.ml" in -# 3033 "src/ocaml/preprocess/parser_raw.mly" +# 3184 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 34185 "src/ocaml/preprocess/parser_raw.ml" +# 34623 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34212,24 +34650,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3030 "src/ocaml/preprocess/parser_raw.mly" +# 3181 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_array [] ) -# 34218 "src/ocaml/preprocess/parser_raw.ml" +# 34656 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 34227 "src/ocaml/preprocess/parser_raw.ml" +# 34665 "src/ocaml/preprocess/parser_raw.ml" in -# 3033 "src/ocaml/preprocess/parser_raw.mly" +# 3184 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 34233 "src/ocaml/preprocess/parser_raw.ml" +# 34671 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34268,9 +34706,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _endpos = _endpos__3_ in let _startpos = _startpos__1_ in -# 4090 "src/ocaml/preprocess/parser_raw.mly" +# 4303 "src/ocaml/preprocess/parser_raw.mly" ( Fake.Meta.code _startpos _endpos _2 ) -# 34274 "src/ocaml/preprocess/parser_raw.ml" +# 34712 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34302,9 +34740,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _endpos = _endpos__2_ in let _startpos = _startpos__1_ in -# 4092 "src/ocaml/preprocess/parser_raw.mly" +# 4305 "src/ocaml/preprocess/parser_raw.mly" ( Fake.Meta.uncode _startpos _endpos _2 ) -# 34308 "src/ocaml/preprocess/parser_raw.ml" +# 34746 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34344,9 +34782,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2512 "src/ocaml/preprocess/parser_raw.mly" +# 2632 "src/ocaml/preprocess/parser_raw.mly" ( reloc_exp ~loc:_sloc _2 ) -# 34350 "src/ocaml/preprocess/parser_raw.ml" +# 34788 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34383,7 +34821,7 @@ module Tables = struct }; } = _menhir_stack in let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic _3 in + let _3 : (Parsetree.type_constraint) = Obj.magic _3 in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -34393,9 +34831,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2518 "src/ocaml/preprocess/parser_raw.mly" +# 2638 "src/ocaml/preprocess/parser_raw.mly" ( mkexp_constraint ~loc:_sloc _2 _3 ) -# 34399 "src/ocaml/preprocess/parser_raw.ml" +# 34837 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34447,14 +34885,14 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2519 "src/ocaml/preprocess/parser_raw.mly" +# 2639 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 34453 "src/ocaml/preprocess/parser_raw.ml" +# 34891 "src/ocaml/preprocess/parser_raw.ml" in -# 2398 "src/ocaml/preprocess/parser_raw.mly" +# 2516 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Paren, i, r ) -# 34458 "src/ocaml/preprocess/parser_raw.ml" +# 34896 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -34462,9 +34900,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2520 "src/ocaml/preprocess/parser_raw.mly" +# 2640 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 34468 "src/ocaml/preprocess/parser_raw.ml" +# 34906 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34516,14 +34954,14 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2519 "src/ocaml/preprocess/parser_raw.mly" +# 2639 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 34522 "src/ocaml/preprocess/parser_raw.ml" +# 34960 "src/ocaml/preprocess/parser_raw.ml" in -# 2400 "src/ocaml/preprocess/parser_raw.mly" +# 2518 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Brace, i, r ) -# 34527 "src/ocaml/preprocess/parser_raw.ml" +# 34965 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -34531,9 +34969,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2520 "src/ocaml/preprocess/parser_raw.mly" +# 2640 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 34537 "src/ocaml/preprocess/parser_raw.ml" +# 34975 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34585,14 +35023,14 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2519 "src/ocaml/preprocess/parser_raw.mly" +# 2639 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 34591 "src/ocaml/preprocess/parser_raw.ml" +# 35029 "src/ocaml/preprocess/parser_raw.ml" in -# 2402 "src/ocaml/preprocess/parser_raw.mly" +# 2520 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Bracket, i, r ) -# 34596 "src/ocaml/preprocess/parser_raw.ml" +# 35034 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -34600,9 +35038,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2520 "src/ocaml/preprocess/parser_raw.mly" +# 2640 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 34606 "src/ocaml/preprocess/parser_raw.ml" +# 35044 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34648,9 +35086,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 34654 "src/ocaml/preprocess/parser_raw.ml" +# 35092 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -34658,31 +35096,31 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2521 "src/ocaml/preprocess/parser_raw.mly" +# 2641 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 34664 "src/ocaml/preprocess/parser_raw.ml" +# 35102 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 34669 "src/ocaml/preprocess/parser_raw.ml" +# 35107 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = # 124 "" ( None ) -# 34675 "src/ocaml/preprocess/parser_raw.ml" +# 35113 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 34680 "src/ocaml/preprocess/parser_raw.ml" +# 35118 "src/ocaml/preprocess/parser_raw.ml" in -# 2398 "src/ocaml/preprocess/parser_raw.mly" +# 2516 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Paren, i, r ) -# 34686 "src/ocaml/preprocess/parser_raw.ml" +# 35124 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -34690,9 +35128,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2522 "src/ocaml/preprocess/parser_raw.mly" +# 2642 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 34696 "src/ocaml/preprocess/parser_raw.ml" +# 35134 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34750,9 +35188,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 34756 "src/ocaml/preprocess/parser_raw.ml" +# 35194 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -34762,39 +35200,39 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2521 "src/ocaml/preprocess/parser_raw.mly" +# 2641 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 34768 "src/ocaml/preprocess/parser_raw.ml" +# 35206 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 34773 "src/ocaml/preprocess/parser_raw.ml" +# 35211 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" (_2) -# 34781 "src/ocaml/preprocess/parser_raw.ml" +# 35219 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 34786 "src/ocaml/preprocess/parser_raw.ml" +# 35224 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 34792 "src/ocaml/preprocess/parser_raw.ml" +# 35230 "src/ocaml/preprocess/parser_raw.ml" in -# 2398 "src/ocaml/preprocess/parser_raw.mly" +# 2516 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Paren, i, r ) -# 34798 "src/ocaml/preprocess/parser_raw.ml" +# 35236 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -34802,9 +35240,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2522 "src/ocaml/preprocess/parser_raw.mly" +# 2642 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 34808 "src/ocaml/preprocess/parser_raw.ml" +# 35246 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34850,9 +35288,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 34856 "src/ocaml/preprocess/parser_raw.ml" +# 35294 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -34860,31 +35298,31 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2521 "src/ocaml/preprocess/parser_raw.mly" +# 2641 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 34866 "src/ocaml/preprocess/parser_raw.ml" +# 35304 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 34871 "src/ocaml/preprocess/parser_raw.ml" +# 35309 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = # 124 "" ( None ) -# 34877 "src/ocaml/preprocess/parser_raw.ml" +# 35315 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 34882 "src/ocaml/preprocess/parser_raw.ml" +# 35320 "src/ocaml/preprocess/parser_raw.ml" in -# 2400 "src/ocaml/preprocess/parser_raw.mly" +# 2518 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Brace, i, r ) -# 34888 "src/ocaml/preprocess/parser_raw.ml" +# 35326 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -34892,9 +35330,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2522 "src/ocaml/preprocess/parser_raw.mly" +# 2642 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 34898 "src/ocaml/preprocess/parser_raw.ml" +# 35336 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34952,9 +35390,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 34958 "src/ocaml/preprocess/parser_raw.ml" +# 35396 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -34964,39 +35402,39 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2521 "src/ocaml/preprocess/parser_raw.mly" +# 2641 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 34970 "src/ocaml/preprocess/parser_raw.ml" +# 35408 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 34975 "src/ocaml/preprocess/parser_raw.ml" +# 35413 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" (_2) -# 34983 "src/ocaml/preprocess/parser_raw.ml" +# 35421 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 34988 "src/ocaml/preprocess/parser_raw.ml" +# 35426 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 34994 "src/ocaml/preprocess/parser_raw.ml" +# 35432 "src/ocaml/preprocess/parser_raw.ml" in -# 2400 "src/ocaml/preprocess/parser_raw.mly" +# 2518 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Brace, i, r ) -# 35000 "src/ocaml/preprocess/parser_raw.ml" +# 35438 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -35004,9 +35442,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2522 "src/ocaml/preprocess/parser_raw.mly" +# 2642 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 35010 "src/ocaml/preprocess/parser_raw.ml" +# 35448 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35052,9 +35490,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 35058 "src/ocaml/preprocess/parser_raw.ml" +# 35496 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -35062,31 +35500,31 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2521 "src/ocaml/preprocess/parser_raw.mly" +# 2641 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 35068 "src/ocaml/preprocess/parser_raw.ml" +# 35506 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 35073 "src/ocaml/preprocess/parser_raw.ml" +# 35511 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = # 124 "" ( None ) -# 35079 "src/ocaml/preprocess/parser_raw.ml" +# 35517 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 35084 "src/ocaml/preprocess/parser_raw.ml" +# 35522 "src/ocaml/preprocess/parser_raw.ml" in -# 2402 "src/ocaml/preprocess/parser_raw.mly" +# 2520 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Bracket, i, r ) -# 35090 "src/ocaml/preprocess/parser_raw.ml" +# 35528 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -35094,9 +35532,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2522 "src/ocaml/preprocess/parser_raw.mly" +# 2642 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 35100 "src/ocaml/preprocess/parser_raw.ml" +# 35538 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35154,9 +35592,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 35160 "src/ocaml/preprocess/parser_raw.ml" +# 35598 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -35166,39 +35604,39 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2521 "src/ocaml/preprocess/parser_raw.mly" +# 2641 "src/ocaml/preprocess/parser_raw.mly" ( None ) -# 35172 "src/ocaml/preprocess/parser_raw.ml" +# 35610 "src/ocaml/preprocess/parser_raw.ml" in let i = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 35177 "src/ocaml/preprocess/parser_raw.ml" +# 35615 "src/ocaml/preprocess/parser_raw.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" (_2) -# 35185 "src/ocaml/preprocess/parser_raw.ml" +# 35623 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 35190 "src/ocaml/preprocess/parser_raw.ml" +# 35628 "src/ocaml/preprocess/parser_raw.ml" in -# 2414 "src/ocaml/preprocess/parser_raw.mly" +# 2532 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 35196 "src/ocaml/preprocess/parser_raw.ml" +# 35634 "src/ocaml/preprocess/parser_raw.ml" in -# 2402 "src/ocaml/preprocess/parser_raw.mly" +# 2520 "src/ocaml/preprocess/parser_raw.mly" ( array, d, Bracket, i, r ) -# 35202 "src/ocaml/preprocess/parser_raw.ml" +# 35640 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -35206,9 +35644,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2522 "src/ocaml/preprocess/parser_raw.mly" +# 2642 "src/ocaml/preprocess/parser_raw.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 35212 "src/ocaml/preprocess/parser_raw.ml" +# 35650 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35262,15 +35700,15 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35268 "src/ocaml/preprocess/parser_raw.ml" +# 35706 "src/ocaml/preprocess/parser_raw.ml" in -# 2535 "src/ocaml/preprocess/parser_raw.mly" +# 2655 "src/ocaml/preprocess/parser_raw.mly" ( e.pexp_desc, (ext, attrs @ e.pexp_attributes) ) -# 35274 "src/ocaml/preprocess/parser_raw.ml" +# 35712 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in @@ -35278,10 +35716,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2528 "src/ocaml/preprocess/parser_raw.mly" +# 2648 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 35285 "src/ocaml/preprocess/parser_raw.ml" +# 35723 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35330,24 +35768,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35336 "src/ocaml/preprocess/parser_raw.ml" +# 35774 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 35342 "src/ocaml/preprocess/parser_raw.ml" +# 35780 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2537 "src/ocaml/preprocess/parser_raw.mly" +# 2657 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_construct (mkloc (Lident "()") (make_loc _sloc), None), _2 ) -# 35351 "src/ocaml/preprocess/parser_raw.ml" +# 35789 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -35355,10 +35793,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2528 "src/ocaml/preprocess/parser_raw.mly" +# 2648 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 35362 "src/ocaml/preprocess/parser_raw.ml" +# 35800 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35408,9 +35846,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 35414 "src/ocaml/preprocess/parser_raw.ml" +# 35852 "src/ocaml/preprocess/parser_raw.ml" in let _2 = @@ -35418,21 +35856,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35424 "src/ocaml/preprocess/parser_raw.ml" +# 35862 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 35430 "src/ocaml/preprocess/parser_raw.ml" +# 35868 "src/ocaml/preprocess/parser_raw.ml" in -# 2543 "src/ocaml/preprocess/parser_raw.mly" +# 2663 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_new(_3), _2 ) -# 35436 "src/ocaml/preprocess/parser_raw.ml" +# 35874 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -35440,10 +35878,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2528 "src/ocaml/preprocess/parser_raw.mly" +# 2648 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 35447 "src/ocaml/preprocess/parser_raw.ml" +# 35885 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35506,21 +35944,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35512 "src/ocaml/preprocess/parser_raw.ml" +# 35950 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 35518 "src/ocaml/preprocess/parser_raw.ml" +# 35956 "src/ocaml/preprocess/parser_raw.ml" in -# 2545 "src/ocaml/preprocess/parser_raw.mly" +# 2665 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_pack _4, _3 ) -# 35524 "src/ocaml/preprocess/parser_raw.ml" +# 35962 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in @@ -35528,10 +35966,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2528 "src/ocaml/preprocess/parser_raw.mly" +# 2648 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 35535 "src/ocaml/preprocess/parser_raw.ml" +# 35973 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35609,11 +36047,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3635 "src/ocaml/preprocess/parser_raw.mly" +# 3842 "src/ocaml/preprocess/parser_raw.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 35617 "src/ocaml/preprocess/parser_raw.ml" +# 36055 "src/ocaml/preprocess/parser_raw.ml" in let _3 = @@ -35621,24 +36059,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35627 "src/ocaml/preprocess/parser_raw.ml" +# 36065 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 35633 "src/ocaml/preprocess/parser_raw.ml" +# 36071 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2547 "src/ocaml/preprocess/parser_raw.mly" +# 2667 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_constraint (ghexp ~loc:_sloc (Pexp_pack _4), _6), _3 ) -# 35642 "src/ocaml/preprocess/parser_raw.ml" +# 36080 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__7_ in @@ -35646,10 +36084,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2528 "src/ocaml/preprocess/parser_raw.mly" +# 2648 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 35653 "src/ocaml/preprocess/parser_raw.ml" +# 36091 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35714,27 +36152,27 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 35718 "src/ocaml/preprocess/parser_raw.ml" +# 36156 "src/ocaml/preprocess/parser_raw.ml" in -# 2082 "src/ocaml/preprocess/parser_raw.mly" +# 2169 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35723 "src/ocaml/preprocess/parser_raw.ml" +# 36161 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 990 "src/ocaml/preprocess/parser_raw.mly" +# 1056 "src/ocaml/preprocess/parser_raw.mly" ( extra_cstr _startpos _endpos _1 ) -# 35732 "src/ocaml/preprocess/parser_raw.ml" +# 36170 "src/ocaml/preprocess/parser_raw.ml" in -# 2069 "src/ocaml/preprocess/parser_raw.mly" +# 2156 "src/ocaml/preprocess/parser_raw.mly" ( Cstr.mk _1 _2 ) -# 35738 "src/ocaml/preprocess/parser_raw.ml" +# 36176 "src/ocaml/preprocess/parser_raw.ml" in let _2 = @@ -35742,21 +36180,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35748 "src/ocaml/preprocess/parser_raw.ml" +# 36186 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 35754 "src/ocaml/preprocess/parser_raw.ml" +# 36192 "src/ocaml/preprocess/parser_raw.ml" in -# 2553 "src/ocaml/preprocess/parser_raw.mly" +# 2673 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_object _3, _2 ) -# 35760 "src/ocaml/preprocess/parser_raw.ml" +# 36198 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__4_ in @@ -35764,10 +36202,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2528 "src/ocaml/preprocess/parser_raw.mly" +# 2648 "src/ocaml/preprocess/parser_raw.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 35771 "src/ocaml/preprocess/parser_raw.ml" +# 36209 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35796,30 +36234,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 35802 "src/ocaml/preprocess/parser_raw.ml" +# 36240 "src/ocaml/preprocess/parser_raw.ml" in -# 2561 "src/ocaml/preprocess/parser_raw.mly" +# 2681 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_ident (_1) ) -# 35808 "src/ocaml/preprocess/parser_raw.ml" +# 36246 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 35817 "src/ocaml/preprocess/parser_raw.ml" +# 36255 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35823 "src/ocaml/preprocess/parser_raw.ml" +# 36261 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35843,23 +36281,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2563 "src/ocaml/preprocess/parser_raw.mly" +# 2683 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_constant _1 ) -# 35849 "src/ocaml/preprocess/parser_raw.ml" +# 36287 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 35857 "src/ocaml/preprocess/parser_raw.ml" +# 36295 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35863 "src/ocaml/preprocess/parser_raw.ml" +# 36301 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35888,30 +36326,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 35894 "src/ocaml/preprocess/parser_raw.ml" +# 36332 "src/ocaml/preprocess/parser_raw.ml" in -# 2565 "src/ocaml/preprocess/parser_raw.mly" +# 2685 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_construct(_1, None) ) -# 35900 "src/ocaml/preprocess/parser_raw.ml" +# 36338 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 35909 "src/ocaml/preprocess/parser_raw.ml" +# 36347 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35915 "src/ocaml/preprocess/parser_raw.ml" +# 36353 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35935,23 +36373,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2567 "src/ocaml/preprocess/parser_raw.mly" +# 2687 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_variant(_1, None) ) -# 35941 "src/ocaml/preprocess/parser_raw.ml" +# 36379 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 35949 "src/ocaml/preprocess/parser_raw.ml" +# 36387 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 35955 "src/ocaml/preprocess/parser_raw.ml" +# 36393 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35977,9 +36415,9 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 823 "src/ocaml/preprocess/parser_raw.mly" +# 889 "src/ocaml/preprocess/parser_raw.mly" (string) -# 35983 "src/ocaml/preprocess/parser_raw.ml" +# 36421 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -35991,15 +36429,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 35997 "src/ocaml/preprocess/parser_raw.ml" +# 36435 "src/ocaml/preprocess/parser_raw.ml" in -# 2569 "src/ocaml/preprocess/parser_raw.mly" +# 2689 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_apply(_1, [Nolabel,_2]) ) -# 36003 "src/ocaml/preprocess/parser_raw.ml" +# 36441 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in @@ -36007,15 +36445,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36013 "src/ocaml/preprocess/parser_raw.ml" +# 36451 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36019 "src/ocaml/preprocess/parser_raw.ml" +# 36457 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36048,23 +36486,23 @@ module Tables = struct let _1 = let _1 = let _1 = -# 2570 "src/ocaml/preprocess/parser_raw.mly" +# 2690 "src/ocaml/preprocess/parser_raw.mly" ("!") -# 36054 "src/ocaml/preprocess/parser_raw.ml" +# 36492 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 36062 "src/ocaml/preprocess/parser_raw.ml" +# 36500 "src/ocaml/preprocess/parser_raw.ml" in -# 2571 "src/ocaml/preprocess/parser_raw.mly" +# 2691 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_apply(_1, [Nolabel,_2]) ) -# 36068 "src/ocaml/preprocess/parser_raw.ml" +# 36506 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in @@ -36072,15 +36510,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36078 "src/ocaml/preprocess/parser_raw.ml" +# 36516 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36084 "src/ocaml/preprocess/parser_raw.ml" +# 36522 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36119,14 +36557,14 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 2853 "src/ocaml/preprocess/parser_raw.mly" +# 3004 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 36125 "src/ocaml/preprocess/parser_raw.ml" +# 36563 "src/ocaml/preprocess/parser_raw.ml" in -# 2573 "src/ocaml/preprocess/parser_raw.mly" +# 2693 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_override _2 ) -# 36130 "src/ocaml/preprocess/parser_raw.ml" +# 36568 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -36134,15 +36572,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36140 "src/ocaml/preprocess/parser_raw.ml" +# 36578 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36146 "src/ocaml/preprocess/parser_raw.ml" +# 36584 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36173,24 +36611,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2579 "src/ocaml/preprocess/parser_raw.mly" +# 2699 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_override [] ) -# 36179 "src/ocaml/preprocess/parser_raw.ml" +# 36617 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36188 "src/ocaml/preprocess/parser_raw.ml" +# 36626 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36194 "src/ocaml/preprocess/parser_raw.ml" +# 36632 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36234,15 +36672,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 36240 "src/ocaml/preprocess/parser_raw.ml" +# 36678 "src/ocaml/preprocess/parser_raw.ml" in -# 2581 "src/ocaml/preprocess/parser_raw.mly" +# 2701 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_field(_1, _3) ) -# 36246 "src/ocaml/preprocess/parser_raw.ml" +# 36684 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -36250,15 +36688,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36256 "src/ocaml/preprocess/parser_raw.ml" +# 36694 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36262 "src/ocaml/preprocess/parser_raw.ml" +# 36700 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36316,24 +36754,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 36322 "src/ocaml/preprocess/parser_raw.ml" +# 36760 "src/ocaml/preprocess/parser_raw.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1712 "src/ocaml/preprocess/parser_raw.mly" +# 1799 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 36331 "src/ocaml/preprocess/parser_raw.ml" +# 36769 "src/ocaml/preprocess/parser_raw.ml" in -# 2583 "src/ocaml/preprocess/parser_raw.mly" +# 2703 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_open(od, _4) ) -# 36337 "src/ocaml/preprocess/parser_raw.ml" +# 36775 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in @@ -36341,15 +36779,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36347 "src/ocaml/preprocess/parser_raw.ml" +# 36785 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36353 "src/ocaml/preprocess/parser_raw.ml" +# 36791 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36402,9 +36840,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 2853 "src/ocaml/preprocess/parser_raw.mly" +# 3004 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 36408 "src/ocaml/preprocess/parser_raw.ml" +# 36846 "src/ocaml/preprocess/parser_raw.ml" in let od = let _1 = @@ -36412,18 +36850,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 36418 "src/ocaml/preprocess/parser_raw.ml" +# 36856 "src/ocaml/preprocess/parser_raw.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1712 "src/ocaml/preprocess/parser_raw.mly" +# 1799 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 36427 "src/ocaml/preprocess/parser_raw.ml" +# 36865 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_od_ = _startpos__1_ in @@ -36431,10 +36869,10 @@ module Tables = struct let _symbolstartpos = _startpos_od_ in let _sloc = (_symbolstartpos, _endpos) in -# 2585 "src/ocaml/preprocess/parser_raw.mly" +# 2705 "src/ocaml/preprocess/parser_raw.mly" ( (* TODO: review the location of Pexp_override *) Pexp_open(od, mkexp ~loc:_sloc (Pexp_override _4)) ) -# 36438 "src/ocaml/preprocess/parser_raw.ml" +# 36876 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in @@ -36442,15 +36880,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36448 "src/ocaml/preprocess/parser_raw.ml" +# 36886 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36454 "src/ocaml/preprocess/parser_raw.ml" +# 36892 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36481,9 +36919,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 36487 "src/ocaml/preprocess/parser_raw.ml" +# 36925 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in @@ -36495,23 +36933,23 @@ module Tables = struct let _3 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36501 "src/ocaml/preprocess/parser_raw.ml" +# 36939 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 36509 "src/ocaml/preprocess/parser_raw.ml" +# 36947 "src/ocaml/preprocess/parser_raw.ml" in -# 2592 "src/ocaml/preprocess/parser_raw.mly" +# 2712 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_send(_1, _3) ) -# 36515 "src/ocaml/preprocess/parser_raw.ml" +# 36953 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -36519,15 +36957,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36525 "src/ocaml/preprocess/parser_raw.ml" +# 36963 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36531 "src/ocaml/preprocess/parser_raw.ml" +# 36969 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36559,9 +36997,9 @@ module Tables = struct } = _menhir_stack in let _3 : (Parsetree.expression) = Obj.magic _3 in let _1_inlined1 : ( -# 834 "src/ocaml/preprocess/parser_raw.mly" +# 900 "src/ocaml/preprocess/parser_raw.mly" (string) -# 36565 "src/ocaml/preprocess/parser_raw.ml" +# 37003 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -36575,15 +37013,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "src/ocaml/preprocess/parser_raw.mly" +# 1089 "src/ocaml/preprocess/parser_raw.mly" ( mkoperator ~loc:_sloc _1 ) -# 36581 "src/ocaml/preprocess/parser_raw.ml" +# 37019 "src/ocaml/preprocess/parser_raw.ml" in -# 2594 "src/ocaml/preprocess/parser_raw.mly" +# 2714 "src/ocaml/preprocess/parser_raw.mly" ( mkinfix _1 _2 _3 ) -# 36587 "src/ocaml/preprocess/parser_raw.ml" +# 37025 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -36591,15 +37029,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36597 "src/ocaml/preprocess/parser_raw.ml" +# 37035 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36603 "src/ocaml/preprocess/parser_raw.ml" +# 37041 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36623,23 +37061,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2596 "src/ocaml/preprocess/parser_raw.mly" +# 2716 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_extension _1 ) -# 36629 "src/ocaml/preprocess/parser_raw.ml" +# 37067 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36637 "src/ocaml/preprocess/parser_raw.ml" +# 37075 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36643 "src/ocaml/preprocess/parser_raw.ml" +# 37081 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36667,25 +37105,25 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 2598 "src/ocaml/preprocess/parser_raw.mly" +# 2718 "src/ocaml/preprocess/parser_raw.mly" ( let id = mkrhs Ast_helper.hole_txt _loc in Pexp_extension (id, PStr []) ) -# 36674 "src/ocaml/preprocess/parser_raw.ml" +# 37112 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36683 "src/ocaml/preprocess/parser_raw.ml" +# 37121 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36689 "src/ocaml/preprocess/parser_raw.ml" +# 37127 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36733,18 +37171,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_, _2, _1) = (_endpos__2_inlined1_, _startpos__1_inlined1_, _2_inlined1, _1_inlined1) in let _1 = -# 2600 "src/ocaml/preprocess/parser_raw.mly" +# 2720 "src/ocaml/preprocess/parser_raw.mly" (Lident "()") -# 36739 "src/ocaml/preprocess/parser_raw.ml" +# 37177 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 36748 "src/ocaml/preprocess/parser_raw.ml" +# 37186 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in @@ -36754,25 +37192,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 36760 "src/ocaml/preprocess/parser_raw.ml" +# 37198 "src/ocaml/preprocess/parser_raw.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1712 "src/ocaml/preprocess/parser_raw.mly" +# 1799 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 36769 "src/ocaml/preprocess/parser_raw.ml" +# 37207 "src/ocaml/preprocess/parser_raw.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2601 "src/ocaml/preprocess/parser_raw.mly" +# 2721 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_open(od, mkexp ~loc:(_loc__3_) (Pexp_construct(_3, None))) ) -# 36776 "src/ocaml/preprocess/parser_raw.ml" +# 37214 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -36780,15 +37218,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36786 "src/ocaml/preprocess/parser_raw.ml" +# 37224 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36792 "src/ocaml/preprocess/parser_raw.ml" +# 37230 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36827,25 +37265,25 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2607 "src/ocaml/preprocess/parser_raw.mly" +# 2727 "src/ocaml/preprocess/parser_raw.mly" ( let (exten, fields) = _2 in Pexp_record(fields, exten) ) -# 36834 "src/ocaml/preprocess/parser_raw.ml" +# 37272 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36843 "src/ocaml/preprocess/parser_raw.ml" +# 37281 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36849 "src/ocaml/preprocess/parser_raw.ml" +# 37287 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36904,27 +37342,27 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 36910 "src/ocaml/preprocess/parser_raw.ml" +# 37348 "src/ocaml/preprocess/parser_raw.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1712 "src/ocaml/preprocess/parser_raw.mly" +# 1799 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 36919 "src/ocaml/preprocess/parser_raw.ml" +# 37357 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in -# 2614 "src/ocaml/preprocess/parser_raw.mly" +# 2734 "src/ocaml/preprocess/parser_raw.mly" ( let (exten, fields) = _4 in Pexp_open(od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_record(fields, exten))) ) -# 36928 "src/ocaml/preprocess/parser_raw.ml" +# 37366 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in @@ -36932,15 +37370,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 36938 "src/ocaml/preprocess/parser_raw.ml" +# 37376 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 36944 "src/ocaml/preprocess/parser_raw.ml" +# 37382 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36979,14 +37417,14 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 36985 "src/ocaml/preprocess/parser_raw.ml" +# 37423 "src/ocaml/preprocess/parser_raw.ml" in -# 2622 "src/ocaml/preprocess/parser_raw.mly" +# 2742 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_array(_2) ) -# 36990 "src/ocaml/preprocess/parser_raw.ml" +# 37428 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -36994,15 +37432,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 37000 "src/ocaml/preprocess/parser_raw.ml" +# 37438 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37006 "src/ocaml/preprocess/parser_raw.ml" +# 37444 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37033,24 +37471,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2628 "src/ocaml/preprocess/parser_raw.mly" +# 2748 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_array [] ) -# 37039 "src/ocaml/preprocess/parser_raw.ml" +# 37477 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 37048 "src/ocaml/preprocess/parser_raw.ml" +# 37486 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37054 "src/ocaml/preprocess/parser_raw.ml" +# 37492 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37103,9 +37541,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 37109 "src/ocaml/preprocess/parser_raw.ml" +# 37547 "src/ocaml/preprocess/parser_raw.ml" in let od = let _1 = @@ -37113,25 +37551,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 37119 "src/ocaml/preprocess/parser_raw.ml" +# 37557 "src/ocaml/preprocess/parser_raw.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1712 "src/ocaml/preprocess/parser_raw.mly" +# 1799 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 37128 "src/ocaml/preprocess/parser_raw.ml" +# 37566 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in -# 2630 "src/ocaml/preprocess/parser_raw.mly" +# 2750 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_open(od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_array(_4))) ) -# 37135 "src/ocaml/preprocess/parser_raw.ml" +# 37573 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in @@ -37139,15 +37577,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 37145 "src/ocaml/preprocess/parser_raw.ml" +# 37583 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37151 "src/ocaml/preprocess/parser_raw.ml" +# 37589 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37198,26 +37636,26 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 37204 "src/ocaml/preprocess/parser_raw.ml" +# 37642 "src/ocaml/preprocess/parser_raw.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1712 "src/ocaml/preprocess/parser_raw.mly" +# 1799 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 37213 "src/ocaml/preprocess/parser_raw.ml" +# 37651 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__4_ in -# 2632 "src/ocaml/preprocess/parser_raw.mly" +# 2752 "src/ocaml/preprocess/parser_raw.mly" ( (* TODO: review the location of Pexp_array *) Pexp_open(od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_array [])) ) -# 37221 "src/ocaml/preprocess/parser_raw.ml" +# 37659 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__4_ in @@ -37225,15 +37663,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 37231 "src/ocaml/preprocess/parser_raw.ml" +# 37669 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37237 "src/ocaml/preprocess/parser_raw.ml" +# 37675 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37272,15 +37710,15 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 37278 "src/ocaml/preprocess/parser_raw.ml" +# 37716 "src/ocaml/preprocess/parser_raw.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2640 "src/ocaml/preprocess/parser_raw.mly" +# 2760 "src/ocaml/preprocess/parser_raw.mly" ( fst (mktailexp _loc__3_ _2) ) -# 37284 "src/ocaml/preprocess/parser_raw.ml" +# 37722 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -37288,15 +37726,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 37294 "src/ocaml/preprocess/parser_raw.ml" +# 37732 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37300 "src/ocaml/preprocess/parser_raw.ml" +# 37738 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37349,9 +37787,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 2870 "src/ocaml/preprocess/parser_raw.mly" +# 3021 "src/ocaml/preprocess/parser_raw.mly" ( es ) -# 37355 "src/ocaml/preprocess/parser_raw.ml" +# 37793 "src/ocaml/preprocess/parser_raw.ml" in let od = let _1 = @@ -37359,30 +37797,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 37365 "src/ocaml/preprocess/parser_raw.ml" +# 37803 "src/ocaml/preprocess/parser_raw.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1712 "src/ocaml/preprocess/parser_raw.mly" +# 1799 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 37374 "src/ocaml/preprocess/parser_raw.ml" +# 37812 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in let _loc__5_ = (_startpos__5_, _endpos__5_) in -# 2646 "src/ocaml/preprocess/parser_raw.mly" +# 2766 "src/ocaml/preprocess/parser_raw.mly" ( let list_exp = (* TODO: review the location of list_exp *) let tail_exp, _tail_loc = mktailexp _loc__5_ _4 in mkexp ~loc:(_startpos__3_, _endpos) tail_exp in Pexp_open(od, list_exp) ) -# 37386 "src/ocaml/preprocess/parser_raw.ml" +# 37824 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in @@ -37390,15 +37828,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 37396 "src/ocaml/preprocess/parser_raw.ml" +# 37834 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37402 "src/ocaml/preprocess/parser_raw.ml" +# 37840 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37446,18 +37884,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_, _2, _1) = (_endpos__2_inlined1_, _startpos__1_inlined1_, _2_inlined1, _1_inlined1) in let _1 = -# 2651 "src/ocaml/preprocess/parser_raw.mly" +# 2771 "src/ocaml/preprocess/parser_raw.mly" (Lident "[]") -# 37452 "src/ocaml/preprocess/parser_raw.ml" +# 37890 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 37461 "src/ocaml/preprocess/parser_raw.ml" +# 37899 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in @@ -37467,25 +37905,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 37473 "src/ocaml/preprocess/parser_raw.ml" +# 37911 "src/ocaml/preprocess/parser_raw.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1712 "src/ocaml/preprocess/parser_raw.mly" +# 1799 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 37482 "src/ocaml/preprocess/parser_raw.ml" +# 37920 "src/ocaml/preprocess/parser_raw.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2652 "src/ocaml/preprocess/parser_raw.mly" +# 2772 "src/ocaml/preprocess/parser_raw.mly" ( Pexp_open(od, mkexp ~loc:_loc__3_ (Pexp_construct(_3, None))) ) -# 37489 "src/ocaml/preprocess/parser_raw.ml" +# 37927 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -37493,15 +37931,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 37499 "src/ocaml/preprocess/parser_raw.ml" +# 37937 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37505 "src/ocaml/preprocess/parser_raw.ml" +# 37943 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37594,11 +38032,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3635 "src/ocaml/preprocess/parser_raw.mly" +# 3842 "src/ocaml/preprocess/parser_raw.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 37602 "src/ocaml/preprocess/parser_raw.ml" +# 38040 "src/ocaml/preprocess/parser_raw.ml" in let _5 = @@ -37606,15 +38044,15 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37612 "src/ocaml/preprocess/parser_raw.ml" +# 38050 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 37618 "src/ocaml/preprocess/parser_raw.ml" +# 38056 "src/ocaml/preprocess/parser_raw.ml" in let od = @@ -37623,18 +38061,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 37629 "src/ocaml/preprocess/parser_raw.ml" +# 38067 "src/ocaml/preprocess/parser_raw.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1712 "src/ocaml/preprocess/parser_raw.mly" +# 1799 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 37638 "src/ocaml/preprocess/parser_raw.ml" +# 38076 "src/ocaml/preprocess/parser_raw.ml" in let _startpos_od_ = _startpos__1_ in @@ -37642,12 +38080,12 @@ module Tables = struct let _symbolstartpos = _startpos_od_ in let _sloc = (_symbolstartpos, _endpos) in -# 2660 "src/ocaml/preprocess/parser_raw.mly" +# 2780 "src/ocaml/preprocess/parser_raw.mly" ( let modexp = mkexp_attrs ~loc:(_startpos__3_, _endpos) (Pexp_constraint (ghexp ~loc:_sloc (Pexp_pack _6), _8)) _5 in Pexp_open(od, modexp) ) -# 37651 "src/ocaml/preprocess/parser_raw.ml" +# 38089 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__9_ in @@ -37655,15 +38093,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "src/ocaml/preprocess/parser_raw.mly" +# 1095 "src/ocaml/preprocess/parser_raw.mly" ( mkexp ~loc:_sloc _1 ) -# 37661 "src/ocaml/preprocess/parser_raw.ml" +# 38099 "src/ocaml/preprocess/parser_raw.ml" in -# 2531 "src/ocaml/preprocess/parser_raw.mly" +# 2651 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37667 "src/ocaml/preprocess/parser_raw.ml" +# 38105 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37692,30 +38130,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 37698 "src/ocaml/preprocess/parser_raw.ml" +# 38136 "src/ocaml/preprocess/parser_raw.ml" in -# 2953 "src/ocaml/preprocess/parser_raw.mly" +# 3104 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_var (_1) ) -# 37704 "src/ocaml/preprocess/parser_raw.ml" +# 38142 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 37713 "src/ocaml/preprocess/parser_raw.ml" +# 38151 "src/ocaml/preprocess/parser_raw.ml" in -# 2954 "src/ocaml/preprocess/parser_raw.mly" +# 3105 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37719 "src/ocaml/preprocess/parser_raw.ml" +# 38157 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37738,9 +38176,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 2955 "src/ocaml/preprocess/parser_raw.mly" +# 3106 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37744 "src/ocaml/preprocess/parser_raw.ml" +# 38182 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37780,9 +38218,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2960 "src/ocaml/preprocess/parser_raw.mly" +# 3111 "src/ocaml/preprocess/parser_raw.mly" ( reloc_pat ~loc:_sloc _2 ) -# 37786 "src/ocaml/preprocess/parser_raw.ml" +# 38224 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37805,9 +38243,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 2962 "src/ocaml/preprocess/parser_raw.mly" +# 3113 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37811 "src/ocaml/preprocess/parser_raw.ml" +# 38249 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37870,9 +38308,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 37876 "src/ocaml/preprocess/parser_raw.ml" +# 38314 "src/ocaml/preprocess/parser_raw.ml" in let _3 = @@ -37880,24 +38318,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 37886 "src/ocaml/preprocess/parser_raw.ml" +# 38324 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 37892 "src/ocaml/preprocess/parser_raw.ml" +# 38330 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2964 "src/ocaml/preprocess/parser_raw.mly" +# 3115 "src/ocaml/preprocess/parser_raw.mly" ( mkpat_attrs ~loc:_sloc (Ppat_unpack _4) _3 ) -# 37901 "src/ocaml/preprocess/parser_raw.ml" +# 38339 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37974,11 +38412,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3635 "src/ocaml/preprocess/parser_raw.mly" +# 3842 "src/ocaml/preprocess/parser_raw.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 37982 "src/ocaml/preprocess/parser_raw.ml" +# 38420 "src/ocaml/preprocess/parser_raw.ml" in let _4 = @@ -37987,9 +38425,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 37993 "src/ocaml/preprocess/parser_raw.ml" +# 38431 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__4_, _startpos__4_) = (_endpos__1_inlined3_, _startpos__1_inlined3_) in @@ -37998,15 +38436,15 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38004 "src/ocaml/preprocess/parser_raw.ml" +# 38442 "src/ocaml/preprocess/parser_raw.ml" in -# 4068 "src/ocaml/preprocess/parser_raw.mly" +# 4275 "src/ocaml/preprocess/parser_raw.mly" ( _1, _2 ) -# 38010 "src/ocaml/preprocess/parser_raw.ml" +# 38448 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__7_ in @@ -38014,11 +38452,11 @@ module Tables = struct let _loc__4_ = (_startpos__4_, _endpos__4_) in let _sloc = (_symbolstartpos, _endpos) in -# 2966 "src/ocaml/preprocess/parser_raw.mly" +# 3117 "src/ocaml/preprocess/parser_raw.mly" ( mkpat_attrs ~loc:_sloc (Ppat_constraint(mkpat ~loc:_loc__4_ (Ppat_unpack _4), _6)) _3 ) -# 38022 "src/ocaml/preprocess/parser_raw.ml" +# 38460 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38042,23 +38480,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2974 "src/ocaml/preprocess/parser_raw.mly" +# 3125 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_any ) -# 38048 "src/ocaml/preprocess/parser_raw.ml" +# 38486 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38056 "src/ocaml/preprocess/parser_raw.ml" +# 38494 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38062 "src/ocaml/preprocess/parser_raw.ml" +# 38500 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38082,23 +38520,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2976 "src/ocaml/preprocess/parser_raw.mly" +# 3127 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_constant _1 ) -# 38088 "src/ocaml/preprocess/parser_raw.ml" +# 38526 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38096 "src/ocaml/preprocess/parser_raw.ml" +# 38534 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38102 "src/ocaml/preprocess/parser_raw.ml" +# 38540 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38136,24 +38574,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2978 "src/ocaml/preprocess/parser_raw.mly" +# 3129 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_interval (_1, _3) ) -# 38142 "src/ocaml/preprocess/parser_raw.ml" +# 38580 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38151 "src/ocaml/preprocess/parser_raw.ml" +# 38589 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38157 "src/ocaml/preprocess/parser_raw.ml" +# 38595 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38182,30 +38620,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 38188 "src/ocaml/preprocess/parser_raw.ml" +# 38626 "src/ocaml/preprocess/parser_raw.ml" in -# 2980 "src/ocaml/preprocess/parser_raw.mly" +# 3131 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_construct(_1, None) ) -# 38194 "src/ocaml/preprocess/parser_raw.ml" +# 38632 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38203 "src/ocaml/preprocess/parser_raw.ml" +# 38641 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38209 "src/ocaml/preprocess/parser_raw.ml" +# 38647 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38229,23 +38667,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2982 "src/ocaml/preprocess/parser_raw.mly" +# 3133 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_variant(_1, None) ) -# 38235 "src/ocaml/preprocess/parser_raw.ml" +# 38673 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38243 "src/ocaml/preprocess/parser_raw.ml" +# 38681 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38249 "src/ocaml/preprocess/parser_raw.ml" +# 38687 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38282,15 +38720,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 38288 "src/ocaml/preprocess/parser_raw.ml" +# 38726 "src/ocaml/preprocess/parser_raw.ml" in -# 2984 "src/ocaml/preprocess/parser_raw.mly" +# 3135 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_type (_2) ) -# 38294 "src/ocaml/preprocess/parser_raw.ml" +# 38732 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -38298,15 +38736,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38304 "src/ocaml/preprocess/parser_raw.ml" +# 38742 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38310 "src/ocaml/preprocess/parser_raw.ml" +# 38748 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38349,15 +38787,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 38355 "src/ocaml/preprocess/parser_raw.ml" +# 38793 "src/ocaml/preprocess/parser_raw.ml" in -# 2986 "src/ocaml/preprocess/parser_raw.mly" +# 3137 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_open(_1, _3) ) -# 38361 "src/ocaml/preprocess/parser_raw.ml" +# 38799 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__3_ in @@ -38365,15 +38803,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38371 "src/ocaml/preprocess/parser_raw.ml" +# 38809 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38377 "src/ocaml/preprocess/parser_raw.ml" +# 38815 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38421,18 +38859,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_, _2, _1) = (_endpos__2_inlined1_, _startpos__1_inlined1_, _2_inlined1, _1_inlined1) in let _1 = -# 2987 "src/ocaml/preprocess/parser_raw.mly" +# 3138 "src/ocaml/preprocess/parser_raw.mly" (Lident "[]") -# 38427 "src/ocaml/preprocess/parser_raw.ml" +# 38865 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 38436 "src/ocaml/preprocess/parser_raw.ml" +# 38874 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__3_ = _endpos__2_inlined1_ in @@ -38441,18 +38879,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 38447 "src/ocaml/preprocess/parser_raw.ml" +# 38885 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2988 "src/ocaml/preprocess/parser_raw.mly" +# 3139 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_open(_1, mkpat ~loc:_sloc (Ppat_construct(_3, None))) ) -# 38456 "src/ocaml/preprocess/parser_raw.ml" +# 38894 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -38460,15 +38898,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38466 "src/ocaml/preprocess/parser_raw.ml" +# 38904 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38472 "src/ocaml/preprocess/parser_raw.ml" +# 38910 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38516,18 +38954,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_, _2, _1) = (_endpos__2_inlined1_, _startpos__1_inlined1_, _2_inlined1, _1_inlined1) in let _1 = -# 2989 "src/ocaml/preprocess/parser_raw.mly" +# 3140 "src/ocaml/preprocess/parser_raw.mly" (Lident "()") -# 38522 "src/ocaml/preprocess/parser_raw.ml" +# 38960 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 38531 "src/ocaml/preprocess/parser_raw.ml" +# 38969 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__3_ = _endpos__2_inlined1_ in @@ -38536,18 +38974,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 38542 "src/ocaml/preprocess/parser_raw.ml" +# 38980 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2990 "src/ocaml/preprocess/parser_raw.mly" +# 3141 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_open(_1, mkpat ~loc:_sloc (Ppat_construct(_3, None))) ) -# 38551 "src/ocaml/preprocess/parser_raw.ml" +# 38989 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -38555,15 +38993,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38561 "src/ocaml/preprocess/parser_raw.ml" +# 38999 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38567 "src/ocaml/preprocess/parser_raw.ml" +# 39005 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38620,15 +39058,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 38626 "src/ocaml/preprocess/parser_raw.ml" +# 39064 "src/ocaml/preprocess/parser_raw.ml" in -# 2992 "src/ocaml/preprocess/parser_raw.mly" +# 3143 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_open (_1, _4) ) -# 38632 "src/ocaml/preprocess/parser_raw.ml" +# 39070 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in @@ -38636,15 +39074,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38642 "src/ocaml/preprocess/parser_raw.ml" +# 39080 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38648 "src/ocaml/preprocess/parser_raw.ml" +# 39086 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38696,24 +39134,24 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3002 "src/ocaml/preprocess/parser_raw.mly" +# 3153 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_constraint(_2, _4) ) -# 38702 "src/ocaml/preprocess/parser_raw.ml" +# 39140 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__5_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38711 "src/ocaml/preprocess/parser_raw.ml" +# 39149 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38717 "src/ocaml/preprocess/parser_raw.ml" +# 39155 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38737,23 +39175,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3013 "src/ocaml/preprocess/parser_raw.mly" +# 3164 "src/ocaml/preprocess/parser_raw.mly" ( Ppat_extension _1 ) -# 38743 "src/ocaml/preprocess/parser_raw.ml" +# 39181 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "src/ocaml/preprocess/parser_raw.mly" +# 1097 "src/ocaml/preprocess/parser_raw.mly" ( mkpat ~loc:_sloc _1 ) -# 38751 "src/ocaml/preprocess/parser_raw.ml" +# 39189 "src/ocaml/preprocess/parser_raw.ml" in -# 2970 "src/ocaml/preprocess/parser_raw.mly" +# 3121 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38757 "src/ocaml/preprocess/parser_raw.ml" +# 39195 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38772,17 +39210,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 38778 "src/ocaml/preprocess/parser_raw.ml" +# 39216 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3976 "src/ocaml/preprocess/parser_raw.mly" +# 4183 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38786 "src/ocaml/preprocess/parser_raw.ml" +# 39224 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38801,17 +39239,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) -# 38807 "src/ocaml/preprocess/parser_raw.ml" +# 39245 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3977 "src/ocaml/preprocess/parser_raw.mly" +# 4184 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 38815 "src/ocaml/preprocess/parser_raw.ml" +# 39253 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38834,9 +39272,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3978 "src/ocaml/preprocess/parser_raw.mly" +# 4185 "src/ocaml/preprocess/parser_raw.mly" ( "and" ) -# 38840 "src/ocaml/preprocess/parser_raw.ml" +# 39278 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38859,9 +39297,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3979 "src/ocaml/preprocess/parser_raw.mly" +# 4186 "src/ocaml/preprocess/parser_raw.mly" ( "as" ) -# 38865 "src/ocaml/preprocess/parser_raw.ml" +# 39303 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38884,9 +39322,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3980 "src/ocaml/preprocess/parser_raw.mly" +# 4187 "src/ocaml/preprocess/parser_raw.mly" ( "assert" ) -# 38890 "src/ocaml/preprocess/parser_raw.ml" +# 39328 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38909,9 +39347,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3981 "src/ocaml/preprocess/parser_raw.mly" +# 4188 "src/ocaml/preprocess/parser_raw.mly" ( "begin" ) -# 38915 "src/ocaml/preprocess/parser_raw.ml" +# 39353 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38934,9 +39372,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3982 "src/ocaml/preprocess/parser_raw.mly" +# 4189 "src/ocaml/preprocess/parser_raw.mly" ( "class" ) -# 38940 "src/ocaml/preprocess/parser_raw.ml" +# 39378 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38959,9 +39397,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3983 "src/ocaml/preprocess/parser_raw.mly" +# 4190 "src/ocaml/preprocess/parser_raw.mly" ( "constraint" ) -# 38965 "src/ocaml/preprocess/parser_raw.ml" +# 39403 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38984,9 +39422,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3984 "src/ocaml/preprocess/parser_raw.mly" +# 4191 "src/ocaml/preprocess/parser_raw.mly" ( "do" ) -# 38990 "src/ocaml/preprocess/parser_raw.ml" +# 39428 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39009,9 +39447,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3985 "src/ocaml/preprocess/parser_raw.mly" +# 4192 "src/ocaml/preprocess/parser_raw.mly" ( "done" ) -# 39015 "src/ocaml/preprocess/parser_raw.ml" +# 39453 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39034,9 +39472,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3986 "src/ocaml/preprocess/parser_raw.mly" +# 4193 "src/ocaml/preprocess/parser_raw.mly" ( "downto" ) -# 39040 "src/ocaml/preprocess/parser_raw.ml" +# 39478 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39059,9 +39497,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3987 "src/ocaml/preprocess/parser_raw.mly" +# 4194 "src/ocaml/preprocess/parser_raw.mly" ( "else" ) -# 39065 "src/ocaml/preprocess/parser_raw.ml" +# 39503 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39084,9 +39522,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3988 "src/ocaml/preprocess/parser_raw.mly" +# 4195 "src/ocaml/preprocess/parser_raw.mly" ( "end" ) -# 39090 "src/ocaml/preprocess/parser_raw.ml" +# 39528 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39109,9 +39547,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3989 "src/ocaml/preprocess/parser_raw.mly" +# 4196 "src/ocaml/preprocess/parser_raw.mly" ( "exception" ) -# 39115 "src/ocaml/preprocess/parser_raw.ml" +# 39553 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39134,9 +39572,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3990 "src/ocaml/preprocess/parser_raw.mly" +# 4197 "src/ocaml/preprocess/parser_raw.mly" ( "external" ) -# 39140 "src/ocaml/preprocess/parser_raw.ml" +# 39578 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39159,9 +39597,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3991 "src/ocaml/preprocess/parser_raw.mly" +# 4198 "src/ocaml/preprocess/parser_raw.mly" ( "false" ) -# 39165 "src/ocaml/preprocess/parser_raw.ml" +# 39603 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39184,9 +39622,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3992 "src/ocaml/preprocess/parser_raw.mly" +# 4199 "src/ocaml/preprocess/parser_raw.mly" ( "for" ) -# 39190 "src/ocaml/preprocess/parser_raw.ml" +# 39628 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39209,9 +39647,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3993 "src/ocaml/preprocess/parser_raw.mly" +# 4200 "src/ocaml/preprocess/parser_raw.mly" ( "fun" ) -# 39215 "src/ocaml/preprocess/parser_raw.ml" +# 39653 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39234,9 +39672,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3994 "src/ocaml/preprocess/parser_raw.mly" +# 4201 "src/ocaml/preprocess/parser_raw.mly" ( "function" ) -# 39240 "src/ocaml/preprocess/parser_raw.ml" +# 39678 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39259,9 +39697,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3995 "src/ocaml/preprocess/parser_raw.mly" +# 4202 "src/ocaml/preprocess/parser_raw.mly" ( "functor" ) -# 39265 "src/ocaml/preprocess/parser_raw.ml" +# 39703 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39284,9 +39722,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3996 "src/ocaml/preprocess/parser_raw.mly" +# 4203 "src/ocaml/preprocess/parser_raw.mly" ( "if" ) -# 39290 "src/ocaml/preprocess/parser_raw.ml" +# 39728 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39309,9 +39747,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3997 "src/ocaml/preprocess/parser_raw.mly" +# 4204 "src/ocaml/preprocess/parser_raw.mly" ( "in" ) -# 39315 "src/ocaml/preprocess/parser_raw.ml" +# 39753 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39334,9 +39772,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3998 "src/ocaml/preprocess/parser_raw.mly" +# 4205 "src/ocaml/preprocess/parser_raw.mly" ( "include" ) -# 39340 "src/ocaml/preprocess/parser_raw.ml" +# 39778 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39359,9 +39797,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3999 "src/ocaml/preprocess/parser_raw.mly" +# 4206 "src/ocaml/preprocess/parser_raw.mly" ( "inherit" ) -# 39365 "src/ocaml/preprocess/parser_raw.ml" +# 39803 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39384,9 +39822,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4000 "src/ocaml/preprocess/parser_raw.mly" +# 4207 "src/ocaml/preprocess/parser_raw.mly" ( "initializer" ) -# 39390 "src/ocaml/preprocess/parser_raw.ml" +# 39828 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39409,9 +39847,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4001 "src/ocaml/preprocess/parser_raw.mly" +# 4208 "src/ocaml/preprocess/parser_raw.mly" ( "lazy" ) -# 39415 "src/ocaml/preprocess/parser_raw.ml" +# 39853 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39434,9 +39872,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4002 "src/ocaml/preprocess/parser_raw.mly" +# 4209 "src/ocaml/preprocess/parser_raw.mly" ( "let" ) -# 39440 "src/ocaml/preprocess/parser_raw.ml" +# 39878 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39459,9 +39897,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4003 "src/ocaml/preprocess/parser_raw.mly" +# 4210 "src/ocaml/preprocess/parser_raw.mly" ( "match" ) -# 39465 "src/ocaml/preprocess/parser_raw.ml" +# 39903 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39484,9 +39922,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4004 "src/ocaml/preprocess/parser_raw.mly" +# 4211 "src/ocaml/preprocess/parser_raw.mly" ( "method" ) -# 39490 "src/ocaml/preprocess/parser_raw.ml" +# 39928 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39509,9 +39947,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4005 "src/ocaml/preprocess/parser_raw.mly" +# 4212 "src/ocaml/preprocess/parser_raw.mly" ( "module" ) -# 39515 "src/ocaml/preprocess/parser_raw.ml" +# 39953 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39534,9 +39972,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4006 "src/ocaml/preprocess/parser_raw.mly" +# 4213 "src/ocaml/preprocess/parser_raw.mly" ( "mutable" ) -# 39540 "src/ocaml/preprocess/parser_raw.ml" +# 39978 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39559,9 +39997,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4007 "src/ocaml/preprocess/parser_raw.mly" +# 4214 "src/ocaml/preprocess/parser_raw.mly" ( "new" ) -# 39565 "src/ocaml/preprocess/parser_raw.ml" +# 40003 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39584,9 +40022,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4008 "src/ocaml/preprocess/parser_raw.mly" +# 4215 "src/ocaml/preprocess/parser_raw.mly" ( "nonrec" ) -# 39590 "src/ocaml/preprocess/parser_raw.ml" +# 40028 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39609,9 +40047,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4009 "src/ocaml/preprocess/parser_raw.mly" +# 4216 "src/ocaml/preprocess/parser_raw.mly" ( "object" ) -# 39615 "src/ocaml/preprocess/parser_raw.ml" +# 40053 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39634,9 +40072,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4010 "src/ocaml/preprocess/parser_raw.mly" +# 4217 "src/ocaml/preprocess/parser_raw.mly" ( "of" ) -# 39640 "src/ocaml/preprocess/parser_raw.ml" +# 40078 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39659,9 +40097,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4011 "src/ocaml/preprocess/parser_raw.mly" +# 4218 "src/ocaml/preprocess/parser_raw.mly" ( "open" ) -# 39665 "src/ocaml/preprocess/parser_raw.ml" +# 40103 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39684,9 +40122,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4012 "src/ocaml/preprocess/parser_raw.mly" +# 4219 "src/ocaml/preprocess/parser_raw.mly" ( "or" ) -# 39690 "src/ocaml/preprocess/parser_raw.ml" +# 40128 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39709,9 +40147,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4013 "src/ocaml/preprocess/parser_raw.mly" +# 4220 "src/ocaml/preprocess/parser_raw.mly" ( "private" ) -# 39715 "src/ocaml/preprocess/parser_raw.ml" +# 40153 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39734,9 +40172,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4014 "src/ocaml/preprocess/parser_raw.mly" +# 4221 "src/ocaml/preprocess/parser_raw.mly" ( "rec" ) -# 39740 "src/ocaml/preprocess/parser_raw.ml" +# 40178 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39759,9 +40197,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4015 "src/ocaml/preprocess/parser_raw.mly" +# 4222 "src/ocaml/preprocess/parser_raw.mly" ( "sig" ) -# 39765 "src/ocaml/preprocess/parser_raw.ml" +# 40203 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39784,9 +40222,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4016 "src/ocaml/preprocess/parser_raw.mly" +# 4223 "src/ocaml/preprocess/parser_raw.mly" ( "struct" ) -# 39790 "src/ocaml/preprocess/parser_raw.ml" +# 40228 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39809,9 +40247,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4017 "src/ocaml/preprocess/parser_raw.mly" +# 4224 "src/ocaml/preprocess/parser_raw.mly" ( "then" ) -# 39815 "src/ocaml/preprocess/parser_raw.ml" +# 40253 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39834,9 +40272,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4018 "src/ocaml/preprocess/parser_raw.mly" +# 4225 "src/ocaml/preprocess/parser_raw.mly" ( "to" ) -# 39840 "src/ocaml/preprocess/parser_raw.ml" +# 40278 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39859,9 +40297,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4019 "src/ocaml/preprocess/parser_raw.mly" +# 4226 "src/ocaml/preprocess/parser_raw.mly" ( "true" ) -# 39865 "src/ocaml/preprocess/parser_raw.ml" +# 40303 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39884,9 +40322,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4020 "src/ocaml/preprocess/parser_raw.mly" +# 4227 "src/ocaml/preprocess/parser_raw.mly" ( "try" ) -# 39890 "src/ocaml/preprocess/parser_raw.ml" +# 40328 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39909,9 +40347,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4021 "src/ocaml/preprocess/parser_raw.mly" +# 4228 "src/ocaml/preprocess/parser_raw.mly" ( "type" ) -# 39915 "src/ocaml/preprocess/parser_raw.ml" +# 40353 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39934,9 +40372,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4022 "src/ocaml/preprocess/parser_raw.mly" +# 4229 "src/ocaml/preprocess/parser_raw.mly" ( "val" ) -# 39940 "src/ocaml/preprocess/parser_raw.ml" +# 40378 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39959,9 +40397,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4023 "src/ocaml/preprocess/parser_raw.mly" +# 4230 "src/ocaml/preprocess/parser_raw.mly" ( "virtual" ) -# 39965 "src/ocaml/preprocess/parser_raw.ml" +# 40403 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39984,9 +40422,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4024 "src/ocaml/preprocess/parser_raw.mly" +# 4231 "src/ocaml/preprocess/parser_raw.mly" ( "when" ) -# 39990 "src/ocaml/preprocess/parser_raw.ml" +# 40428 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40009,9 +40447,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4025 "src/ocaml/preprocess/parser_raw.mly" +# 4232 "src/ocaml/preprocess/parser_raw.mly" ( "while" ) -# 40015 "src/ocaml/preprocess/parser_raw.ml" +# 40453 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40034,9 +40472,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4026 "src/ocaml/preprocess/parser_raw.mly" +# 4233 "src/ocaml/preprocess/parser_raw.mly" ( "with" ) -# 40040 "src/ocaml/preprocess/parser_raw.ml" +# 40478 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40059,9 +40497,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.type_exception * string Location.loc option) = -# 3294 "src/ocaml/preprocess/parser_raw.mly" +# 3445 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40065 "src/ocaml/preprocess/parser_raw.ml" +# 40503 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40135,18 +40573,18 @@ module Tables = struct let _v : (Parsetree.type_exception * string Location.loc option) = let attrs = let _1 = _1_inlined5 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40141 "src/ocaml/preprocess/parser_raw.ml" +# 40579 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs_ = _endpos__1_inlined5_ in let attrs2 = let _1 = _1_inlined4 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40150 "src/ocaml/preprocess/parser_raw.ml" +# 40588 "src/ocaml/preprocess/parser_raw.ml" in let lid = @@ -40155,9 +40593,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 40161 "src/ocaml/preprocess/parser_raw.ml" +# 40599 "src/ocaml/preprocess/parser_raw.ml" in let id = @@ -40166,30 +40604,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 40172 "src/ocaml/preprocess/parser_raw.ml" +# 40610 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40180 "src/ocaml/preprocess/parser_raw.ml" +# 40618 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3303 "src/ocaml/preprocess/parser_raw.mly" +# 3454 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _sloc in let docs = symbol_docs _sloc in Te.mk_exception ~attrs (Te.rebind id lid ~attrs:(attrs1 @ attrs2) ~loc ~docs) , ext ) -# 40193 "src/ocaml/preprocess/parser_raw.ml" +# 40631 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40219,9 +40657,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2794 "src/ocaml/preprocess/parser_raw.mly" +# 2907 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 40225 "src/ocaml/preprocess/parser_raw.ml" +# 40663 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40234,90 +40672,44 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _2 : (Parsetree.expression) = Obj.magic _2 in - let _1 : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.expression) = let _endpos = _endpos__2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2796 "src/ocaml/preprocess/parser_raw.mly" - ( let (l, o, p) = _1 in ghexp ~loc:_sloc (Pexp_fun(l, o, p, _2)) ) -# 40260 "src/ocaml/preprocess/parser_raw.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _5 : (Parsetree.expression) = Obj.magic _5 in - let _4 : unit = Obj.magic _4 in - let xs : (string Location.loc list) = Obj.magic xs in - let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _4 : (Parsetree.function_body) = Obj.magic _4 in + let _3 : unit = Obj.magic _3 in + let _2 : (Parsetree.type_constraint option) = Obj.magic _2 in + let _1 : (Parsetree.function_param list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v : (Parsetree.expression) = let _3 = -# 2689 "src/ocaml/preprocess/parser_raw.mly" - ( xs ) -# 40313 "src/ocaml/preprocess/parser_raw.ml" - in - let _endpos = _endpos__5_ in + let _endpos = _endpos__4_ in + let _v : (Parsetree.expression) = let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2798 "src/ocaml/preprocess/parser_raw.mly" - ( mk_newtypes ~loc:_sloc _3 _5 ) -# 40321 "src/ocaml/preprocess/parser_raw.ml" +# 2909 "src/ocaml/preprocess/parser_raw.mly" + ( ghexp ~loc:_sloc (mkfunction _1 _2 _4) + ) +# 40713 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40344,39 +40736,39 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 40348 "src/ocaml/preprocess/parser_raw.ml" +# 40740 "src/ocaml/preprocess/parser_raw.ml" in let xs = let items = -# 1066 "src/ocaml/preprocess/parser_raw.mly" +# 1132 "src/ocaml/preprocess/parser_raw.mly" ( [] ) -# 40354 "src/ocaml/preprocess/parser_raw.ml" +# 40746 "src/ocaml/preprocess/parser_raw.ml" in -# 1511 "src/ocaml/preprocess/parser_raw.mly" +# 1598 "src/ocaml/preprocess/parser_raw.mly" ( items ) -# 40359 "src/ocaml/preprocess/parser_raw.ml" +# 40751 "src/ocaml/preprocess/parser_raw.ml" in # 267 "" ( xs @ ys ) -# 40365 "src/ocaml/preprocess/parser_raw.ml" +# 40757 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 988 "src/ocaml/preprocess/parser_raw.mly" +# 1054 "src/ocaml/preprocess/parser_raw.mly" ( extra_str _startpos _endpos _1 ) -# 40374 "src/ocaml/preprocess/parser_raw.ml" +# 40766 "src/ocaml/preprocess/parser_raw.ml" in -# 1504 "src/ocaml/preprocess/parser_raw.mly" +# 1591 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40380 "src/ocaml/preprocess/parser_raw.ml" +# 40772 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40417,7 +40809,7 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 40421 "src/ocaml/preprocess/parser_raw.ml" +# 40813 "src/ocaml/preprocess/parser_raw.ml" in let xs = let items = @@ -40425,65 +40817,65 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40431 "src/ocaml/preprocess/parser_raw.ml" +# 40823 "src/ocaml/preprocess/parser_raw.ml" in -# 1518 "src/ocaml/preprocess/parser_raw.mly" +# 1605 "src/ocaml/preprocess/parser_raw.mly" ( mkstrexp e attrs ) -# 40436 "src/ocaml/preprocess/parser_raw.ml" +# 40828 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1000 "src/ocaml/preprocess/parser_raw.mly" +# 1066 "src/ocaml/preprocess/parser_raw.mly" ( text_str _startpos @ [_1] ) -# 40444 "src/ocaml/preprocess/parser_raw.ml" +# 40836 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1019 "src/ocaml/preprocess/parser_raw.mly" +# 1085 "src/ocaml/preprocess/parser_raw.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 40454 "src/ocaml/preprocess/parser_raw.ml" +# 40846 "src/ocaml/preprocess/parser_raw.ml" in -# 1068 "src/ocaml/preprocess/parser_raw.mly" +# 1134 "src/ocaml/preprocess/parser_raw.mly" ( x ) -# 40460 "src/ocaml/preprocess/parser_raw.ml" +# 40852 "src/ocaml/preprocess/parser_raw.ml" in -# 1511 "src/ocaml/preprocess/parser_raw.mly" +# 1598 "src/ocaml/preprocess/parser_raw.mly" ( items ) -# 40466 "src/ocaml/preprocess/parser_raw.ml" +# 40858 "src/ocaml/preprocess/parser_raw.ml" in # 267 "" ( xs @ ys ) -# 40472 "src/ocaml/preprocess/parser_raw.ml" +# 40864 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_e_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 988 "src/ocaml/preprocess/parser_raw.mly" +# 1054 "src/ocaml/preprocess/parser_raw.mly" ( extra_str _startpos _endpos _1 ) -# 40481 "src/ocaml/preprocess/parser_raw.ml" +# 40873 "src/ocaml/preprocess/parser_raw.ml" in -# 1504 "src/ocaml/preprocess/parser_raw.mly" +# 1591 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40487 "src/ocaml/preprocess/parser_raw.ml" +# 40879 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40509,9 +40901,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4098 "src/ocaml/preprocess/parser_raw.mly" +# 4311 "src/ocaml/preprocess/parser_raw.mly" ( val_of_lwt_bindings ~loc:_loc _1 ) -# 40515 "src/ocaml/preprocess/parser_raw.ml" +# 40907 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40537,9 +40929,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1533 "src/ocaml/preprocess/parser_raw.mly" +# 1620 "src/ocaml/preprocess/parser_raw.mly" ( val_of_let_bindings ~loc:_sloc _1 ) -# 40543 "src/ocaml/preprocess/parser_raw.ml" +# 40935 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40573,9 +40965,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40579 "src/ocaml/preprocess/parser_raw.ml" +# 40971 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -40583,10 +40975,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1536 "src/ocaml/preprocess/parser_raw.mly" +# 1623 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in Pstr_extension (_1, add_docs_attrs docs _2) ) -# 40590 "src/ocaml/preprocess/parser_raw.ml" +# 40982 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -40594,15 +40986,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1035 "src/ocaml/preprocess/parser_raw.mly" +# 1101 "src/ocaml/preprocess/parser_raw.mly" ( mkstr ~loc:_sloc _1 ) -# 40600 "src/ocaml/preprocess/parser_raw.ml" +# 40992 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40606 "src/ocaml/preprocess/parser_raw.ml" +# 40998 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40626,23 +41018,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1539 "src/ocaml/preprocess/parser_raw.mly" +# 1626 "src/ocaml/preprocess/parser_raw.mly" ( Pstr_attribute _1 ) -# 40632 "src/ocaml/preprocess/parser_raw.ml" +# 41024 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1035 "src/ocaml/preprocess/parser_raw.mly" +# 1101 "src/ocaml/preprocess/parser_raw.mly" ( mkstr ~loc:_sloc _1 ) -# 40640 "src/ocaml/preprocess/parser_raw.ml" +# 41032 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40646 "src/ocaml/preprocess/parser_raw.ml" +# 41038 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40666,23 +41058,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1543 "src/ocaml/preprocess/parser_raw.mly" +# 1630 "src/ocaml/preprocess/parser_raw.mly" ( pstr_primitive _1 ) -# 40672 "src/ocaml/preprocess/parser_raw.ml" +# 41064 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 40680 "src/ocaml/preprocess/parser_raw.ml" +# 41072 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40686 "src/ocaml/preprocess/parser_raw.ml" +# 41078 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40706,23 +41098,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1545 "src/ocaml/preprocess/parser_raw.mly" +# 1632 "src/ocaml/preprocess/parser_raw.mly" ( pstr_primitive _1 ) -# 40712 "src/ocaml/preprocess/parser_raw.ml" +# 41104 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 40720 "src/ocaml/preprocess/parser_raw.ml" +# 41112 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40726 "src/ocaml/preprocess/parser_raw.ml" +# 41118 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40757,26 +41149,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1227 "src/ocaml/preprocess/parser_raw.mly" +# 1314 "src/ocaml/preprocess/parser_raw.mly" ( let (x, b) = a in x, b :: bs ) -# 40763 "src/ocaml/preprocess/parser_raw.ml" +# 41155 "src/ocaml/preprocess/parser_raw.ml" in -# 3136 "src/ocaml/preprocess/parser_raw.mly" +# 3287 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40768 "src/ocaml/preprocess/parser_raw.ml" +# 41160 "src/ocaml/preprocess/parser_raw.ml" in -# 3119 "src/ocaml/preprocess/parser_raw.mly" +# 3270 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40774 "src/ocaml/preprocess/parser_raw.ml" +# 41166 "src/ocaml/preprocess/parser_raw.ml" in -# 1547 "src/ocaml/preprocess/parser_raw.mly" +# 1634 "src/ocaml/preprocess/parser_raw.mly" ( pstr_type _1 ) -# 40780 "src/ocaml/preprocess/parser_raw.ml" +# 41172 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -40784,15 +41176,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 40790 "src/ocaml/preprocess/parser_raw.ml" +# 41182 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40796 "src/ocaml/preprocess/parser_raw.ml" +# 41188 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40877,16 +41269,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40883 "src/ocaml/preprocess/parser_raw.ml" +# 41275 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let cs = -# 1219 "src/ocaml/preprocess/parser_raw.mly" +# 1306 "src/ocaml/preprocess/parser_raw.mly" ( List.rev xs ) -# 40890 "src/ocaml/preprocess/parser_raw.ml" +# 41282 "src/ocaml/preprocess/parser_raw.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -40894,46 +41286,46 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 40900 "src/ocaml/preprocess/parser_raw.ml" +# 41292 "src/ocaml/preprocess/parser_raw.ml" in let _4 = -# 3896 "src/ocaml/preprocess/parser_raw.mly" +# 4103 "src/ocaml/preprocess/parser_raw.mly" ( Recursive ) -# 40906 "src/ocaml/preprocess/parser_raw.ml" +# 41298 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40913 "src/ocaml/preprocess/parser_raw.ml" +# 41305 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3391 "src/ocaml/preprocess/parser_raw.mly" +# 3542 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 40925 "src/ocaml/preprocess/parser_raw.ml" +# 41317 "src/ocaml/preprocess/parser_raw.ml" in -# 3374 "src/ocaml/preprocess/parser_raw.mly" +# 3525 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40931 "src/ocaml/preprocess/parser_raw.ml" +# 41323 "src/ocaml/preprocess/parser_raw.ml" in -# 1549 "src/ocaml/preprocess/parser_raw.mly" +# 1636 "src/ocaml/preprocess/parser_raw.mly" ( pstr_typext _1 ) -# 40937 "src/ocaml/preprocess/parser_raw.ml" +# 41329 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -40941,15 +41333,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 40947 "src/ocaml/preprocess/parser_raw.ml" +# 41339 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 40953 "src/ocaml/preprocess/parser_raw.ml" +# 41345 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41041,16 +41433,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41047 "src/ocaml/preprocess/parser_raw.ml" +# 41439 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in let cs = -# 1219 "src/ocaml/preprocess/parser_raw.mly" +# 1306 "src/ocaml/preprocess/parser_raw.mly" ( List.rev xs ) -# 41054 "src/ocaml/preprocess/parser_raw.ml" +# 41446 "src/ocaml/preprocess/parser_raw.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -41058,9 +41450,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 41064 "src/ocaml/preprocess/parser_raw.ml" +# 41456 "src/ocaml/preprocess/parser_raw.ml" in let _4 = @@ -41069,41 +41461,41 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 3898 "src/ocaml/preprocess/parser_raw.mly" +# 4105 "src/ocaml/preprocess/parser_raw.mly" ( not_expecting _loc "nonrec flag"; Recursive ) -# 41075 "src/ocaml/preprocess/parser_raw.ml" +# 41467 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41083 "src/ocaml/preprocess/parser_raw.ml" +# 41475 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3391 "src/ocaml/preprocess/parser_raw.mly" +# 3542 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 41095 "src/ocaml/preprocess/parser_raw.ml" +# 41487 "src/ocaml/preprocess/parser_raw.ml" in -# 3374 "src/ocaml/preprocess/parser_raw.mly" +# 3525 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41101 "src/ocaml/preprocess/parser_raw.ml" +# 41493 "src/ocaml/preprocess/parser_raw.ml" in -# 1549 "src/ocaml/preprocess/parser_raw.mly" +# 1636 "src/ocaml/preprocess/parser_raw.mly" ( pstr_typext _1 ) -# 41107 "src/ocaml/preprocess/parser_raw.ml" +# 41499 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -41111,15 +41503,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 41117 "src/ocaml/preprocess/parser_raw.ml" +# 41509 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41123 "src/ocaml/preprocess/parser_raw.ml" +# 41515 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41143,23 +41535,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1551 "src/ocaml/preprocess/parser_raw.mly" +# 1638 "src/ocaml/preprocess/parser_raw.mly" ( pstr_exception _1 ) -# 41149 "src/ocaml/preprocess/parser_raw.ml" +# 41541 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 41157 "src/ocaml/preprocess/parser_raw.ml" +# 41549 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41163 "src/ocaml/preprocess/parser_raw.ml" +# 41555 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41222,9 +41614,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41228 "src/ocaml/preprocess/parser_raw.ml" +# 41620 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -41234,36 +41626,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 41240 "src/ocaml/preprocess/parser_raw.ml" +# 41632 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41248 "src/ocaml/preprocess/parser_raw.ml" +# 41640 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1577 "src/ocaml/preprocess/parser_raw.mly" +# 1664 "src/ocaml/preprocess/parser_raw.mly" ( let docs = symbol_docs _sloc in let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in let body = Mb.mk name body ~attrs ~loc ~docs in Pstr_module body, ext ) -# 41261 "src/ocaml/preprocess/parser_raw.ml" +# 41653 "src/ocaml/preprocess/parser_raw.ml" in -# 1553 "src/ocaml/preprocess/parser_raw.mly" +# 1640 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41267 "src/ocaml/preprocess/parser_raw.ml" +# 41659 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -41271,15 +41663,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 41277 "src/ocaml/preprocess/parser_raw.ml" +# 41669 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41283 "src/ocaml/preprocess/parser_raw.ml" +# 41675 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41358,9 +41750,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41364 "src/ocaml/preprocess/parser_raw.ml" +# 41756 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -41370,24 +41762,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 41376 "src/ocaml/preprocess/parser_raw.ml" +# 41768 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41384 "src/ocaml/preprocess/parser_raw.ml" +# 41776 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1616 "src/ocaml/preprocess/parser_raw.mly" +# 1703 "src/ocaml/preprocess/parser_raw.mly" ( let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in @@ -41395,25 +41787,25 @@ module Tables = struct ext, Mb.mk name body ~attrs ~loc ~docs ) -# 41399 "src/ocaml/preprocess/parser_raw.ml" +# 41791 "src/ocaml/preprocess/parser_raw.ml" in -# 1227 "src/ocaml/preprocess/parser_raw.mly" +# 1314 "src/ocaml/preprocess/parser_raw.mly" ( let (x, b) = a in x, b :: bs ) -# 41405 "src/ocaml/preprocess/parser_raw.ml" +# 41797 "src/ocaml/preprocess/parser_raw.ml" in -# 1604 "src/ocaml/preprocess/parser_raw.mly" +# 1691 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41411 "src/ocaml/preprocess/parser_raw.ml" +# 41803 "src/ocaml/preprocess/parser_raw.ml" in -# 1555 "src/ocaml/preprocess/parser_raw.mly" +# 1642 "src/ocaml/preprocess/parser_raw.mly" ( pstr_recmodule _1 ) -# 41417 "src/ocaml/preprocess/parser_raw.ml" +# 41809 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_bs_ in @@ -41421,15 +41813,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 41427 "src/ocaml/preprocess/parser_raw.ml" +# 41819 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41433 "src/ocaml/preprocess/parser_raw.ml" +# 41825 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41453,23 +41845,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1557 "src/ocaml/preprocess/parser_raw.mly" +# 1644 "src/ocaml/preprocess/parser_raw.mly" ( let (body, ext) = _1 in (Pstr_modtype body, ext) ) -# 41459 "src/ocaml/preprocess/parser_raw.ml" +# 41851 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 41467 "src/ocaml/preprocess/parser_raw.ml" +# 41859 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41473 "src/ocaml/preprocess/parser_raw.ml" +# 41865 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41493,23 +41885,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1559 "src/ocaml/preprocess/parser_raw.mly" +# 1646 "src/ocaml/preprocess/parser_raw.mly" ( let (body, ext) = _1 in (Pstr_open body, ext) ) -# 41499 "src/ocaml/preprocess/parser_raw.ml" +# 41891 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 41507 "src/ocaml/preprocess/parser_raw.ml" +# 41899 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41513 "src/ocaml/preprocess/parser_raw.ml" +# 41905 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41579,9 +41971,9 @@ module Tables = struct let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let body : (Parsetree.class_expr) = Obj.magic body in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 41585 "src/ocaml/preprocess/parser_raw.ml" +# 41977 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -41599,9 +41991,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41605 "src/ocaml/preprocess/parser_raw.ml" +# 41997 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -41611,24 +42003,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 41617 "src/ocaml/preprocess/parser_raw.ml" +# 42009 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41625 "src/ocaml/preprocess/parser_raw.ml" +# 42017 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1970 "src/ocaml/preprocess/parser_raw.mly" +# 2057 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -41636,25 +42028,25 @@ module Tables = struct ext, Ci.mk id body ~virt ~params ~attrs ~loc ~docs ) -# 41640 "src/ocaml/preprocess/parser_raw.ml" +# 42032 "src/ocaml/preprocess/parser_raw.ml" in -# 1227 "src/ocaml/preprocess/parser_raw.mly" +# 1314 "src/ocaml/preprocess/parser_raw.mly" ( let (x, b) = a in x, b :: bs ) -# 41646 "src/ocaml/preprocess/parser_raw.ml" +# 42038 "src/ocaml/preprocess/parser_raw.ml" in -# 1959 "src/ocaml/preprocess/parser_raw.mly" +# 2046 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41652 "src/ocaml/preprocess/parser_raw.ml" +# 42044 "src/ocaml/preprocess/parser_raw.ml" in -# 1561 "src/ocaml/preprocess/parser_raw.mly" +# 1648 "src/ocaml/preprocess/parser_raw.mly" ( let (ext, l) = _1 in (Pstr_class l, ext) ) -# 41658 "src/ocaml/preprocess/parser_raw.ml" +# 42050 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_bs_ in @@ -41662,15 +42054,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 41668 "src/ocaml/preprocess/parser_raw.ml" +# 42060 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41674 "src/ocaml/preprocess/parser_raw.ml" +# 42066 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41694,23 +42086,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1563 "src/ocaml/preprocess/parser_raw.mly" +# 1650 "src/ocaml/preprocess/parser_raw.mly" ( let (ext, l) = _1 in (Pstr_class_type l, ext) ) -# 41700 "src/ocaml/preprocess/parser_raw.ml" +# 42092 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 41708 "src/ocaml/preprocess/parser_raw.ml" +# 42100 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41714 "src/ocaml/preprocess/parser_raw.ml" +# 42106 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41766,38 +42158,38 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41772 "src/ocaml/preprocess/parser_raw.ml" +# 42164 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41781 "src/ocaml/preprocess/parser_raw.ml" +# 42173 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1653 "src/ocaml/preprocess/parser_raw.mly" +# 1740 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Incl.mk thing ~attrs ~loc ~docs, ext ) -# 41795 "src/ocaml/preprocess/parser_raw.ml" +# 42187 "src/ocaml/preprocess/parser_raw.ml" in -# 1565 "src/ocaml/preprocess/parser_raw.mly" +# 1652 "src/ocaml/preprocess/parser_raw.mly" ( pstr_include _1 ) -# 41801 "src/ocaml/preprocess/parser_raw.ml" +# 42193 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos__1_inlined2_ in @@ -41805,15 +42197,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1052 "src/ocaml/preprocess/parser_raw.mly" +# 1118 "src/ocaml/preprocess/parser_raw.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 41811 "src/ocaml/preprocess/parser_raw.ml" +# 42203 "src/ocaml/preprocess/parser_raw.ml" in -# 1567 "src/ocaml/preprocess/parser_raw.mly" +# 1654 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41817 "src/ocaml/preprocess/parser_raw.ml" +# 42209 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41836,9 +42228,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3961 "src/ocaml/preprocess/parser_raw.mly" +# 4168 "src/ocaml/preprocess/parser_raw.mly" ( "-" ) -# 41842 "src/ocaml/preprocess/parser_raw.ml" +# 42234 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41861,9 +42253,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3962 "src/ocaml/preprocess/parser_raw.mly" +# 4169 "src/ocaml/preprocess/parser_raw.mly" ( "-." ) -# 41867 "src/ocaml/preprocess/parser_raw.ml" +# 42259 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41916,9 +42308,9 @@ module Tables = struct let _v : (Parsetree.row_field) = let _5 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41922 "src/ocaml/preprocess/parser_raw.ml" +# 42314 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__5_ = _endpos__1_inlined1_ in @@ -41927,18 +42319,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 41931 "src/ocaml/preprocess/parser_raw.ml" +# 42323 "src/ocaml/preprocess/parser_raw.ml" in -# 1130 "src/ocaml/preprocess/parser_raw.mly" +# 1217 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 41936 "src/ocaml/preprocess/parser_raw.ml" +# 42328 "src/ocaml/preprocess/parser_raw.ml" in -# 3665 "src/ocaml/preprocess/parser_raw.mly" +# 3872 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41942 "src/ocaml/preprocess/parser_raw.ml" +# 42334 "src/ocaml/preprocess/parser_raw.ml" in let _1 = @@ -41946,20 +42338,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 41952 "src/ocaml/preprocess/parser_raw.ml" +# 42344 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3651 "src/ocaml/preprocess/parser_raw.mly" +# 3858 "src/ocaml/preprocess/parser_raw.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _5 in Rf.tag ~loc:(make_loc _sloc) ~attrs _1 _3 _4 ) -# 41963 "src/ocaml/preprocess/parser_raw.ml" +# 42355 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41991,9 +42383,9 @@ module Tables = struct let _v : (Parsetree.row_field) = let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 41997 "src/ocaml/preprocess/parser_raw.ml" +# 42389 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -42002,20 +42394,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 42008 "src/ocaml/preprocess/parser_raw.ml" +# 42400 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3655 "src/ocaml/preprocess/parser_raw.mly" +# 3862 "src/ocaml/preprocess/parser_raw.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _2 in Rf.tag ~loc:(make_loc _sloc) ~attrs _1 true [] ) -# 42019 "src/ocaml/preprocess/parser_raw.ml" +# 42411 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42047,7 +42439,7 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase) = let arg = # 124 "" ( None ) -# 42051 "src/ocaml/preprocess/parser_raw.ml" +# 42443 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_arg_ = _endpos__1_inlined1_ in let dir = @@ -42056,18 +42448,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 42062 "src/ocaml/preprocess/parser_raw.ml" +# 42454 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3859 "src/ocaml/preprocess/parser_raw.mly" +# 4066 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive ~loc:_sloc dir arg ) -# 42071 "src/ocaml/preprocess/parser_raw.ml" +# 42463 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42098,9 +42490,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 837 "src/ocaml/preprocess/parser_raw.mly" +# 903 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string option) -# 42104 "src/ocaml/preprocess/parser_raw.ml" +# 42496 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (string) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -42111,23 +42503,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 3863 "src/ocaml/preprocess/parser_raw.mly" +# 4070 "src/ocaml/preprocess/parser_raw.mly" ( let (s, _, _) = _1 in Pdir_string s ) -# 42117 "src/ocaml/preprocess/parser_raw.ml" +# 42509 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1057 "src/ocaml/preprocess/parser_raw.mly" +# 1123 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 42125 "src/ocaml/preprocess/parser_raw.ml" +# 42517 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 42131 "src/ocaml/preprocess/parser_raw.ml" +# 42523 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -42137,18 +42529,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 42143 "src/ocaml/preprocess/parser_raw.ml" +# 42535 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3859 "src/ocaml/preprocess/parser_raw.mly" +# 4066 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive ~loc:_sloc dir arg ) -# 42152 "src/ocaml/preprocess/parser_raw.ml" +# 42544 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42179,9 +42571,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 785 "src/ocaml/preprocess/parser_raw.mly" +# 851 "src/ocaml/preprocess/parser_raw.mly" (string * char option) -# 42185 "src/ocaml/preprocess/parser_raw.ml" +# 42577 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (string) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -42192,23 +42584,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 3864 "src/ocaml/preprocess/parser_raw.mly" +# 4071 "src/ocaml/preprocess/parser_raw.mly" ( let (n, m) = _1 in Pdir_int (n ,m) ) -# 42198 "src/ocaml/preprocess/parser_raw.ml" +# 42590 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1057 "src/ocaml/preprocess/parser_raw.mly" +# 1123 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 42206 "src/ocaml/preprocess/parser_raw.ml" +# 42598 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 42212 "src/ocaml/preprocess/parser_raw.ml" +# 42604 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -42218,18 +42610,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 42224 "src/ocaml/preprocess/parser_raw.ml" +# 42616 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3859 "src/ocaml/preprocess/parser_raw.mly" +# 4066 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive ~loc:_sloc dir arg ) -# 42233 "src/ocaml/preprocess/parser_raw.ml" +# 42625 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42269,23 +42661,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 3865 "src/ocaml/preprocess/parser_raw.mly" +# 4072 "src/ocaml/preprocess/parser_raw.mly" ( Pdir_ident _1 ) -# 42275 "src/ocaml/preprocess/parser_raw.ml" +# 42667 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1057 "src/ocaml/preprocess/parser_raw.mly" +# 1123 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 42283 "src/ocaml/preprocess/parser_raw.ml" +# 42675 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 42289 "src/ocaml/preprocess/parser_raw.ml" +# 42681 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -42295,18 +42687,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 42301 "src/ocaml/preprocess/parser_raw.ml" +# 42693 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3859 "src/ocaml/preprocess/parser_raw.mly" +# 4066 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive ~loc:_sloc dir arg ) -# 42310 "src/ocaml/preprocess/parser_raw.ml" +# 42702 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42346,23 +42738,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 3866 "src/ocaml/preprocess/parser_raw.mly" +# 4073 "src/ocaml/preprocess/parser_raw.mly" ( Pdir_ident _1 ) -# 42352 "src/ocaml/preprocess/parser_raw.ml" +# 42744 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1057 "src/ocaml/preprocess/parser_raw.mly" +# 1123 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 42360 "src/ocaml/preprocess/parser_raw.ml" +# 42752 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 42366 "src/ocaml/preprocess/parser_raw.ml" +# 42758 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -42372,18 +42764,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 42378 "src/ocaml/preprocess/parser_raw.ml" +# 42770 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3859 "src/ocaml/preprocess/parser_raw.mly" +# 4066 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive ~loc:_sloc dir arg ) -# 42387 "src/ocaml/preprocess/parser_raw.ml" +# 42779 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42423,23 +42815,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 3867 "src/ocaml/preprocess/parser_raw.mly" +# 4074 "src/ocaml/preprocess/parser_raw.mly" ( Pdir_bool false ) -# 42429 "src/ocaml/preprocess/parser_raw.ml" +# 42821 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1057 "src/ocaml/preprocess/parser_raw.mly" +# 1123 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 42437 "src/ocaml/preprocess/parser_raw.ml" +# 42829 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 42443 "src/ocaml/preprocess/parser_raw.ml" +# 42835 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -42449,18 +42841,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 42455 "src/ocaml/preprocess/parser_raw.ml" +# 42847 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3859 "src/ocaml/preprocess/parser_raw.mly" +# 4066 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive ~loc:_sloc dir arg ) -# 42464 "src/ocaml/preprocess/parser_raw.ml" +# 42856 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42500,23 +42892,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 3868 "src/ocaml/preprocess/parser_raw.mly" +# 4075 "src/ocaml/preprocess/parser_raw.mly" ( Pdir_bool true ) -# 42506 "src/ocaml/preprocess/parser_raw.ml" +# 42898 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1057 "src/ocaml/preprocess/parser_raw.mly" +# 1123 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 42514 "src/ocaml/preprocess/parser_raw.ml" +# 42906 "src/ocaml/preprocess/parser_raw.ml" in # 126 "" ( Some x ) -# 42520 "src/ocaml/preprocess/parser_raw.ml" +# 42912 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -42526,18 +42918,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 42532 "src/ocaml/preprocess/parser_raw.ml" +# 42924 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3859 "src/ocaml/preprocess/parser_raw.mly" +# 4066 "src/ocaml/preprocess/parser_raw.mly" ( mk_directive ~loc:_sloc dir arg ) -# 42541 "src/ocaml/preprocess/parser_raw.ml" +# 42933 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42577,37 +42969,37 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 42583 "src/ocaml/preprocess/parser_raw.ml" +# 42975 "src/ocaml/preprocess/parser_raw.ml" in -# 1518 "src/ocaml/preprocess/parser_raw.mly" +# 1605 "src/ocaml/preprocess/parser_raw.mly" ( mkstrexp e attrs ) -# 42588 "src/ocaml/preprocess/parser_raw.ml" +# 42980 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1000 "src/ocaml/preprocess/parser_raw.mly" +# 1066 "src/ocaml/preprocess/parser_raw.mly" ( text_str _startpos @ [_1] ) -# 42596 "src/ocaml/preprocess/parser_raw.ml" +# 42988 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 988 "src/ocaml/preprocess/parser_raw.mly" +# 1054 "src/ocaml/preprocess/parser_raw.mly" ( extra_str _startpos _endpos _1 ) -# 42605 "src/ocaml/preprocess/parser_raw.ml" +# 42997 "src/ocaml/preprocess/parser_raw.ml" in -# 1267 "src/ocaml/preprocess/parser_raw.mly" +# 1354 "src/ocaml/preprocess/parser_raw.mly" ( Ptop_def _1 ) -# 42611 "src/ocaml/preprocess/parser_raw.ml" +# 43003 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42640,21 +43032,21 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 42644 "src/ocaml/preprocess/parser_raw.ml" +# 43036 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 988 "src/ocaml/preprocess/parser_raw.mly" +# 1054 "src/ocaml/preprocess/parser_raw.mly" ( extra_str _startpos _endpos _1 ) -# 42652 "src/ocaml/preprocess/parser_raw.ml" +# 43044 "src/ocaml/preprocess/parser_raw.ml" in -# 1271 "src/ocaml/preprocess/parser_raw.mly" +# 1358 "src/ocaml/preprocess/parser_raw.mly" ( Ptop_def _1 ) -# 42658 "src/ocaml/preprocess/parser_raw.ml" +# 43050 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42684,9 +43076,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.toplevel_phrase) = -# 1275 "src/ocaml/preprocess/parser_raw.mly" +# 1362 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 42690 "src/ocaml/preprocess/parser_raw.ml" +# 43082 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42709,9 +43101,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.toplevel_phrase) = -# 1278 "src/ocaml/preprocess/parser_raw.mly" +# 1365 "src/ocaml/preprocess/parser_raw.mly" ( raise End_of_file ) -# 42715 "src/ocaml/preprocess/parser_raw.ml" +# 43107 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42734,9 +43126,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3557 "src/ocaml/preprocess/parser_raw.mly" +# 3708 "src/ocaml/preprocess/parser_raw.mly" ( ty ) -# 42740 "src/ocaml/preprocess/parser_raw.ml" +# 43132 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42764,18 +43156,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 42768 "src/ocaml/preprocess/parser_raw.ml" +# 43160 "src/ocaml/preprocess/parser_raw.ml" in -# 1158 "src/ocaml/preprocess/parser_raw.mly" +# 1245 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 42773 "src/ocaml/preprocess/parser_raw.ml" +# 43165 "src/ocaml/preprocess/parser_raw.ml" in -# 3560 "src/ocaml/preprocess/parser_raw.mly" +# 3711 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_tuple tys ) -# 42779 "src/ocaml/preprocess/parser_raw.ml" +# 43171 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_xs_) in @@ -42783,15 +43175,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 42789 "src/ocaml/preprocess/parser_raw.ml" +# 43181 "src/ocaml/preprocess/parser_raw.ml" in -# 3562 "src/ocaml/preprocess/parser_raw.mly" +# 3713 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 42795 "src/ocaml/preprocess/parser_raw.ml" +# 43187 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42820,10 +43212,10 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 2873 "src/ocaml/preprocess/parser_raw.mly" - ( (Some _2, None) ) -# 42827 "src/ocaml/preprocess/parser_raw.ml" + let _v : (Parsetree.type_constraint) = +# 3024 "src/ocaml/preprocess/parser_raw.mly" + ( Pconstraint _2 ) +# 43219 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42866,10 +43258,10 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in - let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 2874 "src/ocaml/preprocess/parser_raw.mly" - ( (Some _2, Some _4) ) -# 42873 "src/ocaml/preprocess/parser_raw.ml" + let _v : (Parsetree.type_constraint) = +# 3025 "src/ocaml/preprocess/parser_raw.mly" + ( Pcoerce (Some _2, _4) ) +# 43265 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42898,10 +43290,10 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 2875 "src/ocaml/preprocess/parser_raw.mly" - ( (None, Some _2) ) -# 42905 "src/ocaml/preprocess/parser_raw.ml" + let _v : (Parsetree.type_constraint) = +# 3026 "src/ocaml/preprocess/parser_raw.mly" + ( Pcoerce (None, _2) ) +# 43297 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42917,9 +43309,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = -# 3210 "src/ocaml/preprocess/parser_raw.mly" +# 3361 "src/ocaml/preprocess/parser_raw.mly" ( (Ptype_abstract, Public, None) ) -# 42923 "src/ocaml/preprocess/parser_raw.ml" +# 43315 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42949,9 +43341,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = -# 3212 "src/ocaml/preprocess/parser_raw.mly" +# 3363 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 42955 "src/ocaml/preprocess/parser_raw.ml" +# 43347 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42974,9 +43366,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3818 "src/ocaml/preprocess/parser_raw.mly" +# 4025 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 42980 "src/ocaml/preprocess/parser_raw.ml" +# 43372 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43006,9 +43398,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = -# 3227 "src/ocaml/preprocess/parser_raw.mly" +# 3378 "src/ocaml/preprocess/parser_raw.mly" ( _2, _1 ) -# 43012 "src/ocaml/preprocess/parser_raw.ml" +# 43404 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43024,9 +43416,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = -# 3220 "src/ocaml/preprocess/parser_raw.mly" +# 3371 "src/ocaml/preprocess/parser_raw.mly" ( [] ) -# 43030 "src/ocaml/preprocess/parser_raw.ml" +# 43422 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43049,9 +43441,9 @@ module Tables = struct let _startpos = _startpos_p_ in let _endpos = _endpos_p_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = -# 3222 "src/ocaml/preprocess/parser_raw.mly" +# 3373 "src/ocaml/preprocess/parser_raw.mly" ( [p] ) -# 43055 "src/ocaml/preprocess/parser_raw.ml" +# 43447 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43091,18 +43483,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 43095 "src/ocaml/preprocess/parser_raw.ml" +# 43487 "src/ocaml/preprocess/parser_raw.ml" in -# 1130 "src/ocaml/preprocess/parser_raw.mly" +# 1217 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 43100 "src/ocaml/preprocess/parser_raw.ml" +# 43492 "src/ocaml/preprocess/parser_raw.ml" in -# 3224 "src/ocaml/preprocess/parser_raw.mly" +# 3375 "src/ocaml/preprocess/parser_raw.mly" ( ps ) -# 43106 "src/ocaml/preprocess/parser_raw.ml" +# 43498 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43133,24 +43525,24 @@ module Tables = struct let _endpos = _endpos_tyvar_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3232 "src/ocaml/preprocess/parser_raw.mly" +# 3383 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_var tyvar ) -# 43139 "src/ocaml/preprocess/parser_raw.ml" +# 43531 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__1_ = _endpos_tyvar_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 43148 "src/ocaml/preprocess/parser_raw.ml" +# 43540 "src/ocaml/preprocess/parser_raw.ml" in -# 3235 "src/ocaml/preprocess/parser_raw.mly" +# 3386 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43154 "src/ocaml/preprocess/parser_raw.ml" +# 43546 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43174,23 +43566,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3234 "src/ocaml/preprocess/parser_raw.mly" +# 3385 "src/ocaml/preprocess/parser_raw.mly" ( Ptyp_any ) -# 43180 "src/ocaml/preprocess/parser_raw.ml" +# 43572 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "src/ocaml/preprocess/parser_raw.mly" +# 1099 "src/ocaml/preprocess/parser_raw.mly" ( mktyp ~loc:_sloc _1 ) -# 43188 "src/ocaml/preprocess/parser_raw.ml" +# 43580 "src/ocaml/preprocess/parser_raw.ml" in -# 3235 "src/ocaml/preprocess/parser_raw.mly" +# 3386 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43194 "src/ocaml/preprocess/parser_raw.ml" +# 43586 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43206,9 +43598,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3239 "src/ocaml/preprocess/parser_raw.mly" +# 3390 "src/ocaml/preprocess/parser_raw.mly" ( NoVariance, NoInjectivity ) -# 43212 "src/ocaml/preprocess/parser_raw.ml" +# 43604 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43231,9 +43623,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3240 "src/ocaml/preprocess/parser_raw.mly" +# 3391 "src/ocaml/preprocess/parser_raw.mly" ( Covariant, NoInjectivity ) -# 43237 "src/ocaml/preprocess/parser_raw.ml" +# 43629 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43256,9 +43648,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3241 "src/ocaml/preprocess/parser_raw.mly" +# 3392 "src/ocaml/preprocess/parser_raw.mly" ( Contravariant, NoInjectivity ) -# 43262 "src/ocaml/preprocess/parser_raw.ml" +# 43654 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43281,9 +43673,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3242 "src/ocaml/preprocess/parser_raw.mly" +# 3393 "src/ocaml/preprocess/parser_raw.mly" ( NoVariance, Injective ) -# 43287 "src/ocaml/preprocess/parser_raw.ml" +# 43679 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43313,9 +43705,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3243 "src/ocaml/preprocess/parser_raw.mly" +# 3394 "src/ocaml/preprocess/parser_raw.mly" ( Covariant, Injective ) -# 43319 "src/ocaml/preprocess/parser_raw.ml" +# 43711 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43345,9 +43737,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3243 "src/ocaml/preprocess/parser_raw.mly" +# 3394 "src/ocaml/preprocess/parser_raw.mly" ( Covariant, Injective ) -# 43351 "src/ocaml/preprocess/parser_raw.ml" +# 43743 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43377,9 +43769,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3244 "src/ocaml/preprocess/parser_raw.mly" +# 3395 "src/ocaml/preprocess/parser_raw.mly" ( Contravariant, Injective ) -# 43383 "src/ocaml/preprocess/parser_raw.ml" +# 43775 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43409,9 +43801,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3244 "src/ocaml/preprocess/parser_raw.mly" +# 3395 "src/ocaml/preprocess/parser_raw.mly" ( Contravariant, Injective ) -# 43415 "src/ocaml/preprocess/parser_raw.ml" +# 43807 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43430,21 +43822,21 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 777 "src/ocaml/preprocess/parser_raw.mly" +# 843 "src/ocaml/preprocess/parser_raw.mly" (string) -# 43436 "src/ocaml/preprocess/parser_raw.ml" +# 43828 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3246 "src/ocaml/preprocess/parser_raw.mly" +# 3397 "src/ocaml/preprocess/parser_raw.mly" ( if _1 = "+!" then Covariant, Injective else if _1 = "-!" then Contravariant, Injective else (expecting _loc__1_ "type_variance"; NoVariance, NoInjectivity) ) -# 43448 "src/ocaml/preprocess/parser_raw.ml" +# 43840 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43463,21 +43855,21 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 823 "src/ocaml/preprocess/parser_raw.mly" +# 889 "src/ocaml/preprocess/parser_raw.mly" (string) -# 43469 "src/ocaml/preprocess/parser_raw.ml" +# 43861 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3251 "src/ocaml/preprocess/parser_raw.mly" +# 3402 "src/ocaml/preprocess/parser_raw.mly" ( if _1 = "!+" then Covariant, Injective else if _1 = "!-" then Contravariant, Injective else (expecting _loc__1_ "type_variance"; NoVariance, NoInjectivity) ) -# 43481 "src/ocaml/preprocess/parser_raw.ml" +# 43873 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43511,39 +43903,39 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 43515 "src/ocaml/preprocess/parser_raw.ml" +# 43907 "src/ocaml/preprocess/parser_raw.ml" in let xs = let _1 = -# 1066 "src/ocaml/preprocess/parser_raw.mly" +# 1132 "src/ocaml/preprocess/parser_raw.mly" ( [] ) -# 43521 "src/ocaml/preprocess/parser_raw.ml" +# 43913 "src/ocaml/preprocess/parser_raw.ml" in -# 1298 "src/ocaml/preprocess/parser_raw.mly" +# 1385 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43526 "src/ocaml/preprocess/parser_raw.ml" +# 43918 "src/ocaml/preprocess/parser_raw.ml" in # 267 "" ( xs @ ys ) -# 43532 "src/ocaml/preprocess/parser_raw.ml" +# 43924 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 992 "src/ocaml/preprocess/parser_raw.mly" +# 1058 "src/ocaml/preprocess/parser_raw.mly" ( extra_def _startpos _endpos _1 ) -# 43541 "src/ocaml/preprocess/parser_raw.ml" +# 43933 "src/ocaml/preprocess/parser_raw.ml" in -# 1291 "src/ocaml/preprocess/parser_raw.mly" +# 1378 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43547 "src/ocaml/preprocess/parser_raw.ml" +# 43939 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43591,7 +43983,7 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 43595 "src/ocaml/preprocess/parser_raw.ml" +# 43987 "src/ocaml/preprocess/parser_raw.ml" in let xs = let _1 = @@ -43599,61 +43991,61 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43605 "src/ocaml/preprocess/parser_raw.ml" +# 43997 "src/ocaml/preprocess/parser_raw.ml" in -# 1518 "src/ocaml/preprocess/parser_raw.mly" +# 1605 "src/ocaml/preprocess/parser_raw.mly" ( mkstrexp e attrs ) -# 43610 "src/ocaml/preprocess/parser_raw.ml" +# 44002 "src/ocaml/preprocess/parser_raw.ml" in -# 1010 "src/ocaml/preprocess/parser_raw.mly" +# 1076 "src/ocaml/preprocess/parser_raw.mly" ( Ptop_def [_1] ) -# 43616 "src/ocaml/preprocess/parser_raw.ml" +# 44008 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1008 "src/ocaml/preprocess/parser_raw.mly" +# 1074 "src/ocaml/preprocess/parser_raw.mly" ( text_def _startpos @ [_1] ) -# 43624 "src/ocaml/preprocess/parser_raw.ml" +# 44016 "src/ocaml/preprocess/parser_raw.ml" in -# 1068 "src/ocaml/preprocess/parser_raw.mly" +# 1134 "src/ocaml/preprocess/parser_raw.mly" ( x ) -# 43630 "src/ocaml/preprocess/parser_raw.ml" +# 44022 "src/ocaml/preprocess/parser_raw.ml" in -# 1298 "src/ocaml/preprocess/parser_raw.mly" +# 1385 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43636 "src/ocaml/preprocess/parser_raw.ml" +# 44028 "src/ocaml/preprocess/parser_raw.ml" in # 267 "" ( xs @ ys ) -# 43642 "src/ocaml/preprocess/parser_raw.ml" +# 44034 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_e_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 992 "src/ocaml/preprocess/parser_raw.mly" +# 1058 "src/ocaml/preprocess/parser_raw.mly" ( extra_def _startpos _endpos _1 ) -# 43651 "src/ocaml/preprocess/parser_raw.ml" +# 44043 "src/ocaml/preprocess/parser_raw.ml" in -# 1291 "src/ocaml/preprocess/parser_raw.mly" +# 1378 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43657 "src/ocaml/preprocess/parser_raw.ml" +# 44049 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43690,9 +44082,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (string) = -# 3735 "src/ocaml/preprocess/parser_raw.mly" +# 3942 "src/ocaml/preprocess/parser_raw.mly" ( _2 ) -# 43696 "src/ocaml/preprocess/parser_raw.ml" +# 44088 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43711,17 +44103,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 43717 "src/ocaml/preprocess/parser_raw.ml" +# 44109 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3743 "src/ocaml/preprocess/parser_raw.mly" +# 3950 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43725 "src/ocaml/preprocess/parser_raw.ml" +# 44117 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43744,9 +44136,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 3744 "src/ocaml/preprocess/parser_raw.mly" +# 3951 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43750 "src/ocaml/preprocess/parser_raw.ml" +# 44142 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43769,9 +44161,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3812 "src/ocaml/preprocess/parser_raw.mly" +# 4019 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43775 "src/ocaml/preprocess/parser_raw.ml" +# 44167 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43816,9 +44208,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 43822 "src/ocaml/preprocess/parser_raw.ml" +# 44214 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let mutable_ : (Asttypes.mutable_flag) = Obj.magic mutable_ in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -43829,33 +44221,33 @@ module Tables = struct Parsetree.attributes) = let label = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43835 "src/ocaml/preprocess/parser_raw.ml" +# 44227 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 43843 "src/ocaml/preprocess/parser_raw.ml" +# 44235 "src/ocaml/preprocess/parser_raw.ml" in let attrs = -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43849 "src/ocaml/preprocess/parser_raw.ml" +# 44241 "src/ocaml/preprocess/parser_raw.ml" in let _1 = -# 3954 "src/ocaml/preprocess/parser_raw.mly" +# 4161 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 43854 "src/ocaml/preprocess/parser_raw.ml" +# 44246 "src/ocaml/preprocess/parser_raw.ml" in -# 2116 "src/ocaml/preprocess/parser_raw.mly" +# 2203 "src/ocaml/preprocess/parser_raw.mly" ( (label, mutable_, Cfk_virtual ty), attrs ) -# 43859 "src/ocaml/preprocess/parser_raw.ml" +# 44251 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43900,9 +44292,9 @@ module Tables = struct let _6 : (Parsetree.expression) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 43906 "src/ocaml/preprocess/parser_raw.ml" +# 44298 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -43913,33 +44305,33 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43919 "src/ocaml/preprocess/parser_raw.ml" +# 44311 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 43927 "src/ocaml/preprocess/parser_raw.ml" +# 44319 "src/ocaml/preprocess/parser_raw.ml" in let _2 = -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 43933 "src/ocaml/preprocess/parser_raw.ml" +# 44325 "src/ocaml/preprocess/parser_raw.ml" in let _1 = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 43938 "src/ocaml/preprocess/parser_raw.ml" +# 44330 "src/ocaml/preprocess/parser_raw.ml" in -# 2118 "src/ocaml/preprocess/parser_raw.mly" +# 2205 "src/ocaml/preprocess/parser_raw.mly" ( (_4, _3, Cfk_concrete (_1, _6)), _2 ) -# 43943 "src/ocaml/preprocess/parser_raw.ml" +# 44335 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43990,9 +44382,9 @@ module Tables = struct let _6 : (Parsetree.expression) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 43996 "src/ocaml/preprocess/parser_raw.ml" +# 44388 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -44004,36 +44396,36 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44010 "src/ocaml/preprocess/parser_raw.ml" +# 44402 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44018 "src/ocaml/preprocess/parser_raw.ml" +# 44410 "src/ocaml/preprocess/parser_raw.ml" in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44026 "src/ocaml/preprocess/parser_raw.ml" +# 44418 "src/ocaml/preprocess/parser_raw.ml" in let _1 = -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 44032 "src/ocaml/preprocess/parser_raw.ml" +# 44424 "src/ocaml/preprocess/parser_raw.ml" in -# 2118 "src/ocaml/preprocess/parser_raw.mly" +# 2205 "src/ocaml/preprocess/parser_raw.mly" ( (_4, _3, Cfk_concrete (_1, _6)), _2 ) -# 44037 "src/ocaml/preprocess/parser_raw.ml" +# 44429 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44083,11 +44475,11 @@ module Tables = struct } = _menhir_stack in let _7 : (Parsetree.expression) = Obj.magic _7 in let _6 : unit = Obj.magic _6 in - let _5 : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic _5 in + let _5 : (Parsetree.type_constraint) = Obj.magic _5 in let _1_inlined1 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 44091 "src/ocaml/preprocess/parser_raw.ml" +# 44483 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -44098,30 +44490,30 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44104 "src/ocaml/preprocess/parser_raw.ml" +# 44496 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44112 "src/ocaml/preprocess/parser_raw.ml" +# 44504 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__4_ = _startpos__1_inlined1_ in let _2 = -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44119 "src/ocaml/preprocess/parser_raw.ml" +# 44511 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in let _1 = -# 3957 "src/ocaml/preprocess/parser_raw.mly" +# 4164 "src/ocaml/preprocess/parser_raw.mly" ( Fresh ) -# 44125 "src/ocaml/preprocess/parser_raw.ml" +# 44517 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__7_ in @@ -44137,11 +44529,11 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2121 "src/ocaml/preprocess/parser_raw.mly" +# 2208 "src/ocaml/preprocess/parser_raw.mly" ( let e = mkexp_constraint ~loc:_sloc _7 _5 in (_4, _3, Cfk_concrete (_1, e)), _2 ) -# 44145 "src/ocaml/preprocess/parser_raw.ml" +# 44537 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44197,11 +44589,11 @@ module Tables = struct } = _menhir_stack in let _7 : (Parsetree.expression) = Obj.magic _7 in let _6 : unit = Obj.magic _6 in - let _5 : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic _5 in + let _5 : (Parsetree.type_constraint) = Obj.magic _5 in let _1_inlined2 : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 44205 "src/ocaml/preprocess/parser_raw.ml" +# 44597 "src/ocaml/preprocess/parser_raw.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -44213,33 +44605,33 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 3709 "src/ocaml/preprocess/parser_raw.mly" +# 3916 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44219 "src/ocaml/preprocess/parser_raw.ml" +# 44611 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44227 "src/ocaml/preprocess/parser_raw.ml" +# 44619 "src/ocaml/preprocess/parser_raw.ml" in let _startpos__4_ = _startpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44236 "src/ocaml/preprocess/parser_raw.ml" +# 44628 "src/ocaml/preprocess/parser_raw.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _1 = -# 3958 "src/ocaml/preprocess/parser_raw.mly" +# 4165 "src/ocaml/preprocess/parser_raw.mly" ( Override ) -# 44243 "src/ocaml/preprocess/parser_raw.ml" +# 44635 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -44254,11 +44646,11 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2121 "src/ocaml/preprocess/parser_raw.mly" +# 2208 "src/ocaml/preprocess/parser_raw.mly" ( let e = mkexp_constraint ~loc:_sloc _7 _5 in (_4, _3, Cfk_concrete (_1, e)), _2 ) -# 44262 "src/ocaml/preprocess/parser_raw.ml" +# 44654 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44325,9 +44717,9 @@ module Tables = struct let _v : (Parsetree.value_description * string Location.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4051 "src/ocaml/preprocess/parser_raw.mly" +# 4258 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44331 "src/ocaml/preprocess/parser_raw.ml" +# 44723 "src/ocaml/preprocess/parser_raw.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -44337,30 +44729,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44343 "src/ocaml/preprocess/parser_raw.ml" +# 44735 "src/ocaml/preprocess/parser_raw.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4055 "src/ocaml/preprocess/parser_raw.mly" +# 4262 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44351 "src/ocaml/preprocess/parser_raw.ml" +# 44743 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3081 "src/ocaml/preprocess/parser_raw.mly" +# 3232 "src/ocaml/preprocess/parser_raw.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Val.mk id ty ~attrs ~loc ~docs, ext ) -# 44364 "src/ocaml/preprocess/parser_raw.ml" +# 44756 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44376,9 +44768,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.virtual_flag) = -# 3918 "src/ocaml/preprocess/parser_raw.mly" +# 4125 "src/ocaml/preprocess/parser_raw.mly" ( Concrete ) -# 44382 "src/ocaml/preprocess/parser_raw.ml" +# 44774 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44401,9 +44793,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.virtual_flag) = -# 3919 "src/ocaml/preprocess/parser_raw.mly" +# 4126 "src/ocaml/preprocess/parser_raw.mly" ( Virtual ) -# 44407 "src/ocaml/preprocess/parser_raw.ml" +# 44799 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44426,9 +44818,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag) = -# 3942 "src/ocaml/preprocess/parser_raw.mly" +# 4149 "src/ocaml/preprocess/parser_raw.mly" ( Immutable ) -# 44432 "src/ocaml/preprocess/parser_raw.ml" +# 44824 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44458,9 +44850,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag) = -# 3943 "src/ocaml/preprocess/parser_raw.mly" +# 4150 "src/ocaml/preprocess/parser_raw.mly" ( Mutable ) -# 44464 "src/ocaml/preprocess/parser_raw.ml" +# 44856 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44490,9 +44882,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag) = -# 3944 "src/ocaml/preprocess/parser_raw.mly" +# 4151 "src/ocaml/preprocess/parser_raw.mly" ( Mutable ) -# 44496 "src/ocaml/preprocess/parser_raw.ml" +# 44888 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44515,9 +44907,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = -# 3949 "src/ocaml/preprocess/parser_raw.mly" +# 4156 "src/ocaml/preprocess/parser_raw.mly" ( Public ) -# 44521 "src/ocaml/preprocess/parser_raw.ml" +# 44913 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44547,9 +44939,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 3950 "src/ocaml/preprocess/parser_raw.mly" +# 4157 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 44553 "src/ocaml/preprocess/parser_raw.ml" +# 44945 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44579,9 +44971,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 3951 "src/ocaml/preprocess/parser_raw.mly" +# 4158 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 44585 "src/ocaml/preprocess/parser_raw.ml" +# 44977 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44643,27 +45035,27 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 44647 "src/ocaml/preprocess/parser_raw.ml" +# 45039 "src/ocaml/preprocess/parser_raw.ml" in -# 1080 "src/ocaml/preprocess/parser_raw.mly" +# 1146 "src/ocaml/preprocess/parser_raw.mly" ( xs ) -# 44652 "src/ocaml/preprocess/parser_raw.ml" +# 45044 "src/ocaml/preprocess/parser_raw.ml" in -# 3181 "src/ocaml/preprocess/parser_raw.mly" +# 3332 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44658 "src/ocaml/preprocess/parser_raw.ml" +# 45050 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__6_ = _endpos_xs_ in let _5 = let _1 = _1_inlined2 in -# 3505 "src/ocaml/preprocess/parser_raw.mly" +# 3656 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44667 "src/ocaml/preprocess/parser_raw.ml" +# 45059 "src/ocaml/preprocess/parser_raw.ml" in let _3 = @@ -44672,16 +45064,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44678 "src/ocaml/preprocess/parser_raw.ml" +# 45070 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3424 "src/ocaml/preprocess/parser_raw.mly" +# 3575 "src/ocaml/preprocess/parser_raw.mly" ( let lident = loc_last _3 in Pwith_type (_3, @@ -44691,7 +45083,7 @@ module Tables = struct ~manifest:_5 ~priv:_4 ~loc:(make_loc _sloc))) ) -# 44695 "src/ocaml/preprocess/parser_raw.ml" +# 45087 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44744,9 +45136,9 @@ module Tables = struct let _v : (Parsetree.with_constraint) = let _5 = let _1 = _1_inlined2 in -# 3505 "src/ocaml/preprocess/parser_raw.mly" +# 3656 "src/ocaml/preprocess/parser_raw.mly" ( _1 ) -# 44750 "src/ocaml/preprocess/parser_raw.ml" +# 45142 "src/ocaml/preprocess/parser_raw.ml" in let _endpos__5_ = _endpos__1_inlined2_ in @@ -44756,16 +45148,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44762 "src/ocaml/preprocess/parser_raw.ml" +# 45154 "src/ocaml/preprocess/parser_raw.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3437 "src/ocaml/preprocess/parser_raw.mly" +# 3588 "src/ocaml/preprocess/parser_raw.mly" ( let lident = loc_last _3 in Pwith_typesubst (_3, @@ -44773,7 +45165,7 @@ module Tables = struct ~params:_2 ~manifest:_5 ~loc:(make_loc _sloc))) ) -# 44777 "src/ocaml/preprocess/parser_raw.ml" +# 45169 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44822,9 +45214,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44828 "src/ocaml/preprocess/parser_raw.ml" +# 45220 "src/ocaml/preprocess/parser_raw.ml" in let _2 = @@ -44833,15 +45225,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44839 "src/ocaml/preprocess/parser_raw.ml" +# 45231 "src/ocaml/preprocess/parser_raw.ml" in -# 3445 "src/ocaml/preprocess/parser_raw.mly" +# 3596 "src/ocaml/preprocess/parser_raw.mly" ( Pwith_module (_2, _4) ) -# 44845 "src/ocaml/preprocess/parser_raw.ml" +# 45237 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44890,9 +45282,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44896 "src/ocaml/preprocess/parser_raw.ml" +# 45288 "src/ocaml/preprocess/parser_raw.ml" in let _2 = @@ -44901,15 +45293,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44907 "src/ocaml/preprocess/parser_raw.ml" +# 45299 "src/ocaml/preprocess/parser_raw.ml" in -# 3447 "src/ocaml/preprocess/parser_raw.mly" +# 3598 "src/ocaml/preprocess/parser_raw.mly" ( Pwith_modsubst (_2, _4) ) -# 44913 "src/ocaml/preprocess/parser_raw.ml" +# 45305 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44965,15 +45357,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 44971 "src/ocaml/preprocess/parser_raw.ml" +# 45363 "src/ocaml/preprocess/parser_raw.ml" in -# 3449 "src/ocaml/preprocess/parser_raw.mly" +# 3600 "src/ocaml/preprocess/parser_raw.mly" ( Pwith_modtype (l, rhs) ) -# 44977 "src/ocaml/preprocess/parser_raw.ml" +# 45369 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45029,15 +45421,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 996 "src/ocaml/preprocess/parser_raw.mly" +# 1062 "src/ocaml/preprocess/parser_raw.mly" ( mkrhs _1 _sloc ) -# 45035 "src/ocaml/preprocess/parser_raw.ml" +# 45427 "src/ocaml/preprocess/parser_raw.ml" in -# 3451 "src/ocaml/preprocess/parser_raw.mly" +# 3602 "src/ocaml/preprocess/parser_raw.mly" ( Pwith_modtypesubst (l, rhs) ) -# 45041 "src/ocaml/preprocess/parser_raw.ml" +# 45433 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45060,9 +45452,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = -# 3454 "src/ocaml/preprocess/parser_raw.mly" +# 3605 "src/ocaml/preprocess/parser_raw.mly" ( Public ) -# 45066 "src/ocaml/preprocess/parser_raw.ml" +# 45458 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45092,9 +45484,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 3455 "src/ocaml/preprocess/parser_raw.mly" +# 3606 "src/ocaml/preprocess/parser_raw.mly" ( Private ) -# 45098 "src/ocaml/preprocess/parser_raw.ml" +# 45490 "src/ocaml/preprocess/parser_raw.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45130,9 +45522,9 @@ module MenhirInterpreter = struct | T_VAL : unit terminal | T_UNDERSCORE : unit terminal | T_UIDENT : ( -# 851 "src/ocaml/preprocess/parser_raw.mly" +# 917 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45136 "src/ocaml/preprocess/parser_raw.ml" +# 45528 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_TYPE : unit terminal | T_TRY_LWT : unit terminal @@ -45143,9 +45535,9 @@ module MenhirInterpreter = struct | T_THEN : unit terminal | T_STRUCT : unit terminal | T_STRING : ( -# 837 "src/ocaml/preprocess/parser_raw.mly" +# 903 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string option) -# 45149 "src/ocaml/preprocess/parser_raw.ml" +# 45541 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_STAR : unit terminal | T_SIG : unit terminal @@ -45156,22 +45548,22 @@ module MenhirInterpreter = struct | T_RBRACKET : unit terminal | T_RBRACE : unit terminal | T_QUOTED_STRING_ITEM : ( -# 842 "src/ocaml/preprocess/parser_raw.mly" +# 908 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string * Location.t * string option) -# 45162 "src/ocaml/preprocess/parser_raw.ml" +# 45554 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_QUOTED_STRING_EXPR : ( -# 839 "src/ocaml/preprocess/parser_raw.mly" +# 905 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t * string * Location.t * string option) -# 45167 "src/ocaml/preprocess/parser_raw.ml" +# 45559 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_QUOTE : unit terminal | T_QUESTION : unit terminal | T_PRIVATE : unit terminal | T_PREFIXOP : ( -# 823 "src/ocaml/preprocess/parser_raw.mly" +# 889 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45175 "src/ocaml/preprocess/parser_raw.ml" +# 45567 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_PLUSEQ : unit terminal | T_PLUSDOT : unit terminal @@ -45179,9 +45571,9 @@ module MenhirInterpreter = struct | T_PERCENT : unit terminal | T_OR : unit terminal | T_OPTLABEL : ( -# 816 "src/ocaml/preprocess/parser_raw.mly" +# 882 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45185 "src/ocaml/preprocess/parser_raw.ml" +# 45577 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_OPEN : unit terminal | T_OF : unit terminal @@ -45198,15 +45590,15 @@ module MenhirInterpreter = struct | T_MATCH : unit terminal | T_LPAREN : unit terminal | T_LIDENT : ( -# 799 "src/ocaml/preprocess/parser_raw.mly" +# 865 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45204 "src/ocaml/preprocess/parser_raw.ml" +# 45596 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_LET_LWT : unit terminal | T_LETOP : ( -# 781 "src/ocaml/preprocess/parser_raw.mly" +# 847 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45210 "src/ocaml/preprocess/parser_raw.ml" +# 45602 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_LET : unit terminal | T_LESSMINUS : unit terminal @@ -45224,49 +45616,49 @@ module MenhirInterpreter = struct | T_LBRACE : unit terminal | T_LAZY : unit terminal | T_LABEL : ( -# 786 "src/ocaml/preprocess/parser_raw.mly" +# 852 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45230 "src/ocaml/preprocess/parser_raw.ml" +# 45622 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_INT : ( -# 785 "src/ocaml/preprocess/parser_raw.mly" +# 851 "src/ocaml/preprocess/parser_raw.mly" (string * char option) -# 45235 "src/ocaml/preprocess/parser_raw.ml" +# 45627 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_INITIALIZER : unit terminal | T_INHERIT : unit terminal | T_INFIXOP4 : ( -# 779 "src/ocaml/preprocess/parser_raw.mly" +# 845 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45242 "src/ocaml/preprocess/parser_raw.ml" +# 45634 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_INFIXOP3 : ( -# 778 "src/ocaml/preprocess/parser_raw.mly" +# 844 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45247 "src/ocaml/preprocess/parser_raw.ml" +# 45639 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_INFIXOP2 : ( -# 777 "src/ocaml/preprocess/parser_raw.mly" +# 843 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45252 "src/ocaml/preprocess/parser_raw.ml" +# 45644 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_INFIXOP1 : ( -# 776 "src/ocaml/preprocess/parser_raw.mly" +# 842 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45257 "src/ocaml/preprocess/parser_raw.ml" +# 45649 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_INFIXOP0 : ( -# 775 "src/ocaml/preprocess/parser_raw.mly" +# 841 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45262 "src/ocaml/preprocess/parser_raw.ml" +# 45654 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_INCLUDE : unit terminal | T_IN : unit terminal | T_IF : unit terminal | T_HASHOP : ( -# 834 "src/ocaml/preprocess/parser_raw.mly" +# 900 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45270 "src/ocaml/preprocess/parser_raw.ml" +# 45662 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_HASH : unit terminal | T_GREATERRBRACKET : unit terminal @@ -45279,9 +45671,9 @@ module MenhirInterpreter = struct | T_FOR_LWT : unit terminal | T_FOR : unit terminal | T_FLOAT : ( -# 764 "src/ocaml/preprocess/parser_raw.mly" +# 830 "src/ocaml/preprocess/parser_raw.mly" (string * char option) -# 45285 "src/ocaml/preprocess/parser_raw.ml" +# 45677 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_FINALLY_LWT : unit terminal | T_FALSE : unit terminal @@ -45295,25 +45687,25 @@ module MenhirInterpreter = struct | T_DOWNTO : unit terminal | T_DOTTILDE : unit terminal | T_DOTOP : ( -# 780 "src/ocaml/preprocess/parser_raw.mly" +# 846 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45301 "src/ocaml/preprocess/parser_raw.ml" +# 45693 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_DOTLESS : unit terminal | T_DOTDOT : unit terminal | T_DOT : unit terminal | T_DONE : unit terminal | T_DOCSTRING : ( -# 859 "src/ocaml/preprocess/parser_raw.mly" +# 925 "src/ocaml/preprocess/parser_raw.mly" (Docstrings.docstring) -# 45310 "src/ocaml/preprocess/parser_raw.ml" +# 45702 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_DO : unit terminal | T_CONSTRAINT : unit terminal | T_COMMENT : ( -# 858 "src/ocaml/preprocess/parser_raw.mly" +# 924 "src/ocaml/preprocess/parser_raw.mly" (string * Location.t) -# 45317 "src/ocaml/preprocess/parser_raw.ml" +# 45709 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_COMMA : unit terminal | T_COLONGREATER : unit terminal @@ -45322,9 +45714,9 @@ module MenhirInterpreter = struct | T_COLON : unit terminal | T_CLASS : unit terminal | T_CHAR : ( -# 744 "src/ocaml/preprocess/parser_raw.mly" +# 810 "src/ocaml/preprocess/parser_raw.mly" (char) -# 45328 "src/ocaml/preprocess/parser_raw.ml" +# 45720 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_BEGIN : unit terminal | T_BARRBRACKET : unit terminal @@ -45335,9 +45727,9 @@ module MenhirInterpreter = struct | T_ASSERT : unit terminal | T_AS : unit terminal | T_ANDOP : ( -# 782 "src/ocaml/preprocess/parser_raw.mly" +# 848 "src/ocaml/preprocess/parser_raw.mly" (string) -# 45341 "src/ocaml/preprocess/parser_raw.ml" +# 45733 "src/ocaml/preprocess/parser_raw.ml" ) terminal | T_AND : unit terminal | T_AMPERSAND : unit terminal @@ -45362,7 +45754,7 @@ module MenhirInterpreter = struct | N_type_parameter : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) nonterminal | N_type_longident : (Longident.t) nonterminal | N_type_kind : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) nonterminal - | N_type_constraint : (Parsetree.core_type option * Parsetree.core_type option) nonterminal + | N_type_constraint : (Parsetree.type_constraint) nonterminal | N_tuple_type : (Parsetree.core_type) nonterminal | N_toplevel_phrase : (Parsetree.toplevel_phrase) nonterminal | N_toplevel_directive : (Parsetree.toplevel_phrase) nonterminal @@ -45401,6 +45793,7 @@ module MenhirInterpreter = struct | N_reversed_nonempty_llist_name_tag_ : (string list) nonterminal | N_reversed_nonempty_llist_labeled_simple_expr_ : ((Asttypes.arg_label * Parsetree.expression) list) nonterminal | N_reversed_nonempty_llist_functor_arg_ : ((Lexing.position * Parsetree.functor_parameter) list) nonterminal + | N_reversed_nonempty_concat_fun_param_as_list_ : (Parsetree.function_param list) nonterminal | N_reversed_llist_preceded_CONSTRAINT_constrain__ : ((Parsetree.core_type * Parsetree.core_type * Location.t) list) nonterminal | N_reversed_bar_llist_extension_constructor_declaration_ : (Parsetree.extension_constructor list) nonterminal | N_reversed_bar_llist_extension_constructor_ : (Parsetree.extension_constructor list) nonterminal @@ -45434,12 +45827,13 @@ module MenhirInterpreter = struct | N_parse_any_longident : (Longident.t) nonterminal | N_paren_module_expr : (Parsetree.module_expr) nonterminal | N_optlabel : (string) nonterminal - | N_option_type_constraint_ : ((Parsetree.core_type option * Parsetree.core_type option) option) nonterminal + | N_option_type_constraint_ : (Parsetree.type_constraint option) nonterminal | N_option_preceded_EQUAL_seq_expr__ : (Parsetree.expression option) nonterminal | N_option_preceded_EQUAL_pattern__ : (Parsetree.pattern option) nonterminal | N_option_preceded_EQUAL_module_type__ : (Parsetree.module_type option) nonterminal | N_option_preceded_EQUAL_expr__ : (Parsetree.expression option) nonterminal | N_option_preceded_COLON_core_type__ : (Parsetree.core_type option) nonterminal + | N_option_preceded_COLON_atomic_type__ : (Parsetree.core_type option) nonterminal | N_option_preceded_AS_mkrhs_LIDENT___ : (string Location.loc option) nonterminal | N_option_SEMI_ : (unit option) nonterminal | N_option_BAR_ : (unit option) nonterminal @@ -45447,6 +45841,7 @@ module MenhirInterpreter = struct | N_operator : (string) nonterminal | N_open_description : (Longident.t Location.loc Parsetree.open_infos * string Location.loc option) nonterminal | N_open_declaration : (Parsetree.module_expr Parsetree.open_infos * string Location.loc option) nonterminal + | N_object_type : (Parsetree.core_type) nonterminal | N_nonempty_type_kind : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) nonterminal | N_nonempty_list_raw_string_ : (string list) nonterminal | N_nonempty_list_mkrhs_LIDENT__ : (string Location.loc list) nonterminal @@ -45468,7 +45863,7 @@ module MenhirInterpreter = struct | N_mk_longident_mod_longident_UIDENT_ : (Longident.t) nonterminal | N_mk_longident_mod_longident_LIDENT_ : (Longident.t) nonterminal | N_mk_longident_mod_ext_longident_ident_ : (Longident.t) nonterminal - | N_mk_longident_mod_ext_longident___anonymous_41_ : (Longident.t) nonterminal + | N_mk_longident_mod_ext_longident___anonymous_43_ : (Longident.t) nonterminal | N_mk_longident_mod_ext_longident_UIDENT_ : (Longident.t) nonterminal | N_mk_longident_mod_ext_longident_LIDENT_ : (Longident.t) nonterminal | N_method_ : ((string Location.loc * Asttypes.private_flag * Parsetree.class_field_kind) * @@ -45529,16 +45924,22 @@ module MenhirInterpreter = struct | N_functor_args : ((Lexing.position * Parsetree.functor_parameter) list) nonterminal | N_functor_arg : (Lexing.position * Parsetree.functor_parameter) nonterminal | N_function_type : (Parsetree.core_type) nonterminal - | N_fun_def : (Parsetree.expression) nonterminal - | N_fun_binding : (Parsetree.expression) nonterminal + | N_fun_seq_expr : (Parsetree.expression) nonterminal + | N_fun_params : (Parsetree.function_param list) nonterminal + | N_fun_param_as_list : (Parsetree.function_param list) nonterminal + | N_fun_expr : (Parsetree.expression) nonterminal + | N_fun_body : (Parsetree.function_body) nonterminal | N_formal_class_parameters : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) nonterminal | N_floating_attribute : (Parsetree.attribute) nonterminal + | N_extension_type : (Parsetree.core_type) nonterminal | N_extension_constructor_rebind_epsilon_ : (Parsetree.extension_constructor) nonterminal | N_extension_constructor_rebind_BAR_ : (Parsetree.extension_constructor) nonterminal | N_extension : (Parsetree.extension) nonterminal | N_ext : (string Location.loc option) nonterminal | N_expr : (Parsetree.expression) nonterminal | N_direction_flag : (Asttypes.direction_flag) nonterminal + | N_delimited_type_supporting_local_open : (Parsetree.core_type) nonterminal + | N_delimited_type : (Parsetree.core_type) nonterminal | N_core_type : (Parsetree.core_type) nonterminal | N_constructor_declarations : (Parsetree.constructor_declaration list) nonterminal | N_constructor_arguments : (Parsetree.constructor_arguments) nonterminal @@ -45561,6 +45962,7 @@ module MenhirInterpreter = struct | N_class_field : (Parsetree.class_field) nonterminal | N_class_expr : (Parsetree.class_expr) nonterminal | N_attribute : (Parsetree.attribute) nonterminal + | N_attr_payload : (Parsetree.payload) nonterminal | N_attr_id : (string Location.loc) nonterminal | N_atomic_type : (Parsetree.core_type) nonterminal | N_any_longident : (Longident.t) nonterminal @@ -45855,316 +46257,336 @@ module MenhirInterpreter = struct and nonterminal = fun nt -> match nt with - | 225 -> + | 235 -> X (N N_additive) - | 224 -> + | 234 -> X (N N_alias_type) - | 223 -> + | 233 -> X (N N_and_let_binding) - | 222 -> + | 232 -> X (N N_any_longident) - | 221 -> + | 231 -> X (N N_atomic_type) - | 220 -> + | 230 -> X (N N_attr_id) - | 219 -> + | 229 -> + X (N N_attr_payload) + | 228 -> X (N N_attribute) - | 218 -> + | 227 -> X (N N_class_expr) - | 217 -> + | 226 -> X (N N_class_field) - | 216 -> + | 225 -> X (N N_class_fun_binding) - | 215 -> + | 224 -> X (N N_class_fun_def) - | 214 -> + | 223 -> X (N N_class_longident) - | 213 -> + | 222 -> X (N N_class_self_pattern) - | 212 -> + | 221 -> X (N N_class_self_type) - | 211 -> + | 220 -> X (N N_class_sig_field) - | 210 -> + | 219 -> X (N N_class_signature) - | 209 -> + | 218 -> X (N N_class_simple_expr) - | 208 -> + | 217 -> X (N N_class_type) - | 207 -> + | 216 -> X (N N_class_type_declarations) - | 206 -> + | 215 -> X (N N_clty_longident) - | 205 -> + | 214 -> X (N N_constant) - | 204 -> + | 213 -> X (N N_constr_extra_nonprefix_ident) - | 203 -> + | 212 -> X (N N_constr_ident) - | 202 -> + | 211 -> X (N N_constr_longident) - | 201 -> + | 210 -> X (N N_constrain_field) - | 200 -> + | 209 -> X (N N_constructor_arguments) - | 199 -> + | 208 -> X (N N_constructor_declarations) - | 198 -> + | 207 -> X (N N_core_type) - | 197 -> + | 206 -> + X (N N_delimited_type) + | 205 -> + X (N N_delimited_type_supporting_local_open) + | 204 -> X (N N_direction_flag) - | 196 -> + | 203 -> X (N N_expr) - | 195 -> + | 202 -> X (N N_ext) - | 194 -> + | 201 -> X (N N_extension) - | 193 -> + | 200 -> X (N N_extension_constructor_rebind_BAR_) - | 192 -> + | 199 -> X (N N_extension_constructor_rebind_epsilon_) - | 191 -> + | 198 -> + X (N N_extension_type) + | 197 -> X (N N_floating_attribute) - | 190 -> + | 196 -> X (N N_formal_class_parameters) + | 195 -> + X (N N_fun_body) + | 194 -> + X (N N_fun_expr) + | 193 -> + X (N N_fun_param_as_list) + | 192 -> + X (N N_fun_params) + | 191 -> + X (N N_fun_seq_expr) + | 190 -> + X (N N_function_type) | 189 -> - X (N N_fun_binding) + X (N N_functor_arg) | 188 -> - X (N N_fun_def) + X (N N_functor_args) | 187 -> - X (N N_function_type) + X (N N_generalized_constructor_arguments) | 186 -> - X (N N_functor_arg) + X (N N_generic_constructor_declaration_BAR_) | 185 -> - X (N N_functor_args) + X (N N_generic_constructor_declaration_epsilon_) | 184 -> - X (N N_generalized_constructor_arguments) + X (N N_generic_type_declaration_no_nonrec_flag_type_subst_kind_) | 183 -> - X (N N_generic_constructor_declaration_BAR_) + X (N N_generic_type_declaration_nonrec_flag_type_kind_) | 182 -> - X (N N_generic_constructor_declaration_epsilon_) + X (N N_ident) | 181 -> - X (N N_generic_type_declaration_no_nonrec_flag_type_subst_kind_) + X (N N_implementation) | 180 -> - X (N N_generic_type_declaration_nonrec_flag_type_kind_) + X (N N_index_mod) | 179 -> - X (N N_ident) + X (N N_interface) | 178 -> - X (N N_implementation) + X (N N_item_extension) | 177 -> - X (N N_index_mod) + X (N N_label_declaration) | 176 -> - X (N N_interface) + X (N N_label_declaration_semi) | 175 -> - X (N N_item_extension) + X (N N_label_declarations) | 174 -> - X (N N_label_declaration) + X (N N_label_let_pattern) | 173 -> - X (N N_label_declaration_semi) + X (N N_label_longident) | 172 -> - X (N N_label_declarations) + X (N N_labeled_simple_expr) | 171 -> - X (N N_label_let_pattern) + X (N N_labeled_simple_pattern) | 170 -> - X (N N_label_longident) + X (N N_let_binding_body) | 169 -> - X (N N_labeled_simple_expr) + X (N N_let_binding_body_no_punning) | 168 -> - X (N N_labeled_simple_pattern) + X (N N_let_bindings_ext_) | 167 -> - X (N N_let_binding_body) + X (N N_let_bindings_no_ext_) | 166 -> - X (N N_let_binding_body_no_punning) + X (N N_let_pattern) | 165 -> - X (N N_let_bindings_ext_) + X (N N_letop_binding_body) | 164 -> - X (N N_let_bindings_no_ext_) + X (N N_letop_bindings) | 163 -> - X (N N_let_pattern) + X (N N_list_and_class_declaration_) | 162 -> - X (N N_letop_binding_body) + X (N N_list_and_class_description_) | 161 -> - X (N N_letop_bindings) + X (N N_list_and_class_type_declaration_) | 160 -> - X (N N_list_and_class_declaration_) + X (N N_list_and_module_binding_) | 159 -> - X (N N_list_and_class_description_) + X (N N_list_and_module_declaration_) | 158 -> - X (N N_list_and_class_type_declaration_) + X (N N_list_attribute_) | 157 -> - X (N N_list_and_module_binding_) + X (N N_list_generic_and_type_declaration_type_kind__) | 156 -> - X (N N_list_and_module_declaration_) + X (N N_list_generic_and_type_declaration_type_subst_kind__) | 155 -> - X (N N_list_attribute_) + X (N N_list_post_item_attribute_) | 154 -> - X (N N_list_generic_and_type_declaration_type_kind__) + X (N N_list_signature_element_) | 153 -> - X (N N_list_generic_and_type_declaration_type_subst_kind__) + X (N N_list_structure_element_) | 152 -> - X (N N_list_post_item_attribute_) + X (N N_list_text_csig_class_sig_field__) | 151 -> - X (N N_list_signature_element_) + X (N N_list_text_cstr_class_field__) | 150 -> - X (N N_list_structure_element_) + X (N N_list_text_str_structure_item__) | 149 -> - X (N N_list_text_csig_class_sig_field__) + X (N N_list_use_file_element_) | 148 -> - X (N N_list_text_cstr_class_field__) + X (N N_listx_SEMI_record_pat_field_UNDERSCORE_) | 147 -> - X (N N_list_text_str_structure_item__) + X (N N_lwt_binding) | 146 -> - X (N N_list_use_file_element_) + X (N N_lwt_bindings) | 145 -> - X (N N_listx_SEMI_record_pat_field_UNDERSCORE_) + X (N N_match_case) | 144 -> - X (N N_lwt_binding) + X (N N_meth_list) | 143 -> - X (N N_lwt_bindings) + X (N N_method_) | 142 -> - X (N N_match_case) + X (N N_mk_longident_mod_ext_longident_LIDENT_) | 141 -> - X (N N_meth_list) + X (N N_mk_longident_mod_ext_longident_UIDENT_) | 140 -> - X (N N_method_) + X (N N_mk_longident_mod_ext_longident___anonymous_43_) | 139 -> - X (N N_mk_longident_mod_ext_longident_LIDENT_) + X (N N_mk_longident_mod_ext_longident_ident_) | 138 -> - X (N N_mk_longident_mod_ext_longident_UIDENT_) + X (N N_mk_longident_mod_longident_LIDENT_) | 137 -> - X (N N_mk_longident_mod_ext_longident___anonymous_41_) + X (N N_mk_longident_mod_longident_UIDENT_) | 136 -> - X (N N_mk_longident_mod_ext_longident_ident_) + X (N N_mk_longident_mod_longident_val_ident_) | 135 -> - X (N N_mk_longident_mod_longident_LIDENT_) + X (N N_mod_ext_longident) | 134 -> - X (N N_mk_longident_mod_longident_UIDENT_) + X (N N_mod_longident) | 133 -> - X (N N_mk_longident_mod_longident_val_ident_) + X (N N_module_binding_body) | 132 -> - X (N N_mod_ext_longident) + X (N N_module_declaration_body) | 131 -> - X (N N_mod_longident) + X (N N_module_expr) | 130 -> - X (N N_module_binding_body) + X (N N_module_name) | 129 -> - X (N N_module_declaration_body) + X (N N_module_subst) | 128 -> - X (N N_module_expr) + X (N N_module_type) | 127 -> - X (N N_module_name) + X (N N_module_type_declaration) | 126 -> - X (N N_module_subst) + X (N N_module_type_subst) | 125 -> - X (N N_module_type) + X (N N_mty_longident) | 124 -> - X (N N_module_type_declaration) + X (N N_mutable_flag) | 123 -> - X (N N_module_type_subst) + X (N N_mutable_virtual_flags) | 122 -> - X (N N_mty_longident) + X (N N_name_tag) | 121 -> - X (N N_mutable_flag) + X (N N_nonempty_list_mkrhs_LIDENT__) | 120 -> - X (N N_mutable_virtual_flags) + X (N N_nonempty_list_raw_string_) | 119 -> - X (N N_name_tag) + X (N N_nonempty_type_kind) | 118 -> - X (N N_nonempty_list_mkrhs_LIDENT__) + X (N N_object_type) | 117 -> - X (N N_nonempty_list_raw_string_) + X (N N_open_declaration) | 116 -> - X (N N_nonempty_type_kind) + X (N N_open_description) | 115 -> - X (N N_open_declaration) + X (N N_operator) | 114 -> - X (N N_open_description) + X (N N_opt_ampersand) | 113 -> - X (N N_operator) + X (N N_option_BAR_) | 112 -> - X (N N_opt_ampersand) + X (N N_option_SEMI_) | 111 -> - X (N N_option_BAR_) + X (N N_option_preceded_AS_mkrhs_LIDENT___) | 110 -> - X (N N_option_SEMI_) + X (N N_option_preceded_COLON_atomic_type__) | 109 -> - X (N N_option_preceded_AS_mkrhs_LIDENT___) - | 108 -> X (N N_option_preceded_COLON_core_type__) - | 107 -> + | 108 -> X (N N_option_preceded_EQUAL_expr__) - | 106 -> + | 107 -> X (N N_option_preceded_EQUAL_module_type__) - | 105 -> + | 106 -> X (N N_option_preceded_EQUAL_pattern__) - | 104 -> + | 105 -> X (N N_option_preceded_EQUAL_seq_expr__) - | 103 -> + | 104 -> X (N N_option_type_constraint_) - | 102 -> + | 103 -> X (N N_optlabel) - | 101 -> + | 102 -> X (N N_paren_module_expr) - | 100 -> + | 101 -> X (N N_parse_any_longident) - | 99 -> + | 100 -> X (N N_parse_constr_longident) - | 98 -> + | 99 -> X (N N_parse_core_type) - | 97 -> + | 98 -> X (N N_parse_expression) - | 96 -> + | 97 -> X (N N_parse_mod_ext_longident) - | 95 -> + | 96 -> X (N N_parse_mod_longident) - | 94 -> + | 95 -> X (N N_parse_module_expr) - | 93 -> + | 94 -> X (N N_parse_module_type) - | 92 -> + | 93 -> X (N N_parse_mty_longident) - | 91 -> + | 92 -> X (N N_parse_pattern) - | 90 -> + | 91 -> X (N N_parse_val_longident) - | 89 -> + | 90 -> X (N N_pattern) - | 88 -> + | 89 -> X (N N_pattern_comma_list_pattern_) - | 87 -> + | 88 -> X (N N_pattern_comma_list_pattern_no_exn_) - | 86 -> + | 87 -> X (N N_pattern_gen) - | 85 -> + | 86 -> X (N N_pattern_no_exn) - | 84 -> + | 85 -> X (N N_pattern_var) - | 83 -> + | 84 -> X (N N_payload) - | 82 -> + | 83 -> X (N N_possibly_poly_core_type_) - | 81 -> + | 82 -> X (N N_possibly_poly_core_type_no_attr_) - | 80 -> + | 81 -> X (N N_post_item_attribute) - | 79 -> + | 80 -> X (N N_primitive_declaration) - | 78 -> + | 79 -> X (N N_private_flag) - | 77 -> + | 78 -> X (N N_private_virtual_flags) - | 76 -> + | 77 -> X (N N_rec_flag) - | 75 -> + | 76 -> X (N N_record_expr_content) - | 74 -> + | 75 -> X (N N_reversed_bar_llist_constructor_declaration_) - | 73 -> + | 74 -> X (N N_reversed_bar_llist_extension_constructor_) - | 72 -> + | 73 -> X (N N_reversed_bar_llist_extension_constructor_declaration_) - | 71 -> + | 72 -> X (N N_reversed_llist_preceded_CONSTRAINT_constrain__) + | 71 -> + X (N N_reversed_nonempty_concat_fun_param_as_list_) | 70 -> X (N N_reversed_nonempty_llist_functor_arg_) | 69 -> @@ -46281,22 +46703,22 @@ module MenhirInterpreter = struct assert false and lr0_incoming = - (16, "\000\000\000\006\000H\000\004\000\b\000\n\000\012\000\014\000\018\000\020\000\024\000\026\000\028\000 \000\"\000(\0000\000>\000J\000N\000P\000R\000T\000V\000X\000Z\000b\000f\000j\000p\000\140\000\146\000\148\000\160\000\162\000\164\000\178\000\180\000\182\000\186\000\192\000\194\000\196\000\204\000\206\000\208\000\220\000\224\000\226\000\240\000\244\001\000\001\002\001\006\000U\000\218\001\185\001\185\001\135\000\132\001\185\000\b\001\135\0017\000\016\000\018\000\022\001\135\0017\000\024\001\135\0017\000\026\000$\0008\000@\000R\001\135\0017\000h\000\016\000F\000\144\000\188\000`\000\144\000\188\000h\000&\000.\000@\000B\000D\000F\000H\000J\000Z\001\135\0017\000\016\000\018\000\255\000.\000\238\000\018\000(\0017\000\014\001\135\0017\000h\000F\000^\000`\000n\000t\000\150\000\152\000\154\000\156\000\158\000\166\000\176\000\198\000\212\000h\000,\000\216\001c\000.\000r\000\134\001c\0002\000r\000\138\001c\0004\000r\000\234\000\248\000\252\001\004\001\b\001\n\000\227\000.\000j\000/\000\238\000\016\000\018\000:\000\018\000j\001g\000<\000j\000\238\000L\000h\000:\001g\000Z\001\135\0017\000Z\000\020\000P\0017\000\016\000\"\0017\000\020\001\135\0017\000@\000F\000\252\000T\000`\000\252\000h\000\154\000\252\000F\000`\0005\000\016\000:\001g\0007\000;\000{\000.\000\230\000;\0009\000j\000\198\000\018\000>\000h\000j\000\238\000j\000t\000j\000\238\000x\001\185\000*\0006\000D\000F\000N\000\252\001\135\0017\000h\000\014\0017\000V\001\135\0017\000j\001\007\000\218\000\018\000j\001\r\001\015\001\173\001\183\0017\000^\000`\000d\001\135\0017\000f\001\135\0017\000h\000@\000~\000j\000r\000l\001\135\0017\0000\000\153\000~\000\134\0002\000\138\001\015\001#\0004\001U\000\238\000z\000\250\000\223\000|\0002\000\223\000\134\000\168\001\t\000h\001\t\000.\000\218\000\018\001\021\000\218\000j\001\023\001\157\000\250\000\254\001g\000=\000C\000\\\000s\000&\001\023\001\133\001\187\000\168\001\157\000=\000\205\000C\000\\\001w\001\187\000&\001\187\001w\000I\000q\000\127\0002\000\250\000q\000\239\000P\001\b\000\225\000\131\001\b\001w\001\193\001\002\000:\001g\0017\001\193\0017\001\141\001\183\001\193\000I\0002\000q\000\250\000\127\0002\000\127\0002\000\127\0002\000\176\000\137\0002\000\239\000\239\001\141\000\217\000\198\000\140\001\135\0017\000\144\000\168\000=\000\188\000\192\000\242\000/\0001\000W\000Y\000]\000_\000\216\000_\001\155\000\239\001\007\000\218\000h\000.\000\196\001\135\0017\000Y\000\173\000\177\000\230\000\179\000\230\000\179\000\236\000\179\000\250\000\179\001\002\000/\001\183\000\239\000\179\001\133\001\149\000h\000\020\000j\000\237\000\237\000.\000Y\001\149\001\153\000`\000\236\000.\000\179\000.\000\238\001\141\000.\000\179\000\179\000\236\000.\000\179\000.\000\134\0002\000k\0002\000\179\000,\000k\000]\000\179\000\211\000,\000\016\000,\000\221\001#\000\246\000k\000\246\000/\000\030\000h\000j\000\238\001\141\001W\000.\000j\000<\000h\001W\000\198\000n\000/\000L\000\016\000h\000\179\000\238\001\141\001G\000\209\000.\000j\000\169\000h\000\020\000\237\000.\000\142\000Y\000\198\000p\000N\000\252\001\135\0017\000\178\0017\000h\000.\000\255\000\238\000h\000.\000\\\000\178\0017\000\141\001u\001s\000\\\000\245\000\251\000\004\000\020\0009\001U\000\198\000>\000\234\001\193\000\031\001\193\000\143\000\226\001\141\000\198\001\141\000;\000Z\000\020\000\245\000\198\000\251\000\\\000\251\001\183\001\t\000\218\000\018\001g\001\017\001g\001\133\000\234\000\251\001\007\000\198\001\t\000\218\000\234\001\t\000!\000\129\001\006\000!\001u\000\251\000\251\000.\000\251\000.\001s\000\\\000\203\001\001\000h\000.\001\001\000.\000\238\000\251\000.\000\203\001\183\001\007\001\133\001\001\000\162\000\134\000\136\000j\000\198\000\138\000j\000\210\000\214\000\140\001\135\0017\000\244\001\135\0017\000\164\001\135\0017\000\180\001\135\0017\000\250\000\179\000\n\000\182\001\135\0017\000h\000\020\000\237\000.\000\\\000\184\001\135\0017\000\179\000\162\000\186\001\135\0017\000\179\000\198\000\252\000-\000/\000[\000\166\000[\000\168\000j\000\212\000h\001\000\001\135\0017\000[\000\218\000h\000K\000[\000\030\000h\000j\000\232\001\141\000\238\001\141\000\232\001\141\000A\000.\000j\000<\000j\000L\000[\000\239\001\007\000\218\000h\000.\000D\000F\000Z\001\135\0017\001\001\000\238\000\251\000.\000^\000`\000n\000Y\000\238\001\141\000\198\000g\000u\000\230\000\239\000[\001\011\001\133\001\149\001\155\001\031\000\162\000g\001!\001K\000\162\000g\001\137\000&\001\137\000B\001\137\000D\001\137\000F\001\137\000H\001\137\000J\001\137\000^\001\137\000`\001\137\000t\001\137\000\150\001\137\000\152\001\137\000\154\001\137\000\156\001\137\000\158\001\137\000\176\001\137\000\198\001\137\000\230\001\137\000\234\001\137\000\236\001\137\000\248\001\137\001\b\001\137\001\n\001\137\001\183\001\149\000[\001\195\001\137\000,\000H\001\185\000g\000g\001\006\0017\000W\000\238\001\141\000\198\000g\000\171\000\198\000g\000\230\000\179\000\236\000\179\000\250\000\179\001\002\000/\001\183\000\173\000\175\000\230\000\179\001M\001O\000\130\001\185\000<\000\179\000\n\000g\000Z\000\020\001\135\0017\001g\000\198\000\251\000\213\000\161\0011\0011\001\135\0017\0000\000\255\000\198\001\001\000\238\000\251\000\198\001\001\001\005\0011\001\006\0017\000\255\001\005\0011\001;\001u\001\005\001;\000\255\001\005\0011\000v\001\185\000\128\001\185\000\160\001\135\0017\001\001\0011\000\194\001\135\0017\000/\000\238\000\135\000:\001g\000\218\001\141\000\165\000\198\000$\000\235\000\235\0011\001\141\000\196\001\135\0017\000\018\000h\000\236\000.\000\134\001\151\000P\000\138\000X\000\243\000j\000\238\000\135\000\218\001\193\000\163\0017\000,\0017\001\193\001Y\0004\001[\001Y\001]\000y\000&\001\187\001\145\001\187\000\198\000h\001\007\000\218\000h\001\149\0017\0011\000\238\000\135\000\218\001\145\000\\\001\187\001\187\001\145\000\\\001\187\001\187\001q\0017\0011\001\153\000\238\000\020\001\135\0017\000T\0009\000j\000\234\000\134\000\138\001Y\0004\000\216\000\250\001\151\001q\0017\000\149\000\250\001o\000\233\000\143\0011\001m\001o\001\141\000\198\000>\000\138\001Y\0004\000\216\001\143\001\151\001q\0017\000\138\001Y\0004\000\216\001\143\001\143\000?\000\143\0011\000=\000B\000>\000\157\000\145\0011\001o\001m\001o\0009\000j\000\234\000\233\000\143\0011\000?\000\143\0011\000=\000B\000\157\000\145\0011\000*\000N\000\252\001\135\0017\001\t\0011\001\135\0017\001\t\0011\000Z\000\020\001\135\0017\001g\000\234\000\251\0011\001\135\0017\000\018\000\234\001\t\0011\0000\000\255\000\238\000\251\0011\001\006\0017\000\255\000\238\000\251\0011\0019\0019\000\255\000\198\001\007\0011\000\238\000\251\001\003\0011\001u\001\003\000\160\001\135\0017\000\251\0011\000\196\001\135\0017\001\151\000\240\000\020\001\135\0017\000\012\000'\000\134\000{\0002\001}\000j\000\198\000R\0017\000h\001\141\000.\001\169\000\014\0017\000\012\000X\000X\000\012\000\241\000j\000\238\001\141\0011\000b\0017\000\012\000>\000>\000\012\000\155\000j\000\238\000\165\0011\000\148\0017\000p\000N\000\252\0017\001\007\000\162\000\134\000}\0002\001\157\000\230\001\141\001\141\001\133\001\157\001\165\001\183\0017\001\007\000\162\001\165\001\165\0011\000\226\0017\001\141\000\198\001\141\001\147\0011\001+\000\204\001_\0011\001\127\001\167\001+\001\165\0011\001\006\0017\000'\001}\000j\000\198\001\165\0011\001=\001=\001\135\0017\000'\001}\000j\000\238\000j\000\238\000C\000\\\000\134\001\141\000C\000\\\000\205\000C\000\\\001\023\001\133\001\161\001\165\001\161\001\161\001\161\0011\001\006\0017\000'\001}\000j\000\238\001\161\0011\001?\001?\000)\000a\000e\000\159\000\229\000\247\000\249\000\253\001/\001_\0011\001i\001\006\0017\0009\000j\000?\000\143\0011\0015\0015\001k\001\006\0017\0009\000j\000\234\000\233\000\143\0011\0013\0013\001\127\001\159\001/\000c\001/\001\141\000\240\001\135\0017\000'\001}\000j\000\198\000R\0017\001\171\000\014\000\252\0017\000\243\000j\000\198\000g\000A\000\198\000g\000+\0011\0017\000\012\000X\000X\000\012\000%\000j\000\238\001\141\000\243\000j\000\198\000g\000A\000\198\000g\000b\000\252\0017\000\157\000j\000\238\000\020\000\237\000\218\001\141\000\198\000g\000\165\000\198\000g\000Q\000Y\001Q\000A\000\198\000g\000Q\001{\001\025\0011\0017\000\012\000>\000>\000\012\000#\000j\000\238\000\165\000\157\000j\000\238\000\020\000\237\000\218\001\141\000\198\000g\000\165\000\198\000g\000Q\000\146\0017\000g\0011\000\148\000\252\0017\000h\000p\000H\001\185\0017\000\153\001O\0011\000N\000\252\0017\001\007\000\162\000\134\000}\0002\001\173\000\182\0017\001Q\000\\\001I\000\162\001\133\001\163\000\142\000[\000[\000\139\001S\001S\001\173\001\181\001\183\001\191\001\181\001\175\001\175\001\181\0017\001\007\000\162\001\181\0017\000\153\001O\0011\001\181\000.\000\238\001\161\000.\001\181\001\002\000j\000\219\0011\0017\001\181\000\219\0011\000\226\0017\001\147\0011\001)\000\204\001_\0011\001\127\001\179\001)\001\181\000\238\001\161\000\198\001\181\001Q\001\177\001\177\0011\001\006\0017\000'\001}\000j\001\177\0011\001A\001A\000)\000M\000p\001\135\0017\000\153\001O\0011\000S\000e\000\159\000\231\000\249\001\031\001\191\001-\001K\001\191\001_\0011\001i\0015\001\127\001\159\000O\000g\0011\001-\000\167\0002\001\031\001-\001K\000\167\0002\000\167\0002\0011\001\137\000\171\000\198\000g\001C\000\162\000g\001\004\001E\001E\000\252\000g\000.\000~\000\246\000o\000\246\001\137\000,\000o\000\134\0002\000o\0002\000\136\000m\000\172\000\138\000[\000\004\000i\001U\000A\000\207\000\215\000,\000i\000i\000\151\0004\001\007\000\218\000j\000/\000\212\000h\000o\000.\000r\001\137\000\134\000o\0002\000r\001\137\000\138\000o\0004\000r\001\137\000\218\000h\000g\000.\000r\001\137\000\134\000g\0002\000r\001\137\000\138\000g\0004\000r\001\137\001\007\000\212\000h\000o\000.\000r\001\137\000\134\000o\0002\000r\001\137\000\138\000o\0004\000r\001\137\001U\000r\001\137\000\139\001\137\000g\000.\000\134\000g\0002\000\138\000g\0004\001\007\000\212\000h\000o\000.\000\134\000o\0002\000\138\000o\0004\001U\000o\000.\000\134\000o\0002\000\138\000o\0004\000g\000\028\000\208\001\139\000g\000\224\000g\000\220\000g\000\224\000g\000\220\000\198\000g\001\139\000g\000\224\000g\000\220\000g\000h\000\020\000\237\000.\000\238\001\187\000\\\000g\001Q\001y\001y\001y\001Q\001y\000g\000\\\000g\000\\\000\218\000g\001\029\000\133\000\250\001\029\001\029\000g\000 \001\137\000\206\001\137\000\204\000g\000\204\000[\001\137\000\174\000[\000\151\0004\001\137\000\215\000,\000m\000\172\000m\000\172\000o\0002\000g\001\135\0017\001\001\000\162\000g\000Z\001\135\0017\000\255\001\005\000\162\000g\000\196\001\135\0017\001\151\001q\0017\000\162\000g\000g\001{\000Q\000g\000\209\000.\000j\000\238\000\020\000\237\000\218\001\141\000\198\000g\000\135\000\218\001\141\000\198\000g\000A\000\198\000g\000Q\001O\0011\001\137\000\246\000o\000\246\000[\000Z\001\135\0017\001\001\000.\000\238\000\251\000.\000g\000.\000A\000.\000g\000\004\000\133\000g\000\004\000\133\001\137\000.\000\232\000\251\000.\000\238\000\251\000.\000\232\000\251\000.\001\001\0011\001\135\0017\001\001\0011\000g\0011\001-\001-\000\167\0002\000\163\0017\000,\0017\000\216\001\027\001\187\000,\001\027\000\176\001\027\000\176\000C\000\\\001w\000w\000.\000\168\001\157\000=\000\230\001\141\001\141\000.\000\230\001\141\000\138\001Y\0004\000\216\001\141\001\143\000\233\000=\000B\000\157\000\250\001\151\000\198\001\149\0017\000\147\0011\001o\001\131\001m\001o\001\129\001\131\001\151\000\198\001\149\0017\0009\000j\000=\000B\000\157\000\147\0011\000O\000\204\001\001\000\251\000.\000\165\0011\000c\000\204\000\251\000.\000\179\000.\000\238\001\141\000.\001\171\001)\000\204\000g\000\004\000\133\000g\000\004\000\133\000\190\000g\000\190\000g\000g\000\224\000g\000\220\000\167\0002\0017\000g\000\224\000g\000\220\000O\000\202\001e\000\000\000c\000\202\001a\000\000\000h\000\236\000.\0001\000\201\001\t\000\218\000h\000\236\000.\0001\001g\001\019\001g\001\153\001\189\000\202\000\000\000\199\001\149\000\202\000\000\000\197\001\141\000\202\000\000\000g\000\202\000\195\000\000\000\193\001\t\000\202\000\000\000\191\001\007\000\202\000\000\000\189\001\001\000\202\000\000\000\187\000\251\000\202\000\000\000\185\000\245\000\202\000\000\000\179\000\202\000\183\000\000\000-\000\202\000\181\001\007\000\218\000\000\000\168\001g\000\026\000$\000\144\000\192\000-\001\007\000\202\000E\000G\000*\000M\001'\000g\0011\000*\001'\000*\000\000\000*\000G\000M\001%\001%\000g\0011\001%\001%\0003\000g\0011\001%\000\202\001%\000\202") + (16, "\000\000\000\006\000H\000\004\000\b\000\n\000\012\000\014\000\018\000\020\000\024\000\026\000\028\000 \000\"\000(\0000\000>\000J\000N\000P\000R\000T\000V\000X\000Z\000b\000f\000j\000p\000\140\000\146\000\148\000\160\000\162\000\164\000\178\000\180\000\182\000\186\000\192\000\194\000\196\000\204\000\206\000\208\000\220\000\224\000\226\000\240\000\244\001\000\001\002\001\006\000U\000\218\001\205\001\205\001\149\000\132\001\205\000\b\001\149\001=\000\016\000\018\000\022\001\149\001=\000\024\001\149\001=\000\026\000$\0008\000@\000R\001\149\001=\000h\000\016\000F\000\144\000\188\000`\000\144\000\188\000h\000&\000.\000@\000B\000D\000F\000H\000J\000Z\001\149\001=\000\016\000\018\001\005\000.\000\238\000\018\000(\001=\000\014\001\149\001=\000h\000F\000^\000`\000n\000t\000\150\000\152\000\154\000\156\000\158\000\166\000\176\000\198\000\212\000h\000,\000\216\001i\000.\000r\000\134\001i\0002\000r\000\138\001i\0004\000r\000\234\000\248\000\252\001\004\001\b\001\n\000\231\000.\000j\000/\000\238\000\016\000\018\000:\000\018\000j\001m\000<\000j\000\238\000L\000h\000:\001m\000Z\001\149\001=\000Z\000\020\000P\001=\000\016\000\"\001=\000\020\001\149\001=\000@\000F\000\252\000T\000`\000\252\000h\000\154\000\252\000F\000`\0005\000\016\000:\001m\0007\000;\000{\000.\000\230\000;\0009\000j\000\198\000\018\000>\000h\000j\000\238\000j\000t\000j\000\238\000x\001\205\000*\0006\000D\000F\000N\000\252\001\149\001=\000h\000\014\001=\000V\001\149\001=\000j\001\r\000\218\000\018\000j\001\019\001\021\001\191\001\201\001=\000^\000`\000d\001\149\001=\000f\001\149\001=\000h\000@\000~\000j\000r\000l\001\149\001=\0000\000\155\000~\000\134\0002\000\138\001\021\001)\0004\001[\000\238\000z\000\250\000\227\000|\0002\000\227\000\134\000\168\001\015\000h\001\015\000.\000\218\000\018\001\027\000\218\000j\001\029\001\175\000\250\000\254\001m\000=\000C\000\\\000s\000&\000\237\001\015\000\218\000h\000\207\000C\000\\\001\029\001}\001\141\001\147\001\155\001\157\001\207\000&\001\207\000\168\001\175\000=\001}\001\159\000.\001\201\001\213\001\002\000:\001m\001\155\001\207\001}\000I\000q\000\127\0002\000\250\000q\000\245\000P\001\b\000\229\000\131\001\b\001\213\001=\001\213\001=\001\159\000I\0002\000q\000\250\000\127\0002\000\127\0002\000\127\0002\000\176\000\137\0002\000\245\000\245\001\159\000\219\000\198\000\140\001\149\001=\000\144\000\168\000=\000\188\000\192\000\242\000/\0001\000W\000Y\000]\000_\000\216\000_\001\173\000\245\001\r\000\218\000h\000.\000\196\001\149\001=\000Y\000\175\000\179\000\230\000\181\000\230\000\181\000\236\000\181\000\250\000\181\001\002\000/\001\201\000\245\000\181\001\147\001\167\000h\000\020\000j\000\243\000\243\000.\000Y\001\167\001\171\000`\000\236\000.\000\181\000.\000\238\001\159\000.\000\181\000\181\000\236\000.\000\181\000.\000\134\0002\000k\0002\000\181\000,\000k\000]\000\181\000\213\000,\000\016\000,\000\225\001)\000\246\000k\000\246\000/\000\030\000h\000j\000\238\001\159\001]\000.\000j\000<\000h\001]\000\198\000n\000/\000L\000\016\000h\000\181\000\238\001\159\001M\000\211\000.\000j\000\171\000h\000\020\000\243\000.\000\142\000Y\000\198\000p\000N\000\252\001\149\001=\000\178\001=\000h\000.\001\005\000\238\000h\000.\000\\\000\178\001=\000\141\001{\001y\000\\\000\251\001\001\000\004\000\020\0009\001[\000\198\000>\000\234\001\213\000\031\001\213\000\145\000\226\001\159\000\198\001\159\000;\000Z\000\020\000\251\000\198\001\001\000\\\001\001\001\201\001\015\000\218\000\018\001m\001\023\001m\001\147\000\234\001\001\001\r\000\198\001\015\000\218\000\234\001\015\000!\000\129\001\006\000!\001{\001\001\001\001\000.\001\001\000.\001y\000\\\000\205\001\007\000h\000.\001\007\000.\000\238\001\001\000.\000\205\001\201\001\r\001\147\001\007\000\162\000\134\000\136\000j\000\198\000\138\000j\000\210\000\214\000\140\001\149\001=\000\244\001\149\001=\000\164\001\149\001=\000\180\001\149\001=\000\250\000\181\000\n\000\182\001\149\001=\000Y\000\143\001W\001\131\001\129\000\238\001\207\000\221\000\\\000\180\001\149\001=\000\133\000\250\001#\001#\000\184\001\149\001=\000\181\000\162\000\186\001\149\001=\000\181\000\198\000\252\000-\000/\000[\000\166\000[\000\168\000j\000\212\000h\000\180\001\149\001=\000\133\001\000\001\149\001=\000[\000\218\000h\000K\000[\000\030\000h\000j\000\232\001\159\000\238\001\159\000\232\001\159\000A\000.\000j\000<\000j\000L\000[\000\245\001\r\000\218\000h\000.\000D\000F\000Z\001\149\001=\001\007\000\238\001\001\000.\000^\000`\000n\000Y\000\238\001\159\000\198\000g\000u\000\230\000\245\000[\001\017\001\147\001\167\001\173\001%\000\162\000g\001'\001Q\000\162\000g\001\127\001\133\000&\001\133\000B\001\151\000\230\001\151\001\167\000[\001\215\001\151\000D\001\151\000F\001\151\000H\001\151\000J\001\151\000^\001\151\000`\001\151\000t\001\151\000\150\001\151\000\152\001\151\000\154\001\151\000\156\001\151\000\158\001\151\000\176\001\151\000\198\001\151\000\234\001\151\000\236\001\151\000\248\001\151\001\b\001\151\001\n\001\151\001\201\001\151\000,\000H\001\205\000g\001\151\000g\001\006\001=\000W\000\238\001\159\000\198\000g\000\173\000\198\000g\000\230\000\181\000\236\000\181\000\250\000\181\001\002\000/\001\201\000\175\000\177\000\230\000\181\001S\001U\000\130\001\205\000<\000\181\000\n\000g\000Z\000\020\001\149\001=\001m\000\198\001\001\000\215\000\163\0017\0017\001\149\001=\0000\001\005\000\198\001\007\000\238\001\001\000\198\001\007\001\011\0017\001\006\001=\001\005\001\011\0017\001A\001{\001\011\001A\001\005\001\011\0017\000v\001\205\000\128\001\205\000\160\001\149\001=\001\007\0017\000\194\001\149\001=\000/\000\238\000\135\000:\001m\000\218\001\159\000\167\000\198\000$\000\241\000\241\0017\001\159\000\196\001\149\001=\000\018\000h\000\236\000.\000\134\001\169\000P\000\138\000X\000\249\000j\000\238\000\135\000\218\001\213\000\165\001=\000,\001=\001\213\001_\0004\001a\001_\001c\000y\000&\001\207\001\163\001\207\000\198\000h\001\r\000\218\000h\001\167\001=\0017\000\238\000\135\000\218\001\163\000\\\001\207\001\207\001\163\000\\\001\207\001\207\001w\001=\0017\001\171\000\238\000\020\001\149\001=\000T\0009\000j\000\234\000\134\000\138\001_\0004\000\216\000\250\001\169\001w\001=\000\151\000\250\001u\000\239\000\145\0017\001s\001u\001\159\000\198\000>\000\138\001_\0004\000\216\001\161\001\169\001w\001=\000\138\001_\0004\000\216\001\161\001\161\000?\000\145\0017\000=\000B\000>\000\159\000\147\0017\001u\001s\001u\0009\000j\000\234\000\239\000\145\0017\000?\000\145\0017\000=\000B\000\159\000\147\0017\000*\000N\000\252\001\149\001=\001\015\0017\001\149\001=\001\015\0017\000Z\000\020\001\149\001=\001m\000\234\001\001\0017\001\149\001=\000\018\000\234\001\015\0017\0000\001\005\000\238\001\001\0017\001\006\001=\001\005\000\238\001\001\0017\001?\001?\001\005\000\198\001\r\0017\000\238\001\001\001\t\0017\001{\001\t\000\160\001\149\001=\001\001\0017\000\196\001\149\001=\001\169\000\240\000\020\001\149\001=\000\012\000'\000\134\000{\0002\001\137\000j\000\198\000R\001=\000h\001\159\000.\001\187\000\014\001=\000\012\000X\000X\000\012\000\247\000j\000\238\001\159\0017\000b\001=\000\012\000>\000>\000\012\000\157\000j\000\238\000\167\0017\000\148\001=\000p\000N\000\252\001=\001\r\000\162\000\134\000}\0002\001\175\000\230\001\159\001\159\001\147\001\175\001\183\001\201\001=\001\r\000\162\001\183\001\183\0017\000\226\001=\001\159\000\198\001\159\001\165\0017\0011\000\204\001e\0017\001\139\001\185\0011\001\183\0017\001\006\001=\000'\001\137\000j\000\198\001\183\0017\001C\001C\001\149\001=\000'\001\137\000j\000\238\000j\000\238\000C\000\\\000\134\001\159\000C\000\\\000\207\000C\000\\\001\029\001\147\001\179\001\183\001\179\001\179\001\179\0017\001\006\001=\000'\001\137\000j\000\238\001\179\0017\001E\001E\000)\000a\000e\000\161\000\233\000\253\000\255\001\003\0015\001e\0017\001o\001\006\001=\0009\000j\000?\000\145\0017\001;\001;\001q\001\006\001=\0009\000j\000\234\000\239\000\145\0017\0019\0019\001\139\001\177\0015\000c\0015\001\159\000\240\001\149\001=\000'\001\137\000j\000\198\000R\001=\001\189\000\014\000\252\001=\000\249\000j\000\198\000g\000A\000\198\000g\000+\0017\001=\000\012\000X\000X\000\012\000%\000j\000\238\001\159\000\249\000j\000\198\000g\000A\000\198\000g\000b\000\252\001=\000\159\000j\000\238\000\020\000\243\000\218\001\159\000\198\000g\000\167\000\198\000g\000Q\001\129\000A\000\209\000\198\001\127\001\135\001\131\001\031\0017\001=\000\012\000>\000>\000\012\000#\000j\000\238\000\167\000\159\000j\000\238\000\020\000\243\000\218\001\159\000\198\000g\000\167\000\198\000g\000Q\000\146\001=\000g\0017\000\148\000\252\001=\000h\000p\000H\001\205\001=\000\155\001U\0017\000N\000\252\001=\001\r\000\162\000\134\000}\0002\001\191\000\182\001=\001W\000\\\001O\000\162\001\147\001\181\000\142\000[\000[\000\139\001Y\001Y\001\191\001\199\001\201\001\211\001\199\001\193\001\193\001\199\001=\001\r\000\162\001\199\001=\000\155\001U\0017\001\199\000.\000\238\001\179\000.\001\199\001\002\000j\000\223\0017\001=\001\199\000\223\0017\000\226\001=\001\165\0017\001/\000\204\001e\0017\001\139\001\197\001/\001\199\000\238\001\179\000\198\001\199\001W\001\195\001\195\0017\001\006\001=\000'\001\137\000j\001\195\0017\001G\001G\000)\000M\000p\001\149\001=\000\155\001U\0017\000S\000e\000\161\000\235\000\255\001%\001\211\0013\001Q\001\211\001e\0017\001o\001;\001\139\001\177\000O\000g\0017\0013\000\169\001%\0013\001Q\001\203\0002\000\169\0002\001\203\0002\0017\001\151\000\173\000\198\000g\001I\000\162\000g\001\004\001K\001K\000\252\000g\000.\000~\000\246\000o\000\246\001\151\000,\000o\000\134\0002\000o\0002\000\136\000m\000\172\000\138\000[\000\004\000i\001[\000\209\000\217\000,\000i\000i\000\153\0004\001\r\000\218\000j\000/\000\212\000h\000o\000.\000r\001\151\000\134\000o\0002\000r\001\151\000\138\000o\0004\000r\001\151\000\218\000h\000g\000.\000r\001\151\000\134\000g\0002\000r\001\151\000\138\000g\0004\000r\001\151\001\r\000\212\000h\000o\000.\000r\001\151\000\134\000o\0002\000r\001\151\000\138\000o\0004\000r\001\151\001[\000r\001\151\000\139\001\151\000g\000.\000\134\000g\0002\000\138\000g\0004\001\r\000\212\000h\000o\000.\000\134\000o\0002\000\138\000o\0004\001[\000o\000.\000\134\000o\0002\000\138\000o\0004\000g\000\028\000\208\001\153\000g\000\224\000g\000\220\000g\000\224\000g\000\220\000\198\000g\001\153\000g\000\224\000g\000\220\001\135\000g\000\\\000g\000\\\000\218\000g\001#\000\133\000g\000 \001\151\000\206\001\151\000\204\000g\000\204\000[\001\151\000\174\000[\000\153\0004\001\151\000\217\000,\000m\000\172\000m\000\172\000o\0002\000g\001\149\001=\001\007\000\162\000g\000Z\001\149\001=\001\005\001\011\000\162\000g\000\196\001\149\001=\001\169\001w\001=\000\162\000g\000g\000Q\000g\000\211\000.\000j\000\238\000\020\000\243\000\218\001\159\000\198\000g\000\135\000\218\001\159\000\198\000g\000A\000\198\000g\000Q\001U\0017\001\151\000\246\000o\000\246\000[\000Z\001\149\001=\001\007\000.\000\238\001\001\000.\000g\000.\000A\000.\000g\000\004\000\133\000g\000\004\000\133\001\151\000.\000\232\001\001\000.\000\238\001\001\000.\000\232\001\001\000.\001\007\0017\001\149\001=\001\007\0017\000g\0017\0013\0013\000\169\0002\000\165\001=\000,\001=\000\216\001!\001\207\000,\001!\000\176\001!\000\176\000C\000\\\001}\000w\000.\000\168\001\175\000=\000\230\001\159\001\159\000\230\001\159\000\138\001_\0004\000\216\001\159\001\161\000\239\000=\000B\000\159\000\250\001\169\000\198\001\167\001=\000\149\0017\001u\001\145\001s\001u\001\143\001\145\001\169\000\198\001\167\001=\0009\000j\000=\000B\000\159\000\149\0017\000O\000\204\001\007\001\001\000.\000\167\0017\000c\000\204\001\001\000.\000\181\000.\000\238\001\159\000.\001\189\001/\000\204\000g\000\004\000\133\000g\000\004\000\133\000\190\000g\000\190\000g\000g\000\224\000g\000\220\001\203\0002\001=\000g\000\224\000g\000\220\000O\000\202\001k\000\000\000c\000\202\001g\000\000\000h\000\236\000.\0001\000\203\001\015\000\218\000h\000\236\000.\0001\001m\001\025\001m\001\171\001\209\000\202\000\000\000\201\001\167\000\202\000\000\000\199\001\159\000\202\000\000\000g\000\202\000\197\000\000\000\195\001\015\000\202\000\000\000\193\001\r\000\202\000\000\000\191\001\007\000\202\000\000\000\189\001\001\000\202\000\000\000\187\000\251\000\202\000\000\000\181\000\202\000\185\000\000\000-\000\202\000\183\001\r\000\218\000\000\000\168\001m\000\026\000$\000\144\000\192\000-\001\r\000\202\000E\000G\000*\000M\001-\000g\0017\000*\001-\000*\000\000\000*\000G\000M\001+\001+\000g\0017\001+\001+\0003\000g\0017\001+\000\202\001+\000\202") and rhs = - ((16, "\001e\001a\000\201\000\199\000\197\000\195\000\193\000\191\000\189\000\187\000\185\000\183\000\181\000E\0003\000F\000D\001w\001\193\001\002\000:\001g\001\006\0017\001O\0011\001\019\001\153\000h\001\141\000.\000h\000Z\001\135\0017\000\251\000.\000:\001g\000\016\000=\001\187\000=\000h\000w\000.\000=\000t\001\027\000\176\000t\000\176\000\168\001\157\001\187\000\168\001\157\000h\000w\000.\000\168\001\157\000\134\000I\0002\000\134\000\250\000\127\0002\000\134\000q\000\250\000\127\0002\000|\000\223\000\127\0002\000|\0002\000z\000\223\000\127\0002\000z\000\223\000\127\000\176\000\137\0002\001\133\000U\000U\000\218\001\185\000\132\001\185\000\167\0002\001\163\000\182\0017\001\175\001I\000\162\001\181\000p\000N\0017\001\007\000\162\001\181\000p\000N\000\252\0017\001\007\000\162\001\181\001\181\001\183\001\163\000\139\001\133\000\148\0017\001\181\000\219\0011\000\148\000\252\0017\001\181\000\219\0011\000\014\000+\0011\000b\001\025\0011\000\226\0017\001\147\0011\000\146\0017\000g\0011\001_\0011\001\127\000\198\001\181\000\238\001\161\000\198\001\181\001Q\001\177\001Q\000\\\001\181\001Q\001\175\001\015\000h\000\179\000.\000h\000\179\000\238\001\141\000.\000h\001\141\000.\000\148\0017\001\165\0011\000\014\0017\000\241\000j\000\238\001\141\0011\000b\0017\000\155\000j\000\238\000\165\0011\000\226\0017\001\147\0011\001_\0011\001\127\001\157\000\134\000}\0002\001\157\001\133\000R\0017\001\169\001+\000\204\001\165\001\183\000p\000N\0017\001\007\000\162\001\165\000p\000N\000\252\0017\001\007\000\162\001\165\000h\001\181\000.\001\173\000\134\000}\0002\001\173\000h\001\181\000\238\001\161\000.\000R\0017\001\171\001)\000\204\001\165\000\205\000C\000\\\001\161\000j\000\238\000C\000\\\001\161\000C\000\\\001\161\000\240\000\020\001\135\0017\000'\001}\000j\000\198\001\165\0011\001=\001\023\000\144\000\242\000$\000\188\000\134\0002\000h\000.\000\192\000\026\000\018\000h\000\236\000.\001\153\001\007\001\007\000\218\000h\000\236\000.\000h\000\236\000.\001\153\001\141\000\198\001\141\001\187\000y\000&\001\187\000\138\001Y\0004\000\250\000\149\001\193\001\141\001\183\000\028\000\208\001\031\000\162\000g\000d\001\135\0017\000g\000\004\000\133\000\022\001\135\0017\000g\000\022\001\135\0017\000g\000\004\000\133\000\022\001\135\0017\000g\000\190\000g\000\022\001\135\0017\000g\000\004\000\133\000\190\000g\000\006\001\135\0017\000g\000\224\000g\000\220\000\184\001\135\0017\000\179\000\198\000g\001\139\000g\000\224\000g\000\220\000\184\001\135\0017\000\179\000\162\000g\000\224\000g\000\220\000[\000p\000Z\001\135\0017\000\255\001\005\000\162\000g\000p\000\196\001\135\0017\001\151\001q\0017\000\162\000g\000p\000N\001\135\0017\001\001\000\162\000g\000p\000N\000\252\001\135\0017\001\001\000\162\000g\000\180\001\135\0017\000\133\000\182\001\135\0017\001Q\001y\000\182\001\135\0017\000h\000\020\000\237\000.\001y\000f\001\135\0017\000g\000\004\000\133\000\024\001\135\0017\000g\000\004\000\133\000\164\001\135\0017\000g\000 \001\137\000\206\001\137\000\164\001\135\0017\000g\000 \001\137\000\b\001\135\0017\000g\000\224\000g\000\220\000\186\001\135\0017\000\179\000\198\000g\001\139\000g\000\224\000g\000\220\001\000\001\135\0017\000[\000\140\001\135\0017\000[\000[\000\139\000u\001\149\000[\000\239\000[\001\137\000\158\001\137\001\137\000\156\001\137\001\137\000\154\001\137\001\137\000\152\001\137\001\137\000\150\001\137\001\137\000F\001\137\001\137\000D\001\137\001\137\000B\001\137\001\137\000`\001\137\001\137\000^\001\137\001\137\000&\001\137\001\137\000H\001\137\001\137\000\198\001\137\001\137\000t\001\137\001\137\000\176\001\137\001\137\000J\001\137\001\137\000\248\001\137\001\137\001\b\001\137\001\137\001\n\001\137\001\137\000\234\001\137\000K\001\137\001\195\001\137\001K\000\162\000g\000n\001C\000\162\000g\001\137\000\236\001\137\000j\000r\001\137\000[\000\218\001U\000r\001\137\000[\000\218\000h\000g\000.\000r\001\137\000[\000\218\000\138\000g\0004\000r\001\137\000[\000\218\000\134\000g\0002\000r\001\137\000[\000\212\000h\000o\000.\000r\001\137\000[\000\218\001\007\000\212\000h\000o\000.\000r\001\137\000[\000\212\000\138\000o\0004\000r\001\137\000[\000\218\001\007\000\212\000\138\000o\0004\000r\001\137\000[\000\212\000\134\000o\0002\000r\001\137\000[\000\218\001\007\000\212\000\134\000o\0002\000r\001\137\001\137\001\183\000H\001\185\000x\001\185\000\167\0002\0008\000\250\001\151\000\198\001\149\0017\001\151\000\198\001\149\0017\000\128\001\185\000\167\0002\000\134\000{\0002\000Q\000A\000\198\000g\000\\\000g\000\238\001\187\000\\\000g\001Q\001y\000h\000\020\000\237\000.\001y\000C\000\205\000C\000\\\001w\000j\000\238\000C\000\\\001w\000C\000\\\001w\000h\000.\000h\000\255\000\238\000\251\000.\000\141\000P\001\145\000\238\001\145\000\\\001\187\000\238\000\135\000\218\001\145\000\\\001\187\000\238\001\187\000\238\000\135\000\218\001\187\000\250\001\151\001q\0017\001\151\001q\0017\000\020\001\135\0017\0009\000j\000\234\000\233\000\143\0011\000\020\001\135\0017\000T\0009\000j\000\234\000\233\000\143\0011\000\020\001\135\0017\0009\000j\000?\000\143\0011\000\020\001\135\0017\000T\0009\000j\000?\000\143\0011\000\018\000j\000O\000\202\000,\000\216\000c\000\202\000v\001\185\000\167\0002\0006\000\243\000j\000\238\000\163\0017\000\243\000j\000\238\000\163\0017\000,\0017\001]\001[\001[\001Y\000j\000j\000\238\001\141\001\015\000[\000\142\000[\000\030\000j\000\030\000h\000j\000A\000.\000<\000j\000L\000[\000<\000h\001W\000\209\000.\000<\000j\000L\000h\001G\000\209\000.\000L\000\169\000\030\000h\001W\000.\000\030\000j\000\142\000Y\000Y\001M\000/\000/\000Q\000/\000A\000\198\000g\000/\000\238\000\135\000\218\001\141\000\198\000g\000/\000\238\000\020\000\237\000\218\001\141\000\198\000g\000\171\000\198\000g\000W\000\238\001\141\000\198\000g\000p\001\135\0017\000\153\001O\0011\001K\001\191\000p\0017\000\153\001O\0011\000p\000H\001\185\0017\000\153\001O\0011\001I\001\191\000\179\000\179\000\238\001\141\000/\000Q\000/\000Y\000\238\001\141\000\198\000g\000\171\000\198\000g\001E\001C\001\004\001E\001\006\0017\000'\001}\000j\001\177\0011\001A\001\006\0017\000'\001}\000j\000\238\001\161\0011\001?\001\006\0017\000'\001}\000j\000\198\001\165\0011\001=\001\006\0017\000\255\001\005\0011\001;\001\006\0017\000\255\000\238\000\251\0011\0019\001\183\0017\001\006\0017\0009\000j\000?\000\143\0011\0015\001\006\0017\0009\000j\000\234\000\233\000\143\0011\0013\000\161\0011\000*\001/\000a\001/\000*\001-\000*\000g\0011\001-\000M\001-\001\167\001+\001\179\001)\000M\001'\000*\001%\000*\000g\0011\001%\000M\001%\000G\001%\001U\000\217\000\211\001U\000\217\000\211\000,\001U\000\217\000\211\000,\000\016\000\221\001U\000\217\000\211\000,\001#\000l\001\135\0017\000\153\001O\0011\001!\001\031\001\191\000\179\000\\\000g\000\179\000\n\000g\000\\\000g\000\179\000\\\000\218\000j\000\238\000\163\0017\000,\0017\001\027\001\187\000,\001\027\000j\000\238\000\163\0017\000,\0017\001\187\000,\000j\000\238\000\163\0017\001\187\000\216\0017\000#\000j\000\238\000\165\0017\000\157\000j\000Q\000\252\0017\000\157\000j\000Q\0017\000\157\000j\000\238\000\165\000\198\000g\000\252\0017\000\157\000j\000\238\000\165\000\198\000g\0017\000\157\000j\000\238\000\020\000\237\000\218\001\141\000\198\000g\000\252\0017\000\157\000j\000\238\000\020\000\237\000\218\001\141\000\198\000g\000j\001\t\000\218\000j\000\018\001\t\000\218\000\018\001g\000h\000\236\000.\0001\001\t\000\218\001g\001\t\000\218\000h\000\236\000.\001\t\000\218\0001\001g\001\t\000\218\001g\000j\001\007\000\218\000j\000\018\001\007\000\218\000\018\000/\001\007\000\218\000/\001\021\001\t\000h\001\t\000.\001\r\000\198\001\001\000\238\000\251\000\198\001\001\001u\001\005\000\238\000\251\001u\001\003\000\"\0017\000O\000\204\000\178\0017\001s\000\\\001\001\000\203\001\001\001\183\001\007\001\001\000\203\001\001\000h\000.\001\133\000\016\000\018\000\016\000Z\001\135\0017\000\018\000\234\001\t\0011\000(\0017\000c\000\204\000\178\0017\001s\000\\\000\251\000Z\000\020\000P\0017\001\001\000h\000\251\000.\000\251\001\183\000\245\000h\000.\000\\\000\251\000\251\000\\\000\251\000\251\000\004\000\129\001\133\000Z\000\020\001\135\0017\001g\000\213\0011\000Z\000\020\001\135\0017\001g\000\234\000\251\0011\001\017\000X\000X\000\012\000X\000\012\000\012\000X\000\254\001g\000j\000j\000\237\000$\000$\000\235\001\141\000>\001\141\001\143\000>\001\143\001\141\000\198\001\143\001\141\000\198\000>\001\143\000\216\000>\000\216\001\141\000\198\000\216\001\141\000\198\000>\000\216\000\138\001Y\0004\000>\000\138\001Y\0004\001\141\000\198\000\138\001Y\0004\001\141\000\198\000>\000\138\001Y\0004\000N\001\135\0017\001\001\0011\000N\000\252\001\135\0017\001\001\0011\000N\001\135\0017\001\t\0011\000N\000\252\001\135\0017\001\t\0011\000@\000n\001\004\000\212\000h\001c\000.\000\212\000h\001c\000.\000r\000\212\000\134\001c\0002\000\212\000\134\001c\0002\000r\000\212\000\138\001c\0004\000\212\000\138\001c\0004\000r\000\166\000\252\000\158\000\156\000\154\000\152\000\150\000F\000D\000B\000`\000^\000&\000H\000\198\000t\000\176\000J\000\248\001\b\001\n\000\234\001\b\000\250\000,\001\002\000j\000\238\001\141\000\198\001\137\000\198\000\251\000\198\000\179\000\198\000g\000A\000L\000<\000j\000\238\000h\001\001\000\238\000\251\000.\000h\001\001\000.\000h\000\014\0017\001\137\000.\000h\000\014\0017\001\137\000\238\000\251\000.\000h\000\014\0017\001\137\000\238\000\251\000\232\000\251\000.\000h\000\014\0017\001\137\000\232\000\251\000.\001\189\000\202\001\149\000\202\001\141\000\202\000g\000\202\001\t\000\202\001\007\000\202\001\001\000\202\000\251\000\202\000\245\000\202\000\179\000\202\000-\000\202\000\179\000\236\000\179\000\179\001\183\000\173\000\179\001\002\000/\000\177\000\179\000\250\000\179\000\196\001\135\0017\000\179\000\177\000\230\000\179\000\179\000\230\000\179\000\175\000\230\000\179\000\171\000\230\000\179\000Y\001\149\000\179\001\149\000h\000\020\000\237\000.\000Y\000\239\000\179\000\140\001\135\0017\000Y\000\171\000\236\000\179\000\171\001\183\000\173\000\171\001\002\000/\000\175\000\171\000\250\000\179\000j\000\016\000O\000\238\000c\000\238\001\141\000<\000\179\000<\000\179\000\n\000g\001\141\000\135\000\218\001\141\001\193\000\135\000\218\001\193\000\130\001\185\000\167\0002\000\194\001\135\0017\000/\000\238\000\165\000\198\000\235\0011\000>\000>\000\012\000>\000\012\000\012\000>\0000\000i\000[\000\004\000i\001m\001o\000\149\001o\001m\001\129\001o\001\131\000\147\001o\000\147\001\131\001m\001o\000\145\001o\000\143\000\226\001\141\000\198\001\141\001u\000\141\001u\001S\000\139\001S\000\239\000\137\000\239\000:\001g\000\135\000:\001g\001\029\000\250\001\029\000\133\000\250\001\029\001\193\000\131\001\b\001\193\000!\000\129\001\006\000!\000q\000\127\000\250\000q\001\141\000}\000\230\001\141\000;\000{\000\230\000;\001\187\000y\000&\001\187\000w\000\230\001\141\001\141\000\230\001\141\000u\000\230\001\137\001\137\000\230\001\137\000s\000&\001\187\001\187\000&\001\187\000I\001\141\001\137\001\137\000,\001\137\000,\000o\000j\000\215\000j\000\215\000,\000j\000\215\000,\000m\000\179\000\179\000,\000\179\000,\000k\001U\000\207\000\215\001U\000\207\000\215\000,\001U\000\207\000\215\000,\000i\001\137\001\137\000,\001\137\000,\000g\001\137\000,\000H\001\185\000g\000\196\001\135\0017\001\151\001q\0017\0011\001/\001_\0011\001\127\000)\000\159\001i\0015\001k\0013\000\020\001\135\0017\0009\000=\000B\000\157\000\145\0011\000\020\001\135\0017\000T\0009\000=\000B\000\157\000\145\0011\000e\000Z\001\135\0017\000\255\001\003\0011\000Z\001\135\0017\000\255\000\198\001\007\0011\000\253\000Z\001\135\0017\0000\000\255\000\238\000\251\0011\0019\000\249\000\247\000\229\000\160\001\135\0017\000\251\0011\000\240\001\135\0017\000'\001}\000j\000\238\001\161\0011\001?\001\159\001\155\000`\000\144\000`\000\188\000F\000\144\000F\000\188\000\138\001#\0004\000\134\000k\0002\000~\000k\000\246\000~\000\246\000\214\001\137\000\174\000\210\000[\000h\000g\000.\000h\000g\000A\000.\000[\000\218\000h\000g\000.\000[\000\218\000\138\000g\0004\000[\000\218\000\134\000g\0002\000[\000\212\000h\000o\000.\000[\000\218\001\007\000\212\000h\000o\000.\000[\000\212\000\138\000o\0004\000[\000\218\001\007\000\212\000\138\000o\0004\000[\000\212\000\134\000o\0002\000[\000\218\001\007\000\212\000\134\000o\0002\000\244\001\135\0017\000g\000\204\000\244\001\135\0017\000\204\000V\001\135\0017\001\173\000h\000Z\001\135\0017\001\001\000.\000h\000Z\001\135\0017\001\001\000\238\000\251\000.\000R\001\135\0017\001\171\001)\000\204\000-\001\155\001\149\000\239\000@\000[\000\252\000[\000\136\000m\000\172\000\136\000\172\000[\000\218\001U\001\007\000\218\000h\000g\000.\001\007\000\218\000\136\000m\000\172\000[\000\168\000j\000[\000\166\000[\001\133\000\016\001\007\000\218\000h\000.\000\138\000\151\0004\001\007\000\218\000\138\000\151\0004\000~\000o\000\246\000~\000\246\001\007\000\218\000~\000o\000\246\001\007\000\218\000~\000\246\000\134\000o\0002\001\007\000\218\000\134\000o\0002\001\007\000\218\000\134\0002\001\007\000\218\000h\000Z\001\135\0017\001\001\000\238\000\251\000.\000/\000W\000h\000\179\000.\000]\000h\000Z\001\135\0017\000\255\000.\000h\000Z\001\135\0017\000\255\000\238\000\251\000.\000\016\000_\000_\000\216\000_\001\149\000\239\000\168\000=\001\007\000\218\000]\001\007\000\218\000\134\0002\001\007\000\218\000h\000.\001\007\000\218\000h\000\179\000.\000h\000\179\000\238\001\141\000.\001\133\000j\000\018\001\006\001\002\001\000\000\244\000\240\000\226\000\224\000\220\000\208\000\206\000\204\000\196\000\194\000\192\000\186\000\182\000\180\000\178\000\164\000\162\000\160\000\148\000\146\000\140\000p\000f\000b\000Z\000X\000V\000T\000R\000P\000N\000J\000>\0000\000(\000\"\000 \000\028\000\026\000\024\000\020\000\014\000\012\000\n\000\b\000\004\000e\000\196\001\135\0017\001\151\000\198\001\149\0017\0011\000\198\000g\001Q\001{\000h\000\020\000\237\000.\001{\001-\000g\0011\001-\001\031\001K\001_\0011\001\127\000\159\000)\001i\0015\000\020\001\135\0017\0009\000=\000B\000\157\000\147\0011\000\020\001\135\0017\000T\0009\000=\000B\000\157\000\147\0011\000S\000Z\001\135\0017\000\255\001\005\0011\000Z\001\135\0017\0000\000\255\001\005\0011\001;\000\249\000\231\000\240\001\135\0017\000'\001}\000j\001\177\0011\001A\001\159\000\160\001\135\0017\001\001\0011\000`\000^\000\239\000P\000\225\000\131\0017\000\239\0017\000\168\001g\000\168\001g\000$\000\168\001g\000\144\000\168\001g\000-\000\168\001g\001\007\000\168\001g\000\192\000\168\001g\000\026\000g\0011\000*\001'\000*\000G\000*\000\202\001\187\000s\000\238\001\141\000\238\001\141\000\232\001\141\000\232\001\141\000\198\000\233\001\023\0005\0007\000;\000h\000{\000.\000:\001g\000\016\000F\000`\000\252\000F\000\252\000\252\000F\000`\000\252\000\252\000`\000\154\000@\001%\000\202\000g\0011\001%\000\202\000h\000\227\000.\000j\0001\001\011\0017\000%\000j\000\238\001\141\0017\000\243\000j\000\198\000g\000\252\0017\000\243\000j\000\198\000g\0017\000\243\000j\000A\000\198\000g\000\252\0017\000\243\000j\000A\000\198\000g\000\014\001\135\0017\000/\000\238\000\165\0011\000\012\000\012\000X\000\012\000\012\000X\000\012\000>\000\012\000\012\000>\000\020\0009\001U\000\031\001\193\000\143\000\020\0009\001U\000\234\001\193\000Z\001\007\000\198\001\t\000Z\001\007\000\234\001\t\000Z\000\020\000\245\000\198\000\251\000Z\000\020\000\245\000\234\000\251\000\198\000\198\000>"), (16, "\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\b\000\t\000\n\000\011\000\012\000\r\000\014\000\015\000\016\000\017\000\018\000\022\000\026\000\027\000\028\000\031\000%\000'\000(\000)\000+\000/\0002\0004\0006\0009\000>\000A\000E\000J\000N\000P\000T\000Z\000[\000\\\000_\000c\000d\000g\000j\000p\000w\000y\000{\000|\000\129\000\135\000\138\000\141\000\145\000\149\000\151\000\152\000\154\000\158\000\160\000\163\000\165\000\166\000\169\000\174\000\174\000\177\000\177\000\181\000\188\000\195\000\199\000\201\000\202\000\203\000\207\000\208\000\213\000\215\000\221\000\228\000\231\000\232\000\236\000\241\000\246\000\247\000\251\001\000\001\003\001\014\001\015\001\016\001\017\001\018\001\019\001\021\001\023\001\024\001\025\001\026\001\029\001\030\001\031\001$\001'\001(\001+\001,\001/\0012\0013\0014\0015\0017\0018\0019\001<\001B\001F\001L\001R\001Z\001a\001l\001u\001v\001~\001\135\001\142\001\150\001\154\001\159\001\167\001\173\001\179\001\187\001\193\001\200\001\211\001\215\001\219\001\221\001\222\001\224\001\226\001\229\001\232\001\235\001\238\001\241\001\244\001\247\001\250\001\253\002\000\002\003\002\006\002\t\002\012\002\015\002\018\002\021\002\024\002\027\002\030\002 \002\"\002%\002)\002,\002/\0024\002;\002B\002I\002P\002Y\002`\002i\002p\002y\002{\002{\002}\002\129\002\130\002\135\002\139\002\143\002\143\002\146\002\147\002\150\002\152\002\156\002\158\002\163\002\164\002\168\002\173\002\176\002\178\002\183\002\184\002\184\002\186\002\190\002\196\002\198\002\202\002\206\002\209\002\218\002\228\002\236\002\245\002\246\002\247\002\249\002\249\002\251\002\253\003\001\003\002\003\007\003\014\003\015\003\016\003\018\003\019\003\022\003\023\003\024\003\026\003\028\003!\003#\003%\003*\003,\0031\0033\0037\0039\003;\003<\003=\003>\003@\003D\003K\003S\003V\003[\003a\003c\003h\003o\003q\003r\003u\003w\003x\003}\003\128\003\129\003\132\003\132\003\140\003\140\003\149\003\149\003\158\003\158\003\164\003\164\003\171\003\171\003\173\003\173\003\181\003\181\003\190\003\190\003\192\003\192\003\194\003\196\003\196\003\198\003\202\003\204\003\204\003\206\003\206\003\208\003\208\003\210\003\210\003\212\003\216\003\218\003\220\003\223\003\227\003\233\003\238\003\244\003\245\003\247\003\250\003\255\004\002\004\t\004\012\004\018\004\020\004\024\004\025\004\026\004\031\004#\004(\004/\0047\004A\004L\004M\004P\004Q\004T\004U\004X\004Y\004\\\004a\004d\004e\004h\004i\004l\004m\004p\004q\004t\004u\004y\004z\004|\004\128\004\130\004\132\004\134\004\138\004\143\004\144\004\146\004\147\004\149\004\152\004\153\004\154\004\155\004\156\004\163\004\167\004\172\004\177\004\180\004\182\004\183\004\187\004\190\004\193\004\194\004\201\004\209\004\210\004\210\004\211\004\211\004\212\004\213\004\215\004\217\004\219\004\220\004\222\004\223\004\225\004\226\004\228\004\229\004\231\004\234\004\238\004\239\004\241\004\244\004\248\004\251\004\255\005\004\005\n\005\015\005\021\005\026\005 \005!\005\"\005#\005'\005,\0050\0055\0059\005>\005?\005@\005A\005B\005C\005D\005E\005F\005G\005H\005I\005J\005K\005L\005M\005N\005O\005P\005Q\005R\005S\005T\005U\005U\005U\005V\005V\005W\005W\005Y\005Y\005[\005[\005]\005]\005_\005_\005a\005a\005c\005c\005d\005e\005h\005m\005p\005u\005|\005\133\005\140\005\142\005\144\005\146\005\148\005\150\005\152\005\154\005\156\005\158\005\160\005\162\005\165\005\167\005\168\005\171\005\172\005\175\005\179\005\182\005\185\005\188\005\191\005\192\005\194\005\200\005\202\005\206\005\209\005\211\005\212\005\215\005\216\005\219\005\220\005\221\005\222\005\224\005\226\005\228\005\232\005\233\005\236\005\237\005\240\005\244\005\253\005\253\005\254\005\254\005\255\006\000\006\002\006\004\006\004\006\005\006\006\006\t\006\n\006\011\006\r\006\014\006\015\006\016\006\017\006\019\006\021\006\022\006\023\006\025\006\025\006\030\006\031\006!\006\"\006$\006%\006'\006)\006,\006-\006/\0062\0063\0066\0067\006:\006;\006>\006?\006B\006C\006F\006G\006J\006M\006P\006S\006V\006Y\006\\\006]\006^\006_\006a\006d\006f\006i\006m\006n\006p\006s\006v\006z\006\127\006\128\006\130\006\133\006\138\006\145\006\146\006\148\006\149\006\150\006\151\006\153\006\155\006\164\006\174\006\175\006\181\006\188\006\189\006\198\006\199\006\200\006\201\006\206\006\216\006\217\006\218\006\220\006\222\006\224\006\226\006\229\006\232\006\235\006\237\006\240\006\242\006\245\006\249\006\254\007\003\007\b\007\r\007\020\007\025\007 \007%\007,\0071\0075\0079\007?\007G\007M\007N\007O\007P\007Q\007S\007U\007X\007Z\007]\007b\007g\007j\007m\007n\007o\007s\007v\007{\007~\007\128\007\133\007\137\007\140\007\145\007\149\007\159\007\160\007\161\007\164\007\165\007\171\007\179\007\180\007\181\007\184\007\185\007\186\007\188\007\191\007\195\007\199\007\204\007\209\007\210\007\211\007\212\007\213\007\214\007\215\007\216\007\217\007\218\007\219\007\220\007\221\007\222\007\223\007\224\007\225\007\226\007\227\007\228\007\229\007\230\007\231\007\232\007\233\007\234\007\235\007\236\007\237\007\238\007\239\007\240\007\241\007\242\007\243\007\244\007\245\007\246\007\247\007\248\007\249\007\250\007\251\007\252\007\253\007\254\007\255\b\000\b\001\b\002\b\003\b\004\b\005\b\006\b\014\b\016\b\018\b\023\b\024\b\027\b\028\b\029\b\031\b \b!\b\"\b$\b-\b7\b8\b>\bF\bG\bH\bQ\bR\bW\bX\bY\b^\b`\bb\be\bh\bk\bn\bq\bt\bw\by\b{\b|\b}\b~\b\128\b\132\b\134\b\134\b\136\b\137\b\139\b\139\b\140\b\143\b\145\b\146\b\146\b\147\b\148\b\149\b\151\b\153\b\155\b\157\b\158\b\159\b\161\b\165\b\168\b\169\b\170\b\171\b\176\b\181\b\187\b\193\b\200\b\207\b\207\b\208\b\209\b\211\b\213\b\214\b\216\b\218\b\224\b\229\b\233\b\237\b\242\b\247\b\248\b\250")) + ((16, "\001k\001g\000\203\000\201\000\199\000\197\000\195\000\193\000\191\000\189\000\187\000\185\000\183\000E\0003\000F\000D\001}\001\213\001\002\000:\001m\001\006\001=\001U\0017\001\025\001\171\001\157\000=\001\207\000=\000h\000w\000.\000=\000\168\001\175\001\207\000\168\001\175\000h\000w\000.\000\168\001\175\001\015\000\218\001\155\000:\001m\000\016\000U\000U\000\218\001\205\000\169\000\132\001\205\001\203\0002\001\181\000\182\001=\001\193\001O\000\162\001\199\000p\000N\001=\001\r\000\162\001\199\000p\000N\000\252\001=\001\r\000\162\001\199\001\199\001\201\001\181\000\139\001\147\000\148\001=\001\199\000\223\0017\000\148\000\252\001=\001\199\000\223\0017\000\014\000+\0017\000b\001\031\0017\000\226\001=\001\165\0017\000\146\001=\000g\0017\001e\0017\001\139\000\198\001\199\000\238\001\179\000\198\001\199\001W\001\195\001W\000\\\001\199\001W\001\193\001\021\000h\000\181\000.\000h\000\181\000\238\001\159\000.\000h\001\159\000.\000\148\001=\001\183\0017\000\014\001=\000\247\000j\000\238\001\159\0017\000b\001=\000\157\000j\000\238\000\167\0017\000\226\001=\001\165\0017\001e\0017\001\139\001\175\000\134\000}\0002\001\175\001\147\000R\001=\001\187\0011\000\204\001\183\001\201\000p\000N\001=\001\r\000\162\001\183\000p\000N\000\252\001=\001\r\000\162\001\183\000h\001\199\000.\001\191\000\134\000}\0002\001\191\000h\001\199\000\238\001\179\000.\000R\001=\001\189\001/\000\204\001\183\000\207\000C\000\\\001\179\000j\000\238\000C\000\\\001\179\000C\000\\\001\179\000\240\000\020\001\149\001=\000'\001\137\000j\000\198\001\183\0017\001C\001\029\000\144\000\242\000$\000\188\000\134\0002\000h\000.\000\192\000\026\000\018\000h\000\236\000.\001\171\001\r\001\r\000\218\000h\000\236\000.\000h\000\236\000.\001\171\001\159\000\198\001\159\001\207\000y\000&\001\207\000\138\001_\0004\000\250\000\151\001\213\001\159\001\201\000\237\001\141\001\155\000h\001\159\000.\000h\000Z\001\149\001=\001\001\000.\000\134\000I\0002\000\134\000\250\000\127\0002\000\134\000q\000\250\000\127\0002\000|\000\227\000\127\0002\000|\0002\000z\000\227\000\127\0002\000z\000\227\000\127\000\176\000\137\0002\000\028\000\208\001%\000\162\000g\000d\001\149\001=\000g\000\004\000\133\000\022\001\149\001=\000g\000\022\001\149\001=\000g\000\004\000\133\000\022\001\149\001=\000g\000\190\000g\000\022\001\149\001=\000g\000\004\000\133\000\190\000g\000\006\001\149\001=\000g\000\224\000g\000\220\000\184\001\149\001=\000\181\000\198\000g\001\153\000g\000\224\000g\000\220\000\184\001\149\001=\000\181\000\162\000g\000\224\000g\000\220\001\133\000\180\001\149\001=\000\133\000H\001\205\000x\001\205\000\169\0002\0008\000\250\001\169\000\198\001\167\001=\001\169\000\198\001\167\001=\001\147\000\128\001\205\001\203\0002\000\134\000{\0002\000\180\001\149\001=\000\133\001\127\000[\000p\000Z\001\149\001=\001\005\001\011\000\162\000g\000p\000\196\001\149\001=\001\169\001w\001=\000\162\000g\000p\000N\001\149\001=\001\007\000\162\000g\000p\000N\000\252\001\149\001=\001\007\000\162\000g\000\182\001\149\001=\001\129\000\221\000\\\001\135\000f\001\149\001=\000g\000\004\000\133\000\024\001\149\001=\000g\000\004\000\133\000\164\001\149\001=\000g\000 \001\151\000\206\001\151\000\164\001\149\001=\000g\000 \001\151\000\b\001\149\001=\000g\000\224\000g\000\220\000\186\001\149\001=\000\181\000\198\000g\001\153\000g\000\224\000g\000\220\001\000\001\149\001=\000[\000\140\001\149\001=\000[\000[\000\139\000u\001\167\000[\000\245\000[\001\133\000\158\001\151\001\133\000\156\001\151\001\133\000\154\001\151\001\133\000\152\001\151\001\133\000\150\001\151\001\133\000F\001\151\001\133\000D\001\151\001\133\000B\001\151\001\133\000`\001\151\001\133\000^\001\151\001\133\000&\001\151\001\133\000H\001\151\001\133\000\198\001\151\001\133\000t\001\151\001\133\000\176\001\151\001\133\000J\001\151\001\133\000\248\001\151\001\133\001\b\001\151\001\133\001\n\001\151\001\133\000\234\001\151\000K\001\151\001\215\001\151\001Q\000\162\000g\000n\001I\000\162\000g\001\133\000\236\001\151\000j\000r\001\151\000[\000\218\001[\000r\001\151\000[\000\218\000h\000g\000.\000r\001\151\000[\000\218\000\138\000g\0004\000r\001\151\000[\000\218\000\134\000g\0002\000r\001\151\000[\000\212\000h\000o\000.\000r\001\151\000[\000\218\001\r\000\212\000h\000o\000.\000r\001\151\000[\000\212\000\138\000o\0004\000r\001\151\000[\000\218\001\r\000\212\000\138\000o\0004\000r\001\151\000[\000\212\000\134\000o\0002\000r\001\151\000[\000\218\001\r\000\212\000\134\000o\0002\000r\001\151\001\133\001\201\000h\000\020\000\243\000.\001W\000\143\001\133\001\133\000,\001\133\000,\000g\001\133\000,\000H\001\205\000g\000C\000\207\000C\000\\\001}\000j\000\238\000C\000\\\001}\000C\000\\\001}\000h\000.\000h\001\005\000\238\001\001\000.\000\141\000P\001\163\000\238\001\163\000\\\001\207\000\238\000\135\000\218\001\163\000\\\001\207\000\238\001\207\000\238\000\135\000\218\001\207\000\250\001\169\001w\001=\001\169\001w\001=\000\020\001\149\001=\0009\000j\000\234\000\239\000\145\0017\000\020\001\149\001=\000T\0009\000j\000\234\000\239\000\145\0017\000\020\001\149\001=\0009\000j\000?\000\145\0017\000\020\001\149\001=\000T\0009\000j\000?\000\145\0017\000\018\000j\000O\000\202\000,\000\216\000c\000\202\000v\001\205\000\169\0002\0006\000\249\000j\000\238\000\165\001=\000\249\000j\000\238\000\165\001=\000,\001=\001c\001a\001a\001_\000j\000j\000\238\001\159\001\021\000[\000\142\000[\000\030\000j\000\030\000h\000j\000A\000.\000<\000j\000L\000[\000<\000h\001]\000\211\000.\000<\000j\000L\000h\001M\000\211\000.\000L\000\171\000\030\000h\001]\000.\000\030\000j\000\142\000Y\000Y\001S\000/\000/\000Q\000/\000A\000\198\000g\000/\000\238\000\135\000\218\001\159\000\198\000g\000/\000\238\000\020\000\243\000\218\001\159\000\198\000g\000\173\000\198\000g\000W\000\238\001\159\000\198\000g\000p\001\149\001=\000\155\001U\0017\001Q\001\211\000p\001=\000\155\001U\0017\000p\000H\001\205\001=\000\155\001U\0017\001O\001\211\000\181\000\181\000\238\001\159\000/\000Q\000/\000Y\000\238\001\159\000\198\000g\000\173\000\198\000g\001K\001I\001\004\001K\001\006\001=\000'\001\137\000j\001\195\0017\001G\001\006\001=\000'\001\137\000j\000\238\001\179\0017\001E\001\006\001=\000'\001\137\000j\000\198\001\183\0017\001C\001\006\001=\001\005\001\011\0017\001A\001\006\001=\001\005\000\238\001\001\0017\001?\001\201\001=\001\006\001=\0009\000j\000?\000\145\0017\001;\001\006\001=\0009\000j\000\234\000\239\000\145\0017\0019\000\163\0017\000*\0015\000a\0015\000*\0013\000*\000g\0017\0013\000M\0013\001\185\0011\001\197\001/\000M\001-\000*\001+\000*\000g\0017\001+\000M\001+\000G\001+\001[\000\219\000\213\001[\000\219\000\213\000,\001[\000\219\000\213\000,\000\016\000\225\001[\000\219\000\213\000,\001)\000l\001\149\001=\000\155\001U\0017\001'\001%\001\211\000\181\000\\\000g\000\181\000\n\000g\000\\\000g\000\181\000\\\000\218\000j\000\238\000\165\001=\000,\001=\001!\001\207\000,\001!\000j\000\238\000\165\001=\000,\001=\001\207\000,\000j\000\238\000\165\001=\001\207\000\216\001=\000#\000j\000\238\000\167\001=\000\159\000j\000Q\000\252\001=\000\159\000j\000Q\001=\000\159\000j\000\238\000\167\000\198\000g\000\252\001=\000\159\000j\000\238\000\167\000\198\000g\001=\000\159\000j\000\238\000\020\000\243\000\218\001\159\000\198\000g\000\252\001=\000\159\000j\000\238\000\020\000\243\000\218\001\159\000\198\000g\000j\001\015\000\218\000j\000\018\001\015\000\218\000\018\001m\000h\000\236\000.\0001\001\015\000\218\001m\001\015\000\218\000h\000\236\000.\001\015\000\218\0001\001m\001\015\000\218\001m\000j\001\r\000\218\000j\000\018\001\r\000\218\000\018\000/\001\r\000\218\000/\001\027\001\015\000h\001\015\000.\001\019\000\198\001\007\000\238\001\001\000\198\001\007\001{\001\011\000\238\001\001\001{\001\t\000\"\001=\000O\000\204\000\178\001=\001y\000\\\001\007\000\205\001\007\001\201\001\r\001\007\000\205\001\007\000h\000.\001\147\000\016\000\018\000\016\000Z\001\149\001=\000\018\000\234\001\015\0017\000(\001=\000c\000\204\000\178\001=\001y\000\\\001\001\000Z\000\020\000P\001=\001\007\000h\001\001\000.\001\001\001\201\000\251\000h\000.\000\\\001\001\001\001\000\\\001\001\001\001\000\004\000\129\001\147\000Z\000\020\001\149\001=\001m\000\215\0017\000Z\000\020\001\149\001=\001m\000\234\001\001\0017\001\023\000X\000X\000\012\000X\000\012\000\012\000X\000\254\001m\000j\000j\000\243\000$\000$\000\241\001\159\000>\001\159\001\161\000>\001\161\001\159\000\198\001\161\001\159\000\198\000>\001\161\000\216\000>\000\216\001\159\000\198\000\216\001\159\000\198\000>\000\216\000\138\001_\0004\000>\000\138\001_\0004\001\159\000\198\000\138\001_\0004\001\159\000\198\000>\000\138\001_\0004\000t\001!\000\176\000t\000\176\000N\001\149\001=\001\007\0017\000N\000\252\001\149\001=\001\007\0017\000N\001\149\001=\001\015\0017\000N\000\252\001\149\001=\001\015\0017\000@\000n\001\004\000\212\000h\001i\000.\000\212\000h\001i\000.\000r\000\212\000\134\001i\0002\000\212\000\134\001i\0002\000r\000\212\000\138\001i\0004\000\212\000\138\001i\0004\000r\000\166\000\252\000\158\000\156\000\154\000\152\000\150\000F\000D\000B\000`\000^\000&\000H\000\198\000t\000\176\000J\000\248\001\b\001\n\000\234\001\b\000\250\000,\001\002\000j\000\238\001\207\000\238\001\159\000\198\001\151\000\198\001\001\000\198\000\181\000\198\000g\000A\000L\000<\000j\000\238\000h\001\007\000\238\001\001\000.\000h\001\007\000.\000h\000\014\001=\001\151\000.\000h\000\014\001=\001\151\000\238\001\001\000.\000h\000\014\001=\001\151\000\238\001\001\000\232\001\001\000.\000h\000\014\001=\001\151\000\232\001\001\000.\001\209\000\202\001\167\000\202\001\159\000\202\000g\000\202\001\015\000\202\001\r\000\202\001\007\000\202\001\001\000\202\000\251\000\202\000\181\000\202\000-\000\202\000\181\000\236\000\181\000\181\001\201\000\175\000\181\001\002\000/\000\179\000\181\000\250\000\181\000\196\001\149\001=\000\181\000\179\000\230\000\181\000\181\000\230\000\181\000\177\000\230\000\181\000\173\000\230\000\181\000Y\001\167\000\181\001\167\000h\000\020\000\243\000.\000Y\000\245\000\181\000\140\001\149\001=\000Y\000\173\000\236\000\181\000\173\001\201\000\175\000\173\001\002\000/\000\177\000\173\000\250\000\181\000j\000\016\000O\000\238\000c\000\238\001\159\000<\000\181\000<\000\181\000\n\000g\001\159\000\135\000\218\001\159\001\213\000\135\000\218\001\213\000\130\001\205\001\203\0002\000\194\001\149\001=\000/\000\238\000\167\000\198\000\241\0017\000>\000>\000\012\000>\000\012\000\012\000>\0000\000i\000[\000\004\000i\001s\001u\000\151\001u\001s\001\143\001u\001\145\000\149\001u\000\149\001\145\001s\001u\000\147\001u\000\145\000\226\001\159\000\198\001\159\001\131\000\143\001\131\001{\000\141\001{\001Y\000\139\001Y\000\245\000\137\000\245\000:\001m\000\135\000:\001m\001#\000\250\001#\000\133\000\250\001#\001\213\000\131\001\b\001\213\000!\000\129\001\006\000!\000q\000\127\000\250\000q\001\159\000}\000\230\001\159\000;\000{\000\230\000;\001\207\000y\000&\001\207\000w\000\230\001\159\001\159\000\230\001\159\000u\000\230\001\151\001\151\000\230\001\151\000s\000&\001\207\001\207\000&\001\207\000I\001\159\001\151\001\151\000,\001\151\000,\000o\000j\000\217\000j\000\217\000,\000j\000\217\000,\000m\000\181\000\181\000,\000\181\000,\000k\001[\000\209\000\217\001[\000\209\000\217\000,\001[\000\209\000\217\000,\000i\001\127\000\180\001\149\001=\000\133\000\196\001\149\001=\001\169\001w\001=\0017\0015\001e\0017\001\139\000)\000\161\001o\001;\001q\0019\000\020\001\149\001=\0009\000=\000B\000\159\000\147\0017\000\020\001\149\001=\000T\0009\000=\000B\000\159\000\147\0017\000e\000Z\001\149\001=\001\005\001\t\0017\000Z\001\149\001=\001\005\000\198\001\r\0017\001\003\000Z\001\149\001=\0000\001\005\000\238\001\001\0017\001?\000\255\000\253\000\233\000\160\001\149\001=\001\001\0017\000\240\001\149\001=\000'\001\137\000j\000\238\001\179\0017\001E\001\177\001\173\000`\000\144\000`\000\188\000F\000\144\000F\000\188\000\138\001)\0004\000\134\000k\0002\000~\000k\000\246\000~\000\246\000\214\001\151\000\174\000\210\000[\000h\000g\000.\000h\000g\000A\000.\000[\000\218\000h\000g\000.\000[\000\218\000\138\000g\0004\000[\000\218\000\134\000g\0002\000[\000\212\000h\000o\000.\000[\000\218\001\r\000\212\000h\000o\000.\000[\000\212\000\138\000o\0004\000[\000\218\001\r\000\212\000\138\000o\0004\000[\000\212\000\134\000o\0002\000[\000\218\001\r\000\212\000\134\000o\0002\000\244\001\149\001=\000g\000\204\000\244\001\149\001=\000\204\000V\001\149\001=\001\191\000h\000Z\001\149\001=\001\007\000.\000h\000Z\001\149\001=\001\007\000\238\001\001\000.\000R\001\149\001=\001\189\001/\000\204\000-\001\173\001\167\000\245\000@\000[\000\252\000[\000\136\000m\000\172\000\136\000\172\000[\000\218\001[\001\r\000\218\000h\000g\000.\001\r\000\218\000\136\000m\000\172\000[\000\168\000j\000[\000\166\000[\001\147\000\016\001\r\000\218\000h\000.\000\138\000\153\0004\001\r\000\218\000\138\000\153\0004\000~\000o\000\246\000~\000\246\001\r\000\218\000~\000o\000\246\001\r\000\218\000~\000\246\000\134\000o\0002\001\r\000\218\000\134\000o\0002\001\r\000\218\000\134\0002\001\r\000\218\000h\000Z\001\149\001=\001\007\000\238\001\001\000.\000/\000W\000h\000\181\000.\000]\000h\000Z\001\149\001=\001\005\000.\000h\000Z\001\149\001=\001\005\000\238\001\001\000.\000\016\000_\000_\000\216\000_\001\167\000\245\000\168\000=\001\r\000\218\000]\001\r\000\218\000\134\0002\001\r\000\218\000h\000.\001\r\000\218\000h\000\181\000.\000h\000\181\000\238\001\159\000.\001\147\000j\000\018\001\006\001\002\001\000\000\244\000\240\000\226\000\224\000\220\000\208\000\206\000\204\000\196\000\194\000\192\000\186\000\182\000\180\000\178\000\164\000\162\000\160\000\148\000\146\000\140\000p\000f\000b\000Z\000X\000V\000T\000R\000P\000N\000J\000>\0000\000(\000\"\000 \000\028\000\026\000\024\000\020\000\014\000\012\000\n\000\b\000\004\000e\000\196\001\149\001=\001\169\000\198\001\167\001=\0017\000\198\000g\001\129\000\209\000\198\001\135\0013\000g\0017\0013\001%\001Q\001e\0017\001\139\000\161\000)\001o\001;\000\020\001\149\001=\0009\000=\000B\000\159\000\149\0017\000\020\001\149\001=\000T\0009\000=\000B\000\159\000\149\0017\000S\000Z\001\149\001=\001\005\001\011\0017\000Z\001\149\001=\0000\001\005\001\011\0017\001A\000\255\000\235\000\240\001\149\001=\000'\001\137\000j\001\195\0017\001G\001\177\000\160\001\149\001=\001\007\0017\000`\000^\000\245\000P\000\229\000\131\001=\000\245\001=\000\168\001m\000\168\001m\000$\000\168\001m\000\144\000\168\001m\000-\000\168\001m\001\r\000\168\001m\000\192\000\168\001m\000\026\000g\0017\000*\001-\000*\000G\000*\000\202\001\207\000s\000\238\001\159\000\238\001\159\000\232\001\159\000\232\001\159\000\198\000\239\001\029\0005\0007\000;\000h\000{\000.\000:\001m\000\016\000F\000`\000\252\000F\000\252\000\252\000F\000`\000\252\000\252\000`\000\154\000@\001+\000\202\000g\0017\001+\000\202\000h\000\231\000.\000j\0001\001\017\001=\000%\000j\000\238\001\159\001=\000\249\000j\000\198\000g\000\252\001=\000\249\000j\000\198\000g\001=\000\249\000j\000A\000\198\000g\000\252\001=\000\249\000j\000A\000\198\000g\000\014\001\149\001=\000/\000\238\000\167\0017\000\012\000\012\000X\000\012\000\012\000X\000\012\000>\000\012\000\012\000>\000\020\0009\001[\000\031\001\213\000\145\000\020\0009\001[\000\234\001\213\000Z\001\r\000\198\001\015\000Z\001\r\000\234\001\015\000Z\000\020\000\251\000\198\001\001\000Z\000\020\000\251\000\234\001\001\000\198\000\198\000>"), (16, "\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\b\000\t\000\n\000\011\000\012\000\r\000\014\000\015\000\016\000\017\000\018\000\022\000\026\000\027\000\028\000\029\000\030\000 \000$\000&\000)\000.\0001\0003\0004\0005\0008\0009\000=\000>\000A\000D\000J\000Q\000S\000U\000V\000[\000a\000d\000g\000k\000o\000q\000r\000t\000x\000z\000}\000\127\000\128\000\131\000\136\000\136\000\139\000\139\000\143\000\150\000\157\000\161\000\163\000\164\000\165\000\169\000\170\000\175\000\177\000\183\000\190\000\193\000\194\000\198\000\203\000\208\000\209\000\213\000\218\000\221\000\232\000\233\000\234\000\235\000\236\000\237\000\239\000\241\000\242\000\243\000\244\000\247\000\248\000\249\000\254\001\001\001\002\001\005\001\006\001\t\001\012\001\r\001\014\001\015\001\017\001\018\001\019\001\020\001\023\001\029\001 \001$\001)\001-\001/\0013\0019\001:\001;\001>\001D\001H\001N\001T\001\\\001c\001n\001w\001x\001|\001|\001~\001\130\001\131\001\136\001\140\001\141\001\145\001\145\001\148\001\152\001\153\001\154\001\162\001\171\001\178\001\186\001\193\001\199\001\205\001\213\001\219\001\226\001\237\001\241\001\245\001\247\001\248\001\250\001\252\001\255\002\002\002\005\002\b\002\011\002\014\002\017\002\020\002\023\002\026\002\029\002 \002#\002&\002)\002,\002/\0022\0025\0028\002:\002<\002?\002C\002F\002I\002N\002U\002\\\002c\002j\002s\002z\002\131\002\138\002\147\002\149\002\153\002\154\002\155\002\156\002\158\002\161\002\166\002\167\002\171\002\176\002\179\002\181\002\186\002\187\002\187\002\189\002\193\002\199\002\201\002\205\002\209\002\212\002\221\002\231\002\239\002\248\002\249\002\250\002\252\002\252\002\254\003\000\003\004\003\005\003\n\003\017\003\018\003\019\003\021\003\022\003\025\003\026\003\027\003\029\003\031\003$\003&\003(\003-\003/\0034\0036\003:\003<\003>\003?\003@\003A\003C\003G\003N\003V\003Y\003^\003d\003f\003k\003r\003t\003u\003x\003z\003{\003\128\003\131\003\132\003\135\003\135\003\143\003\143\003\152\003\152\003\161\003\161\003\167\003\167\003\174\003\174\003\176\003\176\003\184\003\184\003\193\003\193\003\195\003\195\003\197\003\199\003\199\003\201\003\205\003\207\003\207\003\209\003\209\003\211\003\211\003\213\003\213\003\215\003\219\003\221\003\223\003\226\003\230\003\236\003\241\003\247\003\248\003\250\003\253\004\002\004\005\004\012\004\015\004\021\004\023\004\027\004\028\004\029\004\"\004&\004+\0042\004:\004D\004O\004P\004S\004T\004W\004X\004[\004\\\004_\004d\004g\004h\004k\004l\004o\004p\004s\004t\004w\004x\004|\004}\004\127\004\131\004\133\004\135\004\137\004\141\004\146\004\147\004\149\004\150\004\152\004\155\004\156\004\157\004\158\004\159\004\166\004\170\004\175\004\180\004\183\004\185\004\186\004\190\004\193\004\196\004\197\004\204\004\212\004\213\004\213\004\214\004\214\004\215\004\216\004\218\004\220\004\222\004\223\004\225\004\226\004\228\004\229\004\231\004\232\004\234\004\237\004\241\004\242\004\244\004\247\004\251\004\254\005\002\005\007\005\r\005\016\005\018\005\023\005\029\005\"\005(\005)\005*\005+\005/\0054\0058\005=\005A\005F\005G\005H\005I\005J\005K\005L\005M\005N\005O\005P\005Q\005R\005S\005T\005U\005V\005W\005X\005Y\005Z\005[\005\\\005]\005]\005]\005^\005^\005_\005_\005a\005a\005c\005c\005e\005e\005g\005g\005i\005i\005k\005k\005m\005m\005n\005o\005r\005w\005z\005\127\005\134\005\143\005\150\005\152\005\154\005\156\005\158\005\160\005\162\005\164\005\166\005\168\005\170\005\172\005\175\005\177\005\178\005\181\005\182\005\185\005\189\005\192\005\195\005\198\005\201\005\202\005\204\005\210\005\212\005\216\005\219\005\221\005\222\005\225\005\226\005\229\005\230\005\231\005\232\005\234\005\236\005\238\005\242\005\243\005\246\005\247\005\250\005\254\006\007\006\007\006\b\006\b\006\t\006\n\006\012\006\014\006\014\006\015\006\016\006\019\006\020\006\021\006\023\006\024\006\025\006\026\006\027\006\029\006\031\006 \006!\006#\006#\006(\006)\006+\006,\006.\006/\0061\0062\0064\0066\0069\006:\006<\006?\006@\006C\006D\006G\006H\006K\006L\006O\006P\006S\006T\006W\006Z\006]\006`\006c\006f\006i\006j\006k\006l\006n\006q\006s\006v\006z\006{\006}\006\128\006\131\006\135\006\140\006\141\006\145\006\152\006\153\006\155\006\156\006\157\006\158\006\160\006\162\006\171\006\181\006\182\006\188\006\195\006\196\006\205\006\206\006\207\006\208\006\213\006\223\006\224\006\225\006\227\006\229\006\231\006\233\006\236\006\239\006\242\006\244\006\247\006\249\006\252\007\000\007\005\007\n\007\015\007\020\007\027\007 \007'\007,\0073\0078\007<\007@\007F\007N\007T\007U\007V\007W\007X\007Z\007\\\007_\007a\007d\007i\007n\007q\007t\007u\007v\007z\007}\007\130\007\133\007\135\007\140\007\144\007\147\007\152\007\156\007\166\007\167\007\168\007\171\007\172\007\178\007\186\007\187\007\188\007\191\007\192\007\193\007\195\007\198\007\202\007\206\007\211\007\216\007\217\007\218\007\219\007\220\007\221\007\222\007\223\007\224\007\225\007\226\007\227\007\228\007\229\007\230\007\231\007\232\007\233\007\234\007\235\007\236\007\237\007\238\007\239\007\240\007\241\007\242\007\243\007\244\007\245\007\246\007\247\007\248\007\249\007\250\007\251\007\252\007\253\007\254\007\255\b\000\b\001\b\002\b\003\b\004\b\005\b\006\b\007\b\b\b\t\b\n\b\011\b\012\b\r\b\021\b\023\b\027\b\028\b\031\b \b!\b#\b$\b%\b&\b(\b1\b;\b<\bB\bJ\bK\bL\bU\bV\b[\b\\\b]\bb\bd\bf\bi\bl\bo\br\bu\bx\b{\b}\b\127\b\128\b\129\b\130\b\132\b\136\b\138\b\138\b\140\b\141\b\143\b\143\b\144\b\147\b\149\b\150\b\150\b\151\b\152\b\153\b\155\b\157\b\159\b\161\b\162\b\163\b\165\b\169\b\172\b\173\b\174\b\175\b\180\b\185\b\191\b\197\b\204\b\211\b\211\b\212\b\213\b\215\b\217\b\218\b\220\b\222\b\228\b\233\b\237\b\241\b\246\b\251\b\252\b\254")) and lr0_core = - (16, "\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\b\000\t\000\n\000\011\000\012\000\r\000\014\000\015\000\016\000\017\000\018\000\019\000\020\000\021\000\022\000\023\000\024\000\025\000\026\000\027\000\028\000\029\000\030\000\031\000 \000!\000\"\000#\000$\000%\000&\000'\000(\000)\000*\000+\000,\000-\000.\000/\0000\0001\0002\0003\0004\0005\0006\0007\0008\0009\000:\000;\000<\000=\000>\000?\000@\000A\000B\000C\000D\000E\000F\000G\000H\000I\000J\000K\000L\000M\000N\000O\000P\000Q\000R\000S\000T\000U\000V\000W\000X\000Y\000Z\000[\000\\\000]\000^\000_\000`\000a\000b\000c\000d\000e\000f\000g\000h\000i\000j\000k\000l\000m\000n\000o\000p\000q\000r\000s\000t\000u\000v\000w\000x\000y\000z\000{\000|\000}\000~\000\127\000\128\000\129\000\130\000\131\000\132\000\133\000\134\000\135\000\136\000\137\000\138\000\139\000\140\000\141\000\142\000\143\000\144\000\145\000\146\000\147\000\148\000\149\000\150\000\151\000\152\000\153\000\154\000\155\000\156\000\157\000\158\000\159\000\160\000\161\000\162\000\163\000\164\000\165\000\166\000\167\000\168\000\169\000\170\000\171\000\172\000\173\000\174\000\175\000\176\000\177\000\178\000\179\000\180\000\181\000\182\000\183\000\184\000\185\000\186\000\187\000\188\000\189\000\190\000\191\000\192\000\193\000\194\000\195\000\196\000\197\000\198\000\199\000\200\000\201\000\202\000\203\000\204\000\205\000\206\000\207\000\208\000\209\000\210\000\211\000\212\000\213\000\214\000\215\000\216\000\217\000\218\000\219\000\220\000\221\000\222\000\223\000\224\000\225\000\226\000\227\000\228\000\229\000\230\000\231\000\232\000\233\000\234\000\235\000\236\000\237\000\238\000\239\000\240\000\241\000\242\000\243\000\244\000\245\000\246\000\247\000\248\000\249\000\250\000\251\000\252\000\253\000\254\000\255\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\b\001\t\001\n\001\011\001\012\001\r\001\014\001\015\001\016\001\017\001\018\001\019\001\020\001\021\001\022\001\023\001\024\001\025\001\026\001\027\001\028\001\029\001\030\001\031\001 \001!\001\"\001#\001$\001%\001&\001'\001(\001)\001*\001+\001,\001-\001.\001/\0010\0011\0012\0013\0014\0015\0016\0017\0018\0019\001:\001;\001<\001=\001>\001?\001@\001A\001B\001C\001D\001E\001F\001G\001H\001I\001J\001K\001L\001M\001N\001O\001P\001Q\001R\001S\001T\001U\001V\001W\001X\001Y\001Z\001[\001\\\001]\001^\001_\001`\001a\001b\001c\001d\001e\001f\001g\001h\001i\001j\001k\001l\001m\001n\001o\001p\001q\001r\001s\001t\001u\001v\001y\001z\001\127\001\128\001\129\001\130\001\131\001\132\001\133\001\134\001\135\001\136\001\137\001\138\001\139\001\140\001\141\001\142\001\143\001\144\001\145\001w\001x\001\146\001\147\001\148\001{\001|\001}\001~\001\149\001\150\001\151\001\152\001\153\001\154\001\155\001\156\001\157\001\158\001\159\001\160\001\161\001\162\001\163\001\164\001\165\001\166\001\167\001\168\001\169\001\170\001\171\001\172\001\173\001\174\001\175\001\176\001\177\001\178\001\179\001\180\001\181\001\182\001\183\001\184\001\185\001\186\001\187\001\188\001\189\001\190\001\191\001\192\001\193\001\194\001\195\001\196\001\197\001\198\001\199\001\200\001\201\001\202\001\203\001\204\001\205\001\206\001\207\001\208\001\209\001\210\001\211\001\212\001\213\001\214\001\215\001\216\001\217\001\218\001\219\001\220\001\221\001\222\001\223\001\224\001\225\001\226\001\227\001\228\001\229\001\230\001\231\001\232\001\233\001\234\001\235\001\236\001\237\001\238\001\239\001\240\001\241\001\242\001\243\001\244\001\245\001\246\001\247\001\248\001\251\001\252\001\253\001\254\001\255\002\000\002\001\002\002\002\003\002\004\001\249\001\250\002\005\002\006\002\007\002\b\002\t\002\n\002\011\002\012\002\r\002\014\002\015\002\016\002\017\002\018\002\019\002\020\002\021\002\022\002\023\002\024\002\025\002\026\002\027\002\028\002\029\002\030\002\031\002 \002!\002\"\002#\002$\002%\002&\002'\002(\002)\002*\002+\002,\002-\002.\002/\0020\0021\0022\0023\0024\0025\0026\0027\0028\0029\002:\002;\002<\002=\002>\002?\002@\002A\002B\002C\002D\002E\002F\002G\002H\002I\002J\002K\002L\002M\002N\002O\002P\002Q\002R\002q\002r\002s\002t\002u\002v\002w\002x\002y\002z\002{\002|\002}\002~\002\127\002\128\002\129\002\130\002\131\002\132\002\133\002Y\002Z\002[\002\\\002S\002T\002W\002X\002_\002`\002a\002b\002c\002d\002e\002f\002g\002h\002i\002j\002k\002l\002m\002n\002o\002p\002U\002V\002]\002^\005\192\005\193\002\135\002\136\002\137\002\138\002\139\002\140\002\141\002\142\002\143\002\144\002\145\002\146\002\147\002\148\002\149\002\150\002\151\002\152\002\169\002\170\002\195\002\196\002\197\002\198\002\199\002\200\002\201\002\202\002\203\002\204\002\153\002\154\002\159\002\160\002\171\002\172\002\155\002\156\002\157\002\158\002\161\002\162\002\163\002\164\002\165\002\166\002\167\002\168\002\173\002\174\002\175\002\176\002\187\002\188\002\177\002\178\002\179\002\180\002\181\002\182\002\189\002\190\002\191\002\192\002\193\002\194\002\183\002\184\002\185\002\186\002\205\002\206\002\207\002\208\002\209\002\210\002\211\002\212\002\213\002\214\002\215\002\216\002\217\002\218\002\219\002\220\002\221\002\222\002\223\002\224\002\225\002\226\002\227\002\228\002\229\002\230\002\231\002\232\002\233\002\234\002\235\002\236\002\237\002\238\002\239\002\240\002\241\002\242\002\243\002\244\002\245\002\246\002\247\002\248\002\249\002\250\002\251\002\252\002\253\002\254\002\255\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\b\003\t\003\n\003\011\003\012\003\r\003\014\003\015\003\016\003\017\003\018\003\019\003\020\003\021\003\022\003\023\003\024\003\025\003\026\003\027\003\028\003\029\003\030\003\031\003 \003!\003\"\003#\003$\003%\003&\003'\003(\003)\003*\003+\003,\003-\003.\003/\0030\0031\0032\0033\0034\0035\0036\0037\0038\0039\003:\003;\003<\003=\003>\003?\003@\003A\003B\003C\003D\003E\003F\003G\003H\003I\003J\003K\003L\003M\003N\003O\003P\003Q\003R\003S\003T\003U\003V\003W\003X\003Y\003Z\003[\003\\\003]\003^\003_\003`\003a\003b\003c\003d\003e\003f\003g\003h\003i\003j\003k\003l\003m\003n\003o\003p\003q\003r\003s\003t\003u\003v\003w\003x\003y\003z\003{\003|\003}\003~\003\127\003\128\003\129\003\130\003\131\003\132\003\133\003\134\003\135\003\136\003\137\003\138\003\139\003\140\003\141\003\142\003\143\003\144\003\145\003\146\003\147\003\148\003\149\003\150\003\151\003\152\003\153\003\154\003\155\003\156\003\157\003\158\003\159\003\160\003\161\003\162\003\163\003\164\003\165\003\166\003\167\003\168\003\169\003\170\003\171\003\172\003\173\003\174\003\175\003\176\003\177\003\178\003\179\003\180\003\181\003\182\003\183\003\184\003\185\003\186\003\187\003\188\003\189\003\190\003\191\003\192\003\193\003\194\003\195\003\196\003\197\003\198\003\199\003\200\003\201\003\202\003\203\003\204\003\205\003\206\003\207\003\208\003\209\003\210\003\211\003\212\003\213\003\214\003\215\003\216\003\217\003\218\003\219\003\220\003\221\003\222\003\223\003\224\003\225\003\226\003\227\003\228\003\229\003\230\003\231\003\232\003\233\003\234\003\235\003\236\003\237\003\238\003\239\003\240\003\241\003\242\003\243\003\244\003\245\003\246\003\247\003\248\003\249\003\250\003\251\003\252\003\253\003\254\003\255\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\b\004\t\004\n\004\011\004\012\004\r\004\014\004\015\004\016\004\017\004\018\004\019\004\020\004\021\004\022\004\023\004\024\004\025\004\026\004\027\004\028\004\029\004\030\004\031\004 \004!\004\"\004#\004$\004%\004&\004'\004(\004)\004*\004+\004,\004-\004.\004/\0040\0041\0042\0043\0044\0045\0046\0047\0048\0049\004:\004;\004<\004=\004>\004?\004@\004A\004B\004C\004D\004E\004F\004G\004H\004I\004J\004K\004L\004M\004N\004O\004P\004Q\004R\004S\004T\004U\004V\004W\004X\004Y\004Z\004[\004\\\004]\004^\004_\004`\004a\004b\004c\004d\004e\004f\004g\004h\004i\004j\004k\004l\004m\004n\004o\004p\004q\004r\004s\004t\004u\004v\004w\004x\004y\004z\004{\004|\004}\004~\004\127\004\128\004\129\004\130\004\131\004\132\004\133\004\134\004\135\004\136\004\137\004\138\004\139\004\140\004\141\004\142\004\143\004\144\004\145\004\146\004\147\004\148\004\149\004\150\004\151\004\152\004\153\004\154\004\155\004\156\004\157\004\158\004\159\004\160\004\161\004\162\004\163\004\164\004\165\004\166\004\167\004\168\004\169\004\170\004\171\004\172\004\173\004\174\004\175\004\176\004\177\004\178\004\179\004\180\004\181\004\182\004\183\004\184\004\185\004\186\004\187\004\188\004\189\004\190\004\191\004\192\004\193\004\194\004\195\004\196\004\197\004\198\004\199\004\200\004\201\004\202\004\203\004\204\004\205\004\206\004\207\004\208\004\209\004\210\004\211\004\212\004\213\004\214\004\215\004\216\004\217\004\218\004\219\004\220\004\221\004\222\004\223\004\224\004\225\004\226\004\227\004\228\004\229\004\230\004\231\004\232\004\233\004\234\004\235\004\236\004\237\004\238\004\239\004\240\004\241\004\242\004\243\004\244\004\245\004\246\004\247\004\248\004\249\004\250\004\251\004\252\004\253\004\254\004\255\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\b\005\t\005\n\005\011\005\012\005\r\005\014\005\015\005\016\005\017\005\018\005\019\005\020\005\021\005\022\005\023\005\024\005\025\005\026\005\027\005\028\005\029\005\030\005\031\005 \005!\005\"\005#\005$\005%\005&\005'\005(\005)\005*\005+\005,\005-\005.\005/\0050\0051\0052\0053\0054\0055\0056\0057\0058\0059\005:\005;\005<\005=\005>\005?\005@\005A\005B\005C\005D\005E\005F\005G\005H\005I\005J\005K\005L\005M\005N\005O\005P\005Q\005R\005S\005T\005U\005V\005W\005X\005Y\005Z\005[\005\\\005]\005^\005\194\005\195\005\196\005\197\005\198\005\199\005\200\005\201\005\202\005\203\005\204\005o\005p\005q\005\205\005\206\005\207\005\208\005\209\005\210\005\211\005\138\005\139\005\140\005\141\005\142\005\143\005\144\005\145\005\146\005\147\005\148\005\149\005\150\005\151\005\152\005\153\005\154\005\155\005\156\005\157\005\158\005\159\005\160\005\161\005\162\005\163\005\164\005\165\005\166\005\167\005\168\005\169\005\170\005\171\005\172\005\173\005\174\005\175\005\176\005\177\005\178\005\179\005\180\005\181\005\182\005\183\005\184\005\185\005\186\005\187\005\188\005\189\005\190\005\191\005\212\005\213\005\214\005\215\005\216\005\217\005\218\005\219\002\134\005_\005`\005a\005b\005c\005d\005e\005f\005g\005h\005i\005j\005k\005l\005m\005n\005r\005s\005t\005u\005v\005w\005x\005y\005z\005{\005|\005}\005~\005\127\005\128\005\129\005\130\005\131\005\132\005\133\005\134\005\135\005\136\005\137\005\220\005\221\005\222\005\223\005\224\005\225\005\226\005\227\005\228\005\229\005\230\005\231\005\232\005\233\005\234\005\235\005\236\005\237\005\238\005\239\005\240\005\241\005\242\005\243\005\244\005\245\005\246\005\247\005\248\005\249\005\250\005\251\005\252\005\253\005\254\005\255\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\b\006\t\006\n\006\011\006\012\006\r\006\014\006\015\006\016\006\017\006\018\006\019\006\020\006\021\006\022\006\023\006\024\006\025\006\026\006\027\006\028\006\029\006\030\006\031\006 \006!\006\"\006#\006$\006%\006&\006'\006(\006)\006*\006+\006,\006-\006.\006/\0060\0061\0062\0063\0064\0065\0066\0067\0068\0069\006:\006;\006<\006=\006>\006?\006@\006A\006B\006C\006D\006E\006F\006G\006H\006I\006J\006K\006L\006M\006N\006O\006P\006Q\006R\006S\006T\006U\006V\006W\006X\006Y\006Z\006[\006\\\006]\006^\006_\006`\006a\006b\006c\006d\006e\006f\006g\006h\006i\006j\006k\006l\006m\006n\006o\006p\006q\006r\006s\006t\006u\006v\006w\006x\006y\006z\006{\006|\006}\006~\006\127\006\128\006\129\006\130\006\131\006\132\006\133\006\134\006\135\006\136\006\137\006\138\006\139\006\140\006\141\006\142\006\143\006\144\006\145\006\146\006\147\006\148\006\149\006\150\006\151\006\152\006\153\006\154\006\155\006\156\006\157\006\158\006\159\006\160\006\161\006\162\006\163\006\164\006\165\006\166\006\167\006\168\006\169\006\170\006\171\006\172\006\173\006\174\006\175\006\176\006\177\006\178\006\179\006\180\006\181\006\182\006\183\006\184\006\185\006\186\006\187\006\188\006\189\006\190\006\191\006\192\006\193\006\194\006\195\006\196\006\197\006\198\006\199\006\200\006\201\006\202\006\203\006\204\006\205\006\206\006\207\006\208\006\209\006\210\006\211\006\212\006\213\006\214\006\215\006\216\006\217\006\218\006\219\006\220\006\221\006\222\006\223\006\224\006\225\006\226\006\227\006\228\006\229\006\230\006\231\006\232\006\233\006\234\006\235\006\236\006\237\006\238\006\239\006\240\006\241\006\242\006\243\006\244\006\245\006\246\006\247\006\248\006\249\006\250\006\251\006\252\006\253\006\254\006\255\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\b\007\t\007\n\007\011\007\012\007\r\007\014\007\015\007\016\007\017\007\018\007\019\007\020\007\021\007\022\007\023\007\024\007\025\007\026\007\027\007\028\007\029\007\030\007\031\007 \007!\007\"\007#\007$\007%\007&\007'\007(\007)\007*\007+\007,\007-\007.\007/\0070\0071\0072\0073\0074\0075\0076\0077\0078\0079\007:\007;\007<\007=\007>\007?\007@\007A\007B\007C\007D\007E\007F\007G") + (16, "\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\b\000\t\000\n\000\011\000\012\000\r\000\014\000\015\000\016\000\017\000\018\000\019\000\020\000\021\000\022\000\023\000\024\000\025\000\026\000\027\000\028\000\029\000\030\000\031\000 \000!\000\"\000#\000$\000%\000&\000'\000(\000)\000*\000+\000,\000-\000.\000/\0000\0001\0002\0003\0004\0005\0006\0007\0008\0009\000:\000;\000<\000=\000>\000?\000@\000A\000B\000C\000D\000E\000F\000G\000H\000I\000J\000K\000L\000M\000N\000O\000P\000Q\000R\000S\000T\000U\000V\000W\000X\000Y\000Z\000[\000\\\000]\000^\000_\000`\000a\000b\000c\000d\000e\000f\000g\000h\000i\000j\000k\000l\000m\000n\000o\000p\000q\000r\000s\000t\000u\000v\000w\000x\000y\000z\000{\000|\000}\000~\000\127\000\128\000\129\000\130\000\131\000\132\000\133\000\134\000\135\000\136\000\137\000\138\000\139\000\140\000\141\000\142\000\143\000\144\000\145\000\146\000\147\000\148\000\149\000\150\000\151\000\152\000\153\000\154\000\155\000\156\000\157\000\158\000\159\000\160\000\161\000\162\000\163\000\164\000\165\000\166\000\167\000\168\000\169\000\170\000\171\000\172\000\173\000\174\000\175\000\176\000\177\000\178\000\179\000\180\000\181\000\182\000\183\000\184\000\185\000\186\000\187\000\188\000\189\000\190\000\191\000\192\000\193\000\194\000\195\000\196\000\197\000\198\000\199\000\200\000\201\000\202\000\203\000\204\000\205\000\206\000\207\000\208\000\209\000\210\000\211\000\212\000\213\000\214\000\215\000\216\000\217\000\218\000\219\000\220\000\221\000\222\000\223\000\224\000\225\000\226\000\227\000\228\000\229\000\230\000\231\000\232\000\233\000\234\000\235\000\236\000\237\000\238\000\239\000\240\000\241\000\242\000\243\000\244\000\245\000\246\000\247\000\248\000\249\000\250\000\251\000\252\000\253\000\254\000\255\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\b\001\t\001\n\001\011\001\012\001\r\001\014\001\015\001\016\001\017\001\018\001\019\001\020\001\021\001\022\001\023\001\024\001\025\001\026\001\027\001\028\001\029\001\030\001\031\001 \001!\001\"\001#\001$\001%\001&\001'\001(\001)\001*\001+\001,\001-\001.\001/\0010\0011\0012\0013\0014\0015\0016\0017\0018\0019\001:\001;\001<\001=\001>\001?\001@\001A\001B\001C\001D\001E\001F\001G\001H\001I\001J\001K\001L\001M\001N\001O\001P\001Q\001R\001S\001T\001U\001V\001W\001X\001Y\001Z\001[\001\\\001]\001^\001_\001`\001a\001b\001c\001d\001e\001f\001g\001h\001i\001j\001k\001l\001m\001n\001o\001p\001q\001r\001s\001t\001u\001v\001w\001x\001y\001z\001{\001|\001}\001~\001\127\001\128\001\131\001\132\001\137\001\138\001\139\001\140\001\141\001\142\001\143\001\144\001\145\001\146\001\147\001\148\001\149\001\150\001\151\001\152\001\153\001\154\001\155\001\129\001\130\001\156\001\157\001\158\001\133\001\134\001\135\001\136\001\159\001\160\001\161\001\162\001\163\001\164\001\165\001\166\001\167\001\168\001\169\001\170\001\171\001\172\001\173\001\174\001\175\001\176\001\177\001\178\001\179\001\180\001\181\001\182\001\183\001\184\001\185\001\186\001\187\001\188\001\189\001\190\001\191\001\192\001\193\001\194\001\195\001\196\001\197\001\198\001\199\001\200\001\201\001\202\001\203\001\204\001\205\001\206\001\207\001\208\001\209\001\210\001\211\001\212\001\213\001\214\001\215\001\216\001\217\001\218\001\219\001\220\001\221\001\222\001\223\001\224\001\225\001\226\001\227\001\228\001\229\001\230\001\231\001\232\001\233\001\234\001\235\001\236\001\237\001\238\001\239\001\240\001\241\001\242\001\243\001\244\001\245\001\246\001\247\001\248\001\249\001\250\001\251\001\252\001\253\001\254\001\255\002\000\002\001\002\002\002\005\002\006\002\007\002\b\002\t\002\n\002\011\002\012\002\r\002\014\002\003\002\004\002\015\002\016\002\017\002\018\002\019\002\020\002\021\002\022\002\023\002\024\002\025\002\026\002\027\002\028\002\029\002\030\002\031\002 \002!\002\"\002#\002$\002%\002&\002'\002(\002)\002*\002+\002,\002-\002.\002/\0020\0021\0022\0023\0024\0025\0026\0027\0028\0029\002:\002;\002<\002=\002>\002?\002@\002A\002B\002C\002D\002E\002F\002G\002H\002I\002J\002K\002L\002M\002N\002O\002P\002Q\002R\002S\002T\002U\002V\002W\002X\002Y\002Z\002[\002\\\002]\002^\002_\002`\002a\002b\002c\002d\002e\002f\002g\002\138\002\139\002\140\002\141\002\142\002\143\002\144\002\145\002\146\002\147\002\148\002\149\002\150\002\151\002\152\002\153\002\154\002\155\002\156\002\157\002\158\002r\002s\002t\002u\002h\002i\002l\002m\002n\002o\002p\002q\002x\002y\002z\002{\002|\002}\002~\002\127\002\128\002\129\002\130\002\131\002\132\002\133\002\134\002\135\002\136\002\137\002j\002k\002v\002w\005\220\005\221\002\160\002\161\002\162\002\163\002\164\002\165\002\166\002\167\002\168\002\169\002\170\002\171\002\172\002\173\002\174\002\175\002\176\002\177\002\178\002\179\002\180\002\183\002\184\002\185\002\186\002\187\002\188\002\189\002\190\002\191\002\192\002\193\002\194\002\195\002\196\002\197\002\198\002\199\002\200\002\201\002\202\002\203\002\204\002\205\002\206\002\207\002\208\002\209\002\210\002\211\002\212\002\213\002\214\002\215\002\216\002\181\002\182\002\217\002\218\002\219\002\220\002\221\002\222\002\223\002\224\002\225\002\226\002\227\002\228\002\229\002\230\002\231\002\232\002\233\002\234\002\235\002\236\002\237\002\238\002\239\002\240\002\241\002\242\002\243\002\244\002\245\002\246\002\247\002\248\002\249\002\250\002\251\002\252\002\253\002\254\002\255\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\b\003\t\003\n\003\011\003\012\003\r\003\014\003\015\003\016\003\017\003\018\003\019\003\020\003\021\003\022\003\023\003\024\003\025\003\026\003\027\003\028\003\029\003\030\003\031\003 \003!\003\"\003#\003$\003%\003&\003'\003(\003)\003*\003+\003,\003-\003.\003/\0030\0031\0032\0033\0034\0035\0036\0037\0038\0039\003:\003;\003<\003=\003>\003?\003@\003A\003B\003C\003D\003E\003F\003G\003H\003I\003J\003K\003L\003M\003N\003O\003P\003Q\003R\003S\003T\003U\003V\003W\003X\003Y\003Z\003[\003\\\003]\003^\003_\003`\003a\003b\003c\003d\003e\003f\003g\003h\003i\003j\003k\003l\003m\003n\003o\003p\003q\003r\003s\003t\003u\003v\003w\003x\003y\003z\003{\003|\003}\003~\003\127\003\128\003\129\003\130\003\131\003\132\003\133\003\134\003\135\003\136\003\137\003\138\003\139\003\140\003\141\003\142\003\143\003\144\003\145\003\146\003\147\003\148\003\149\003\150\003\151\003\152\003\153\003\154\003\155\003\156\003\157\003\158\003\159\003\160\003\161\003\162\003\163\003\164\003\165\003\166\003\167\003\168\003\169\003\170\003\171\003\172\003\173\003\174\003\175\003\176\003\177\003\178\003\179\003\180\003\181\003\182\003\183\003\184\003\185\003\186\003\187\003\188\003\189\003\190\003\191\003\192\003\193\003\194\003\195\003\196\003\197\003\198\003\199\003\200\003\201\003\202\003\203\003\204\003\205\003\206\003\207\003\208\003\209\003\210\003\211\003\212\003\213\003\214\003\215\003\216\003\217\003\218\003\219\003\220\003\221\003\222\003\223\003\224\003\225\003\226\003\227\003\228\003\229\003\230\003\231\003\232\003\233\003\234\003\235\003\236\003\237\003\238\003\239\003\240\003\241\003\242\003\243\003\244\003\245\003\246\003\247\003\248\003\249\003\250\003\251\003\252\003\253\003\254\003\255\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\b\004\t\004\n\004\011\004\012\004\r\004\014\004\015\004\016\004\017\004\018\004\019\004\020\004\021\004\022\004\023\004\024\004\025\004\026\004\027\004\028\004\029\004\030\004\031\004 \004!\004\"\004#\004$\004%\004&\004'\004(\004)\004*\004+\004,\004-\004.\004/\0040\0041\0042\0043\0044\0045\0046\0047\0048\0049\004:\004;\004<\004=\004>\004?\004@\004A\004B\004C\004D\004E\004F\004G\004H\004I\004J\004K\004L\004M\004N\004O\004P\004Q\004R\004S\004T\004U\004V\004W\004X\004Y\004Z\004[\004\\\004]\004^\004_\004`\004a\004b\004c\004d\004e\004f\004g\004h\004i\004j\004k\004l\004m\004n\004o\004p\004q\004r\004s\004t\004u\004v\004w\004x\004y\004z\004{\004|\004}\004~\004\127\004\128\004\129\004\130\004\131\004\132\004\133\004\134\004\135\004\136\004\137\004\138\004\139\004\140\004\141\004\142\004\143\004\144\004\145\004\146\004\147\004\148\004\149\004\150\004\151\004\152\004\153\004\154\004\155\004\156\004\157\004\158\004\159\004\160\004\161\004\162\004\163\004\164\004\165\004\166\004\167\004\168\004\169\004\170\004\171\004\172\004\173\004\174\004\175\004\176\004\177\004\178\004\179\004\180\004\181\004\182\004\183\004\184\004\185\004\186\004\187\004\188\004\189\004\190\004\191\004\192\004\193\004\194\004\195\004\196\004\197\004\198\004\199\004\200\004\201\004\202\004\203\004\204\004\205\004\206\004\207\004\208\004\209\004\210\004\211\004\212\004\213\004\214\004\215\004\216\004\217\004\218\004\219\004\220\004\221\004\222\004\223\004\224\004\225\004\226\004\227\004\228\004\229\004\230\004\231\004\232\004\233\004\234\004\235\004\236\004\237\004\238\004\239\004\240\004\241\004\242\004\243\004\244\004\245\004\246\004\247\004\248\004\249\004\250\004\251\004\252\004\253\004\254\004\255\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\b\005\t\005\n\005\011\005\012\005\r\005\014\005\015\005\016\005\017\005\018\005\019\005\020\005\021\005\022\005\023\005\024\005\025\005\026\005\027\005\028\005\029\005\030\005\031\005 \005!\005\"\005#\005$\005%\005&\005'\005(\005)\005*\005+\005,\005-\005.\005/\0050\0051\0052\0053\0054\0055\0056\0057\0058\0059\005:\005;\005<\005=\005>\005?\005@\005A\005B\005C\005D\005E\005F\005G\005H\005I\005J\005K\005L\005M\005N\005O\005P\005Q\005R\005S\005T\005U\005V\005W\005X\005Y\005Z\005[\005\\\005]\005^\005_\005`\005a\005b\005c\005d\005e\005f\005g\005h\005i\005j\005k\005l\005m\005n\005o\005p\005q\005r\005s\005t\005u\005v\005w\005x\005y\005z\005{\005\222\005\223\005\224\005\225\005\226\005\227\005\228\005\229\005\230\005\231\005\232\005\140\005\141\005\142\005\233\005\234\005\235\005\236\005\237\005\238\005\239\005\166\005\167\005\168\005\169\005\170\005\171\005\172\005\173\005\174\005\175\005\176\005\177\005\178\005\179\005\180\005\181\005\182\005\183\005\184\005\185\005\186\005\187\005\188\005\189\005\190\005\191\005\192\005\193\005\194\005\195\005\196\005\197\005\198\005\199\005\200\005\201\005\202\005\203\005\204\005\205\005\206\005\207\005\208\005\209\005\210\005\211\005\212\005\213\005\214\005\215\005\216\005\217\005\218\005\219\005\240\005\241\005\242\005\243\005\244\005\245\005\246\005\247\002\159\005|\005}\005~\005\127\005\128\005\129\005\130\005\131\005\132\005\133\005\134\005\135\005\136\005\137\005\138\005\139\005\143\005\144\005\145\005\146\005\147\005\148\005\149\005\150\005\151\005\152\005\153\005\154\005\155\005\156\005\157\005\158\005\159\005\160\005\161\005\162\005\163\005\164\005\165\005\248\005\249\005\250\005\251\005\252\005\253\005\254\005\255\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\b\006\t\006\n\006\011\006\012\006\r\006\014\006\015\006\016\006\017\006\018\006\019\006\020\006\021\006\022\006\023\006\024\006\025\006\026\006\027\006\028\006\029\006\030\006\031\006 \006!\006\"\006#\006$\006%\006&\006'\006(\006)\006*\006+\006,\006-\006.\006/\0060\0061\0062\0063\0064\0065\0066\0067\0068\0069\006:\006;\006<\006=\006>\006?\006@\006A\006B\006C\006D\006E\006F\006G\006H\006I\006J\006K\006L\006M\006N\006O\006P\006Q\006R\006S\006T\006U\006V\006W\006X\006Y\006Z\006[\006\\\006]\006^\006_\006`\006a\006b\006c\006d\006e\006f\006g\006h\006i\006j\006k\006l\006m\006n\006o\006p\006q\006r\006s\006t\006u\006v\006w\006x\006y\006z\006{\006|\006}\006~\006\127\006\128\006\129\006\130\006\131\006\132\006\133\006\134\006\135\006\136\006\137\006\138\006\139\006\140\006\141\006\142\006\143\006\144\006\145\006\146\006\147\006\148\006\149\006\150\006\151\006\152\006\153\006\154\006\155\006\156\006\157\006\158\006\159\006\160\006\161\006\162\006\163\006\164\006\165\006\166\006\167\006\168\006\169\006\170\006\171\006\172\006\173\006\174\006\175\006\176\006\177\006\178\006\179\006\180\006\181\006\182\006\183\006\184\006\185\006\186\006\187\006\188\006\189\006\190\006\191\006\192\006\193\006\194\006\195\006\196\006\197\006\198\006\199\006\200\006\201\006\202\006\203\006\204\006\205\006\206\006\207\006\208\006\209\006\210\006\211\006\212\006\213\006\214\006\215\006\216\006\217\006\218\006\219\006\220\006\221\006\222\006\223\006\224\006\225\006\226\006\227\006\228\006\229\006\230\006\231\006\232\006\233\006\234\006\235\006\236\006\237\006\238\006\239\006\240\006\241\006\242\006\243\006\244\006\245\006\246\006\247\006\248\006\249\006\250\006\251\006\252\006\253\006\254\006\255\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\b\007\t\007\n\007\011\007\012\007\r\007\014\007\015\007\016\007\017\007\018\007\019\007\020\007\021\007\022\007\023\007\024\007\025\007\026\007\027\007\028\007\029\007\030\007\031\007 \007!\007\"\007#\007$\007%\007&\007'\007(\007)\007*\007+\007,\007-\007.\007/\0070\0071\0072\0073\0074\0075\0076\0077\0078\0079\007:\007;\007<\007=\007>\007?\007@\007A\007B\007C\007D\007E\007F\007G\007H\007I\007J\007K\007L\007M\007N\007O\007P") and lr0_items = - ((32, "\000\000\000\000\000\001\252\001\000\002\240\001\000\011t\001\000\011p\001\000\011l\001\000\011h\001\000\011d\001\000\n\176\001\000\011`\001\000\011\\\001\000\011X\001\000\011T\001\000\011P\001\000\011L\001\000\011H\001\000\011D\001\000\011@\001\000\011<\001\000\0118\001\000\0114\001\000\0110\001\000\011,\001\000\011(\001\000\011$\001\000\011 \001\000\011\028\001\000\011\024\001\000\n\172\001\000\011\020\001\000\011\016\001\000\011\012\001\000\011\b\001\000\011\004\001\000\011\000\001\000\n\252\001\000\n\248\001\000\n\244\001\000\n\240\001\000\n\236\001\000\n\232\001\000\n\228\001\000\n\224\001\000\n\220\001\000\n\216\001\000\n\212\001\000\n\208\001\000\n\204\001\000\n\200\001\000\n\196\001\000\n\192\001\000\n\188\001\000\n\184\001\000\n\180\001\000\000\172\001\000\000\168\001\000\000\172\002\000\000\172\003\000\002\240\002\000\001\252\002\000\000\176\001\000\000\176\002\000\0028\001\000\0028\002\000\0028\003\000\n4\001\000\005h\001\000\001\248\001\000\001\244\001\000\001\240\001\000\001\236\001\000\001\248\002\000\001\244\002\000\001\240\002\000\001\236\002\000\001\248\003\000\001\244\003\000\001\240\003\000\001\236\003\000\002,\001\000\002,\002\000\002,\003\000\001\156\001\000\001\136\001\000\002\248\001\000\n\012\001\000\t\248\001\000\t\248\002\000\t\248\003\000\001\016\001\000\001\012\001\000\n|\001\000\t\156\001\000\t\152\001\000\t\152\002\000\t\156\002\000\t\148\001\000\t\144\001\000\t\144\002\000\t\148\002\000\012|\001\000\n\164\001\000\nx\001\000\nt\001\000\nl\001\000\001\180\001\000\001\148\001\000\006\200\001\000\001\148\002\000\006t\001\000\006\188\001\000\006\184\001\000\t\156\001\000\t\152\001\000\006\180\001\000\006\204\001\000\006\220\001\000\nx\002\000\nt\002\000\nx\003\000\nt\003\000\nx\004\000\nt\004\000\005\192\001\000\005\188\001\000\nx\005\000\nt\005\000\nt\006\000\nx\006\000\0058\001\000\003t\001\000\005\200\001\000\005\200\002\000\012\160\001\000\012\160\002\000\012\160\003\000\012|\001\000\006\180\001\000\006\196\001\000\006\192\001\000\006x\001\000\006\212\001\000\006\176\001\000\006\172\001\000\006\168\001\000\006\164\001\000\006\160\001\000\006\152\001\000\006\216\001\000\006\208\001\000\006\148\001\000\006\144\001\000\006\140\001\000\006\136\001\000\006\132\001\000\006\128\001\000\006\132\002\000\006\128\002\000\003\132\001\000\003\132\002\000\006\132\003\000\006\128\003\000\006\132\004\000\006\128\004\000\006\132\005\000\006\140\002\000\006\136\002\000\006\140\003\000\006\136\003\000\006\140\004\000\006\136\004\000\006\140\005\000\006\148\002\000\006\144\002\000\006\148\003\000\006\144\003\000\006\148\004\000\006\144\004\000\006\148\005\000\006\236\001\000\006\224\001\000\006\156\001\000\006|\001\000\006\228\001\000\006\232\001\000\012|\002\000\012|\003\000\012\128\001\000\012\160\004\000\012\160\005\000\000d\001\000\0058\001\000\b\148\001\000\000`\001\000\003t\001\000\003x\001\000\b\148\002\000\000`\002\000\007D\001\000\007D\002\000\007D\003\000\007@\001\000\000\132\001\000\000p\001\000\000\\\001\000\000X\001\000\000`\001\000\000`\002\000\000\\\002\000\000\\\003\000\000\\\004\000\005\208\001\000\005\208\002\000\005\208\003\000\005\208\004\000\005\184\001\000\005\152\001\000\005\152\002\000\011\180\001\000\011\176\001\000\003p\001\000\003l\001\000\011\180\002\000\011\176\002\000\003p\002\000\003l\002\000\011\180\003\000\011\176\003\000\003p\003\000\003l\003\000\012p\001\000\012\\\001\000\012P\001\000\012\\\002\000\011\180\004\000\003p\004\000\012d\001\000\012T\001\000\012d\002\000\012@\001\000\012l\001\000\012h\001\000\012`\001\000\012X\001\000\012`\002\000\012h\002\000\0124\001\000\012H\001\000\012D\001\000\012D\002\000\0124\002\000\b\200\001\000\012@\002\000\b\204\001\000\012@\003\000\b\204\002\000\b\204\003\000\011\180\005\000\003p\005\000\0050\001\000\003p\006\000\012,\001\000\0058\001\000\001\160\001\000\006X\001\000\006H\001\000\0068\001\000\0060\001\000\001\164\001\000\001\148\001\000\000\132\001\000\000p\001\000\000\\\001\000\000X\001\000\0050\001\000\0030\001\000\0030\002\000\0050\001\000\000x\001\000\000t\001\000\0050\001\000\005\b\001\000\005\000\001\000\004\248\001\000\005\b\002\000\005\000\002\000\004\248\002\000\002\244\001\000\002\244\002\000\004\156\001\000\004\152\001\000\003\144\001\000\000@\001\000\000<\001\000\006h\001\000\006d\001\000\006h\002\000\006h\003\000\006h\004\000\007\\\001\000\007X\001\000\007T\001\000\007P\001\000\007L\001\000\007H\001\000\007\\\002\000\007X\002\000\007T\002\000\007P\002\000\007\\\003\000\007X\003\000\007T\003\000\007P\003\000\t\236\001\000\t\236\002\000\t\236\003\000\005`\001\000\005l\001\000\005d\001\000\005l\002\000\005d\002\000\005l\003\000\005d\003\000\005\128\001\000\001\b\001\000\t\236\004\000\004l\001\000\004l\002\000\011\220\001\000\011\216\001\000\001\232\001\000\001\232\002\000\001\232\003\000\002(\001\000\002(\002\000\002(\003\000\012|\001\000\t\244\001\000\t\240\001\000\t\188\001\000\t\184\001\000\001\180\001\000\001\148\001\000\n\012\001\000\006t\001\000\nH\001\000\nD\001\000\012\128\001\000\002\188\001\000\002\188\002\000\004\224\001\000\004\224\002\000\004\224\003\000\b8\001\000\004\224\004\000\t\172\001\000\t\168\001\000\t\164\001\000\001\144\001\000\001\144\002\000\t\160\001\000\003\176\001\000\t\160\002\000\t\160\003\000\004\220\001\000\004\216\001\000\004\212\001\000\004\208\001\000\007\020\001\000\000\160\001\000\000\156\001\000\006\252\001\000\000\160\002\000\000\156\002\000\000\152\001\000\000\148\001\000\000\152\002\000\000\148\002\000\000\144\001\000\000\140\001\000\000\136\001\000\000|\001\000\005|\001\000\005<\001\000\0054\001\000\005|\002\000\005|\003\000\005|\001\000\005<\001\000\005|\004\000\005<\002\000\005<\003\000\005x\001\000\005<\002\000\0054\002\000\0054\003\000\001|\001\000\000|\002\000\000\140\002\000\006\024\001\000\006\024\002\000\000h\001\000\0034\001\000\003(\001\000\0034\002\000\012\024\001\000\b\232\001\000\b\232\002\000\0120\001\000\000\164\001\000\b\232\003\000\000\128\001\000\000l\001\000\000\128\002\000\000\128\003\000\000l\002\000\003,\001\000\003,\002\000\003,\003\000\003,\004\000\012\020\001\000\b\236\001\000\000\128\001\000\000l\001\000\b\236\002\000\b\236\003\000\000\128\001\000\000l\001\000\0034\003\000\b\240\001\000\b\184\001\000\b\188\001\000\000\140\003\000\000\140\004\000\b\188\002\000\b\188\003\000\011\228\001\000\011\224\001\000\011\224\002\000\006\240\001\000\011\224\003\000\011\224\004\000\b\172\001\000\b\172\002\000\000D\001\000\b\172\003\000\000H\001\000\000H\002\000\000H\003\000\000H\004\000\011\224\005\000\b\168\001\000\000H\001\000\011\228\002\000\b\244\001\000\001\216\001\000\001\216\002\000\001\212\001\000\000H\001\000\b\240\001\000\000\136\002\000\000\136\003\000\000\144\002\000\000\144\003\000\b\188\001\000\000\144\004\000\000\144\005\000\b\188\001\000\000\148\003\000\000\148\004\000\b\188\001\000\000\160\003\000\000\156\003\000\000\156\004\000\000\160\004\000\b\144\001\000\000\160\005\000\000\160\006\000\b\144\002\000\b\140\001\000\007\020\002\000\001\216\001\000\004\220\002\000\004\216\002\000\004\212\002\000\004\208\002\000\007,\001\000\007\200\001\000\007\200\002\000\007\200\003\000\001\128\001\000\n\144\001\000\n\144\002\000\001\140\001\000\001\152\001\000\001\132\001\000\nd\001\000\012\132\001\000\nh\001\000\007\200\004\000\np\001\000\n\132\001\000\n\128\001\000\n\132\002\000\n\132\003\000\t\140\001\000\n\140\001\000\n\160\001\000\n\156\001\000\n\152\001\000\n\148\001\000\005l\001\000\001\176\001\000\001\172\001\000\n\160\002\000\n\156\002\000\n\152\002\000\n\148\002\000\005l\002\000\001\176\002\000\n\160\003\000\n\156\003\000\001\176\003\000\n\156\004\000\007\164\001\000\007\164\002\000\007\164\003\000\007\184\001\000\007\148\001\000\007\168\001\000\007\156\001\000\007\168\002\000\007\172\001\000\007\168\003\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\007\172\002\000\007\172\003\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\007\140\002\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\003\000\007\140\001\000\007\160\002\000\007\172\001\000\007\160\003\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\007\152\002\000\007\152\003\000\007\144\002\000\n\140\001\000\007\196\001\000\007\196\002\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\n\168\001\000\n\136\001\000\007\192\001\000\007\188\001\000\012|\001\000\n\164\001\000\nx\001\000\nt\001\000\nl\001\000\007\192\002\000\001\180\001\000\001\148\001\000\007\192\003\000\006 \001\000\006\028\001\000\006 \002\000\007\192\004\000\007\192\005\000\007\192\006\000\n\136\001\000\001\184\001\000\t\148\001\000\t\144\001\000\006\192\001\000\001\180\002\000\001\180\003\000\n\164\002\000\nl\002\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\nl\003\000\n\164\003\000\n\164\004\000\001\216\001\000\n\164\005\000\007\188\002\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\007\172\001\000\007\164\004\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\001\176\004\000\001\176\005\000\n\160\004\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\n\160\005\000\n\152\003\000\t\164\001\000\n\152\004\000\t\164\002\000\t\164\003\000\t\024\001\000\t\020\001\000\t\016\001\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\t\024\002\000\t\020\002\000\t\024\003\000\n\148\003\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\007,\002\000\004\220\003\000\004\216\003\000\004\212\003\000\004\208\003\000\004\220\004\000\004\216\004\000\004\212\004\000\004\216\005\000\007\004\001\000\004\216\006\000\004\220\005\000\t\172\002\000\t\168\002\000\t\168\003\000\nd\001\000\004\000\001\000\003\252\001\000\003\248\001\000\003\244\001\000\003\240\001\000\003\224\001\000\003\220\001\000\003\220\002\000\003\172\001\000\003\168\001\000\003\172\002\000\003\172\003\000\001\216\001\000\003\220\003\000\003\220\004\000\003\224\002\000\003\208\001\000\003\204\001\000\003\204\002\000\003\204\003\000\0074\001\000\002\180\001\000\nd\001\000\004,\001\000\004(\001\000\003\216\001\000\003\212\001\000\007\232\001\000\003\212\002\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\004$\001\000\004 \001\000\004$\002\000\004$\003\000\001\216\001\000\003\212\003\000\003\212\004\000\003\212\005\000\007\228\001\000\003\216\002\000\012|\001\000\011\136\001\000\n\164\001\000\nx\001\000\nt\001\000\nl\001\000\001\180\001\000\001\148\001\000\011\136\002\000\011\136\003\000\011\136\004\000\003\228\001\000\003\228\002\000\011\128\001\000\004\012\001\000\002\024\001\000\002\020\001\000\002\016\001\000\002\012\001\000\002\024\002\000\002\020\002\000\002\024\003\000\002\024\004\000\002\024\005\000\005\156\001\000\005\156\002\000\003<\001\000\0038\001\000\0038\002\000\003<\002\000\003<\003\000\005\224\001\000\005\212\001\000\005\224\002\000\005\224\003\000\005\204\001\000\005\204\002\000\b\128\001\000\003@\001\000\b\128\002\000\005\204\003\000\005\204\004\000\005\220\001\000\005\232\001\000\005\228\001\000\005\216\001\000\005\204\005\000\005\232\002\000\012\200\001\000\012\196\001\000\012\200\002\000\012\196\002\000\012\200\003\000\012\196\003\000\012\224\001\000\012\220\001\000\012\224\002\000\012\200\004\000\012\200\005\000\000H\001\000\012\196\004\000\012\196\005\000\000H\001\000\012\196\006\000\bx\001\000\bx\002\000\bx\003\000\001\216\001\000\bx\004\000\bx\005\000\001\216\001\000\012<\001\000\012\216\001\000\012\212\001\000\012\208\001\000\012\204\001\000\012\216\002\000\012\212\002\000\012\216\003\000\012\212\003\000\012\212\004\000\012\212\005\000\005\232\001\000\005\228\001\000\005\216\001\000\005\228\002\000\005\232\001\000\005\228\003\000\005\228\001\000\005\216\001\000\005\216\002\000\005|\001\000\005\\\001\000\005<\001\000\005\\\002\000\005<\002\000\005<\003\000\003t\001\000\005\\\003\000\005\248\001\000\005X\001\000\005\236\001\000\012\216\004\000\012\216\005\000\005\232\001\000\005\228\001\000\005\216\001\000\012\208\002\000\012\204\002\000\005l\001\000\012\204\003\000\012\204\004\000\005|\001\000\005<\001\000\005l\002\000\012\208\003\000\012\208\004\000\005|\001\000\005<\001\000\b\176\001\000\b\180\001\000\005\232\003\000\b\180\002\000\b\180\003\000\b|\001\000\005\232\001\000\005\228\001\000\005\224\004\000\005\216\001\000\005\232\001\000\005\228\001\000\005\216\001\000\005\212\002\000\005\212\003\000\005\232\001\000\005\228\001\000\005\216\001\000\003<\004\000\003<\005\000\005\156\003\000\005\156\004\000\005\160\001\000\005\176\001\000\005\172\001\000\005\164\001\000\005\156\005\000\007\\\001\000\007X\001\000\007T\001\000\007P\001\000\007L\001\000\007H\001\000\005\176\002\000\005\176\003\000\007L\002\000\007H\002\000\005\176\001\000\005\172\001\000\005\164\001\000\007L\003\000\007H\003\000\007H\004\000\005\232\001\000\005\228\001\000\005\216\001\000\007H\005\000\005\172\002\000\005\164\002\000\005\168\001\000\005l\001\000\005\180\001\000\005\176\001\000\005\172\001\000\005\164\001\000\002\024\006\000\002\024\007\000\nT\001\000\001\144\001\000\n\024\001\000\n\020\001\000\t\012\001\000\t\b\001\000\t\004\001\000\007\028\001\000\n<\001\000\012\128\001\000\005`\001\000\t\180\001\000\t\176\001\000\002D\001\000\002D\002\000\002D\003\000\t\232\001\000\t\228\001\000\t\232\002\000\t\228\002\000\t\232\003\000\t\228\003\000\0024\001\000\0020\001\000\0024\002\000\0020\002\000\0024\003\000\0020\003\000\002\028\001\000\002\028\002\000\002\028\003\000\b\160\001\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\004\244\001\000\004\240\001\000\004\236\001\000\004\240\002\000\002$\001\000\002 \001\000\002$\002\000\002 \002\000\002$\003\000\002 \003\000\012|\001\000\n\164\001\000\nx\001\000\nt\001\000\nl\001\000\002$\004\000\001\180\001\000\001\148\001\000\002$\005\000\002$\006\000\002$\007\000\003\024\001\000\002\004\001\000\002\000\001\000\002\004\002\000\002\000\002\000\002\004\003\000\002\000\003\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\002\004\004\000\002\000\004\000\002\004\005\000\002<\001\000\002<\002\000\002<\003\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\002<\004\000\002<\005\000\n\016\001\000\t\252\001\000\005p\001\000\n,\001\000\n(\001\000\n\028\001\000\n\016\002\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\n,\002\000\n,\003\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\n(\002\000\n(\003\000\t\220\002\000\t\212\002\000\t\204\002\000\t\204\003\000\002@\001\000\002@\002\000\002@\003\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\002@\004\000\n\028\002\000\t\224\002\000\t\216\002\000\t\208\002\000\t\200\002\000\t\196\002\000\t\192\002\000\t\192\003\000\002\168\001\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\002\228\001\000\002\224\001\000\002\220\001\000\002\216\001\000\002\212\001\000\002\208\001\000\002\204\001\000\002\200\001\000\002\196\001\000\002\192\001\000\002H\001\000\002\b\001\000\003\192\001\000\003\188\001\000\003\192\002\000\003\192\003\000\012$\001\000\012$\002\000\001\216\001\000\012 \001\000\012\028\001\000\012 \002\000\012\028\002\000\001\216\001\000\012 \003\000\012 \004\000\001\216\001\000\003\192\004\000\003\192\005\000\003\188\002\000\003\196\001\000\003\196\002\000\003\200\001\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\003\200\002\000\n\b\001\000\n`\001\000\n\\\001\000\nX\001\000\nP\001\000\nL\001\000\n@\001\000\n8\001\000\n$\001\000\n \001\000\005t\001\000\005l\001\000\001\176\001\000\001\172\001\000\n`\002\000\n\\\002\000\nX\002\000\nP\002\000\nL\002\000\n@\002\000\n8\002\000\n$\002\000\n \002\000\005t\002\000\005l\002\000\001\176\002\000\012|\001\000\n`\003\000\n8\003\000\n \003\000\001\176\003\000\n8\004\000\006\184\001\000\000@\001\000\006\180\001\000\000<\001\000\n`\004\000\n`\005\000\n`\006\000\n`\007\000\005\176\001\000\005\172\001\000\005\164\001\000\n`\b\000\n`\t\000\005\232\001\000\005\228\001\000\005\216\001\000\n`\n\000\011\220\001\000\006\196\001\000\011\216\001\000\006\192\001\000\006x\001\000\002\180\001\000\007\184\001\000\0040\001\000\0040\002\000\0040\003\000\001\216\001\000\0040\004\000\0040\005\000\b\224\001\000\002L\001\000\b\224\002\000\n\b\001\000\002T\001\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\002T\002\000\012\136\001\000\n0\001\000\n\004\001\000\n\000\001\000\004\232\001\000\001\228\001\000\001\228\002\000\001\228\003\000\004\228\001\000\004\016\001\000\002\176\001\000\002\176\002\000\002\176\003\000\t4\001\000\t0\001\000\t,\001\000\t(\001\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\128\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\003\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002t\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\003\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002p\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\003\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002l\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\003\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\132\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\003\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\148\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\003\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002|\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\003\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002x\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\003\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\140\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\003\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002h\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\003\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002d\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\003\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002`\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\003\000\002`\001\000\002\\\001\000\002X\001\000\002\\\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\003\000\002\\\001\000\002X\001\000\002X\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\003\000\002X\001\000\002\144\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\003\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\136\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\003\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\b\228\002\000\b\228\003\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\164\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\003\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\184\002\000\b\228\001\000\002\232\001\000\002\184\003\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\152\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\003\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\156\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\003\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\160\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\003\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\002\232\002\000\n\004\001\000\002P\001\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\002P\002\000\002\172\001\000\b\228\001\000\002\232\001\000\002\184\001\000\002\172\002\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t4\002\000\t0\002\000\t,\002\000\t4\003\000\t4\004\000\t4\005\000\t0\003\000\000L\001\000\000L\002\000\nh\001\000\004\b\001\000\004\b\002\000\004\b\003\000\001\216\001\000\004\b\004\000\004\b\005\000\007\224\001\000\007\216\001\000\007\208\001\000\007\204\001\000\007\180\001\000\004\004\001\000\004\004\002\000\004\004\003\000\007\180\002\000\007\180\003\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\007\204\002\000\007\204\003\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\007\224\002\000\007\224\003\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\007\216\002\000\007\216\003\000\007\208\002\000\007\212\001\000\007\220\001\000\007\176\001\000\007\176\002\000\007\176\003\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\003\236\001\000\000L\003\000\b\016\001\000\b\016\002\000\007\252\001\000\007\248\001\000\007\252\002\000\007\248\002\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\007\252\003\000\007\252\004\000\011\192\001\000\011\188\001\000\005\240\001\000\005\240\002\000\005\240\003\000\005\240\004\000\005\240\005\000\007$\001\000\007$\002\000\005\232\001\000\005\228\001\000\005\216\001\000\005\240\006\000\004\132\001\000\004\132\002\000\005\240\007\000\011\192\002\000\011\188\002\000\011\192\003\000\011\188\003\000\011\192\004\000\011\192\005\000\005\132\001\000\005\176\001\000\005\172\001\000\005\164\001\000\005\132\002\000\005\136\001\000\005\232\001\000\005\228\001\000\005\216\001\000\005\136\002\000\005\136\003\000\005\176\001\000\005\172\001\000\005\164\001\000\005\136\004\000\011\192\006\000\011\192\007\000\004\\\001\000\004\\\002\000\004\\\003\000\004\\\004\000\004\\\005\000\004\\\006\000\005\140\001\000\005\140\002\000\011\192\b\000\011\188\004\000\011\188\005\000\011\188\006\000\003\140\001\000\003\140\002\000\003\004\001\000\003\004\002\000\011\212\001\000\011\212\002\000\011\212\003\000\011\212\004\000\005\176\001\000\005\172\001\000\005\164\001\000\011\212\005\000\b\020\001\000\b\020\002\000\b\020\003\000\b\020\004\000\b\020\005\000\b\152\001\000\b\004\001\000\b\152\002\000\b\152\003\000\b\004\002\000\b\004\003\000\001\216\001\000\b\020\006\000\b\020\007\000\006(\001\000\006$\001\000\006(\002\000\b\020\b\000\b\020\t\000\b\000\001\000\001\216\001\000\011|\001\000\t8\001\000\011|\002\000\t8\002\000\011|\003\000\t8\003\000\001\160\001\000\001\164\001\000\001\148\001\000\001\164\002\000\001\164\003\000\001\144\001\000\011|\004\000\t8\004\000\003H\001\000\001\200\001\000\006\000\001\000\003\152\001\000\003\148\001\000\003\152\002\000\003\148\002\000\003\152\003\000\003\148\003\000\b\152\001\000\b\012\001\000\b\012\002\000\b\012\003\000\000H\001\000\003\152\004\000\003\148\004\000\003\152\005\000\003\148\005\000\003\152\006\000\003\152\007\000\b\b\001\000\000H\001\000\001\200\002\000\001\200\003\000\003\164\001\000\003\160\001\000\003\164\002\000\003\156\001\000\b\212\001\000\001\196\001\000\b\212\002\000\001\196\002\000\b\212\003\000\001\196\003\000\000\128\001\000\000l\001\000\003H\002\000\b\208\001\000\001\192\001\000\000\128\001\000\000l\001\000\011|\005\000\001\180\001\000\001\148\001\000\005l\001\000\001\176\001\000\001\172\001\000\005l\002\000\001\176\002\000\001\176\003\000\011|\006\000\011|\007\000\011|\b\000\003X\001\000\003T\001\000\003P\001\000\003L\001\000\b\152\001\000\003X\002\000\003P\002\000\003X\003\000\003P\003\000\003P\004\000\003P\005\000\003P\006\000\000\128\001\000\000l\001\000\b\208\001\000\003X\004\000\001\192\001\000\000\128\001\000\000l\001\000\003L\002\000\003L\003\000\003L\004\000\000\128\001\000\000l\001\000\b\208\001\000\003T\002\000\001\192\001\000\000\128\001\000\000l\001\000\t8\005\000\t8\006\000\t8\007\000\001\168\001\000\007\244\001\000\007\240\001\000\t\\\001\000\tX\001\000\003p\001\000\003l\001\000\003h\001\000\003d\001\000\t\\\002\000\tX\002\000\003p\002\000\003l\002\000\003h\002\000\003d\002\000\t\\\003\000\tX\003\000\003p\003\000\003l\003\000\003h\003\000\003d\003\000\t\\\004\000\003p\004\000\003h\004\000\t\\\005\000\003p\005\000\003h\005\000\0050\001\000\003p\006\000\003h\006\000\003h\007\000\001\144\001\000\000\144\001\000\000\140\001\000\000\136\001\000\006T\001\000\006T\002\000\006T\003\000\006D\001\000\003\\\001\000\001\204\001\000\003\\\002\000\003\\\003\000\003\\\004\000\bL\001\000\001\208\001\000\003\\\001\000\bL\002\000\003h\b\000\bx\001\000\003h\t\000\003h\n\000\bD\001\000\bH\001\000\006`\001\000\006\\\001\000\006P\001\000\006L\001\000\006@\001\000\006<\001\000\006,\001\000\001\216\001\000\006`\002\000\006\\\002\000\006P\002\000\006L\002\000\006@\002\000\006<\002\000\006`\003\000\006P\003\000\006@\003\000\006`\004\000\006`\005\000\006`\006\000\006P\004\000\006@\004\000\003`\001\000\003`\002\000\003`\003\000\006\\\003\000\006\\\004\000\006\\\005\000\006L\003\000\006<\003\000\0064\001\000\003p\007\000\bx\001\000\003p\b\000\003p\t\000\t\\\006\000\t\\\007\000\b\028\001\000\t\\\b\000\t\\\t\000\bp\001\000\t\\\n\000\bp\002\000\bh\001\000\bl\001\000\tX\004\000\003l\004\000\003d\004\000\0050\001\000\003l\005\000\003d\005\000\003d\006\000\003d\007\000\bx\001\000\003d\b\000\003d\t\000\003l\006\000\bx\001\000\003l\007\000\003l\b\000\tX\005\000\tX\006\000\tX\007\000\tX\b\000\bp\001\000\tX\t\000\004\140\001\000\006p\001\000\006l\001\000\006p\002\000\006p\003\000\006p\004\000\006p\005\000\005|\001\000\005<\001\000\006p\006\000\006l\002\000\006l\003\000\006l\004\000\005|\001\000\005<\001\000\006l\005\000\tp\001\000\th\001\000\td\001\000\005\244\001\000\005\240\001\000\005\196\001\000\005\244\002\000\005\240\002\000\005\244\003\000\005\240\003\000\005\244\004\000\005\240\004\000\005\244\005\000\005\240\005\000\005\244\006\000\005\244\007\000\005\232\001\000\005\228\001\000\005\216\001\000\005\244\b\000\tp\002\000\th\002\000\td\002\000\005\196\002\000\tp\003\000\th\003\000\td\003\000\005\196\003\000\005\196\004\000\005\188\001\000\005\196\005\000\005\196\006\000\005|\001\000\005<\001\000\005\196\007\000\tp\004\000\tp\005\000\tp\006\000\tp\007\000\005\232\001\000\005\228\001\000\005\216\001\000\tp\b\000\004d\001\000\004d\002\000\004d\003\000\004d\004\000\005\232\001\000\005\228\001\000\005\216\001\000\004d\005\000\004d\006\000\004d\007\000\tp\t\000\th\004\000\td\004\000\th\005\000\th\006\000\005l\001\000\th\007\000\005\144\001\000\005\232\001\000\005\228\001\000\005\216\001\000\005\144\002\000\td\005\000\td\006\000\005\148\001\000\005\148\002\000\t\128\001\000\t\128\002\000\t\128\003\000\t\128\004\000\005\232\001\000\005\228\001\000\005\216\001\000\t\128\005\000\t8\001\000\t8\002\000\t8\003\000\t8\004\000\t\132\001\000\001x\001\000\001x\002\000\001x\003\000\001x\004\000\012\168\001\000\001x\005\000\003\012\001\000\b\204\001\000\003\012\002\000\003\012\003\000\001x\006\000\001x\007\000\001x\b\000\001D\001\000\001D\002\000\001\024\001\000\001\216\001\000\001\024\002\000\001\024\003\000\001D\003\000\001$\001\000\001$\002\000\006\020\001\000\006\012\001\000\006\020\002\000\006\016\001\000\006\b\001\000\006\016\002\000\001$\003\000\001$\004\000\001$\005\000\001\216\001\000\001$\006\000\001$\007\000\001(\001\000\001(\002\000\b0\001\000\b(\001\000\b0\002\000\b,\001\000\b$\001\000\b,\002\000\001(\003\000\001(\004\000\001(\005\000\001(\006\000\001(\007\000\001 \001\000\001 \002\000\001P\001\000\001L\001\000\001P\002\000\001L\002\000\001P\003\000\001P\004\000\005l\001\000\001P\005\000\001P\006\000\001<\001\000\b\196\001\000\001<\002\000\001<\003\000\001<\004\000\b\196\002\000\b\196\003\000\001\216\001\000\b\192\001\000\001\216\001\000\001@\001\000\0018\001\000\001P\007\000\001H\001\000\001H\002\000\001L\003\000\005l\001\000\001L\004\000\001L\005\000\001L\006\000\001H\001\000\001H\001\000\001 \003\000\001 \004\000\001,\001\000\001,\002\000\001\216\001\000\001\188\001\000\001\188\002\000\001\216\001\000\001\188\003\000\001,\003\000\001,\004\000\001D\004\000\001D\005\000\0010\001\000\0010\002\000\0014\001\000\004\168\001\000\004\168\002\000\001x\t\000\001H\001\000\001x\n\000\004T\001\000\004T\002\000\004T\003\000\004T\004\000\004T\005\000\004T\006\000\004T\007\000\001H\001\000\004T\b\000\004T\t\000\001x\011\000\t\132\002\000\t\132\003\000\t\132\004\000\t\132\005\000\t\132\006\000\t\132\007\000\0050\001\000\001p\001\000\001p\002\000\001p\003\000\001p\004\000\001<\001\000\000\144\001\000\000\140\001\000\000\136\001\000\b\244\001\000\b\192\001\000\001\216\001\000\001t\001\000\001t\002\000\001l\001\000\001l\002\000\001l\003\000\0120\001\000\001|\001\000\001@\001\000\000\164\001\000\001l\004\000\001h\001\000\001H\001\000\001t\003\000\001p\005\000\t\132\b\000\t\132\t\000\004L\001\000\004L\002\000\004L\003\000\004L\004\000\004L\005\000\004L\006\000\004L\007\000\004L\b\000\004L\t\000\t\132\n\000\tH\001\000\004\144\001\000\t`\001\000\tL\001\000\t|\001\000\tx\001\000\tt\001\000\tl\001\000\004\144\002\000\t@\001\000\t@\002\000\tP\001\000\004t\001\000\004t\002\000\004t\003\000\004t\004\000\004t\005\000\bx\001\000\004t\006\000\004t\007\000\004t\b\000\tP\002\000\tT\001\000\004|\001\000\004|\002\000\004|\003\000\004|\004\000\004|\005\000\004|\006\000\bx\001\000\004|\007\000\004|\b\000\004|\t\000\tT\002\000\tD\001\000\t\136\001\000\004\140\002\000\007\240\002\000\t<\001\000\007\244\002\000\001\216\001\000\011\204\001\000\001x\001\000\011\204\002\000\011\204\003\000\011\204\004\000\011\204\005\000\011\204\006\000\000\244\001\000\001d\001\000\001d\002\000\001d\003\000\000\220\001\000\012\156\001\000\012\148\001\000\012\156\002\000\012\148\002\000\012\156\003\000\012\148\003\000\012\156\004\000\012\148\004\000\012\148\005\000\012\148\006\000\012\156\005\000\012\156\006\000\012\156\007\000\000\220\002\000\000\220\003\000\012\152\001\000\012\144\001\000\012\140\001\000\012\180\001\000\012\172\001\000\012\180\002\000\012\176\001\000\006\000\001\000\012\176\002\000\012\140\002\000\012\140\003\000\012\140\004\000\012\140\005\000\001\216\001\000\012\152\002\000\012\144\002\000\012\152\003\000\012\144\003\000\012\144\004\000\012\144\005\000\012\152\004\000\012\152\005\000\012\152\006\000\000\224\001\000\005,\001\000\005$\001\000\005\028\001\000\005,\002\000\005$\002\000\005\028\002\000\005,\003\000\005$\003\000\005\028\003\000\005,\004\000\005$\004\000\005\028\004\000\005,\005\000\005$\005\000\005,\006\000\005,\007\000\005,\b\000\005,\t\000\001\216\001\000\005,\n\000\005,\011\000\005$\006\000\005$\007\000\005$\b\000\005\028\005\000\003\232\001\000\011\132\001\000\003\020\001\000\003\020\002\000\003\020\003\000\003\016\001\000\011\132\002\000\000\224\002\000\000\224\003\000\005(\001\000\005 \001\000\005\024\001\000\005\020\001\000\012\192\001\000\012\184\001\000\012\192\002\000\012\188\001\000\b\028\001\000\012\188\002\000\005\020\002\000\005\020\003\000\005\020\004\000\005\020\005\000\005(\002\000\005 \002\000\005\024\002\000\005(\003\000\005 \003\000\005\024\003\000\005(\004\000\005 \004\000\005(\005\000\005(\006\000\005(\007\000\005(\b\000\001\216\001\000\005(\t\000\005(\n\000\005 \005\000\005 \006\000\005 \007\000\005\024\004\000\000\232\001\000\000\232\002\000\000\232\003\000\000\232\004\000\000\216\001\000\000\212\001\000\000\216\002\000\000\216\003\000\001`\001\000\001T\001\000\004\024\001\000\004\020\001\000\000\196\001\000\000\192\001\000\004\024\002\000\004\024\003\000\004\024\004\000\004\024\005\000\004\024\006\000\004\024\007\000\000\196\002\000\000\192\002\000\000\196\003\000\000\196\004\000\005l\001\000\000\196\005\000\000\196\006\000\001\\\001\000\b\196\001\000\001\\\002\000\001\\\003\000\001\\\004\000\000\184\001\000\000\184\002\000\001\004\001\000\001\000\001\000\001\000\002\000\004\028\001\000\000\188\001\000\000\188\002\000\000\208\001\000\000\204\001\000\000\180\001\000\003\184\001\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\003\184\002\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\003\180\001\000\b\136\001\000\000\204\002\000\b\136\002\000\b\132\001\000\001X\001\000\000\200\001\000\000\188\003\000\000\200\002\000\004\028\002\000\001\000\003\000\000\200\001\000\001\004\002\000\000\184\003\000\000\200\001\000\000\196\007\000\000\192\003\000\005l\001\000\000\192\004\000\000\192\005\000\000\200\001\000\000\192\006\000\004\020\002\000\004\020\003\000\004\020\004\000\004\020\005\000\001`\002\000\001T\002\000\000\200\001\000\001T\003\000\001`\003\000\001`\004\000\001`\005\000\000\216\004\000\000\200\001\000\007\012\001\000\007\012\002\000\000\216\005\000\000\216\006\000\000\212\002\000\000\212\003\000\000\200\001\000\000\212\004\000\000\212\005\000\000\228\001\000\000\228\002\000\000\228\003\000\000\228\004\000\001d\004\000\001d\005\000\000\236\001\000\000\236\002\000\000\240\001\000\004\176\001\000\004\176\002\000\000\244\002\000\000\200\001\000\000\248\001\000\000\248\002\000\000\248\003\000\000\248\004\000\000\200\001\000\000\252\001\000\000\252\002\000\011\204\007\000\011\204\b\000\004D\001\000\004D\002\000\004D\003\000\004D\004\000\004D\005\000\004D\006\000\004D\007\000\004D\b\000\011\204\t\000\011\168\001\000\004\160\001\000\004\012\001\000\004\012\002\000\004\012\003\000\004\012\004\000\004\012\005\000\004\012\006\000\011\184\001\000\011x\001\000\011\164\001\000\011\200\001\000\011\196\001\000\011\148\001\000\004\232\001\000\004\232\002\000\004\160\002\000\011\152\001\000\004\016\001\000\004\016\002\000\011\156\001\000\011\156\002\000\011\172\001\000\011\172\002\000\011\160\001\000\011\208\001\000\007\236\001\000\011\144\001\000\011\144\002\000\011\144\003\000\003\004\003\000\003\004\004\000\011\148\001\000\004\232\001\000\001\228\001\000\011\140\001\000\011\152\001\000\004\016\001\000\002\176\001\000\003\140\003\000\003\140\004\000\b\016\003\000\b\016\004\000\000L\004\000\b\228\001\000\b\224\003\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\007\224\001\000\007\216\001\000\007\208\001\000\007\204\001\000\007\180\001\000\0044\001\000\0044\002\000\0044\003\000\004<\001\000\002\180\002\000\002\180\003\000\002\180\004\000\004<\002\000\004<\003\000\0048\001\000\n\016\001\000\006\156\001\000\n \004\000\n \005\000\nP\003\000\nL\003\000\nP\004\000\nL\004\000\nL\005\000\t\000\001\000\b\252\001\000\b\248\001\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\000\002\000\b\252\002\000\t\000\003\000\n\\\003\000\nX\003\000\n\\\004\000\nX\004\000\nX\005\000\n$\003\000\n$\004\000\n$\005\000\n@\003\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\b@\001\000\b@\002\000\b@\003\000\t$\001\000\t \001\000\t\028\001\000\007<\001\000\t$\002\000\t \002\000\t\028\002\000\t$\003\000\t \003\000\t\028\003\000\t$\004\000\t \004\000\t$\005\000\b<\001\000\n@\004\000\n@\005\000\n`\001\000\n\\\001\000\nX\001\000\nP\001\000\nL\001\000\n@\001\000\n8\001\000\n$\001\000\n \001\000\005t\001\000\005l\001\000\005d\001\000\001\176\001\000\001\172\001\000\n`\002\000\n\\\002\000\nX\002\000\nP\002\000\nL\002\000\n@\002\000\n8\002\000\n$\002\000\n \002\000\005t\002\000\005l\002\000\005d\002\000\001\176\002\000\012\128\001\000\005d\003\000\005t\003\000\t\220\002\000\t\212\002\000\t\204\002\000\002\224\002\000\002\216\002\000\002\208\002\000\t\204\003\000\002\208\003\000\t\204\004\000\002\208\004\000\t\204\005\000\002\208\005\000\002\208\006\000\b\228\001\000\002\232\001\000\002\208\007\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\220\003\000\002\224\003\000\t\220\004\000\002\224\004\000\t\220\005\000\002\224\005\000\002\224\006\000\b\228\001\000\002\232\001\000\002\224\007\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\212\003\000\002\216\003\000\t\212\004\000\002\216\004\000\t\212\005\000\002\216\005\000\002\216\006\000\b\228\001\000\002\232\001\000\002\216\007\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\n\028\002\000\t\224\002\000\t\216\002\000\t\208\002\000\t\200\002\000\t\196\002\000\t\192\002\000\002\228\002\000\002\220\002\000\002\212\002\000\002\204\002\000\002\200\002\000\002\196\002\000\002\192\002\000\t\192\003\000\002\196\003\000\t\192\004\000\002\196\004\000\t\192\005\000\002\196\005\000\002\196\006\000\b\228\001\000\002\232\001\000\002\196\007\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\200\003\000\002\204\003\000\t\200\004\000\002\204\004\000\t\200\005\000\002\204\005\000\002\204\006\000\b\228\001\000\002\232\001\000\002\204\007\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\196\003\000\002\200\003\000\t\196\004\000\002\200\004\000\t\196\005\000\002\200\005\000\002\200\006\000\b\228\001\000\002\232\001\000\002\200\007\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\224\003\000\t\216\003\000\t\208\003\000\005l\001\000\005d\001\000\002\228\003\000\002\220\003\000\002\212\003\000\t\224\004\000\t\216\004\000\t\208\004\000\002\228\004\000\002\220\004\000\002\212\004\000\t\208\005\000\002\212\005\000\t\208\006\000\002\212\006\000\t\208\007\000\002\212\007\000\002\212\b\000\b\228\001\000\002\232\001\000\002\212\t\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\224\005\000\002\228\005\000\t\224\006\000\002\228\006\000\t\224\007\000\002\228\007\000\002\228\b\000\b\228\001\000\002\232\001\000\002\228\t\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\216\005\000\002\220\005\000\t\216\006\000\002\220\006\000\t\216\007\000\002\220\007\000\002\220\b\000\b\228\001\000\002\232\001\000\002\220\t\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\n\028\003\000\002\192\003\000\002\192\004\000\b\228\001\000\002\232\001\000\002\192\005\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\b\136\001\000\002H\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\168\002\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\192\004\000\t\192\005\000\t\200\003\000\t\200\004\000\t\200\005\000\t\196\003\000\t\196\004\000\t\196\005\000\t\224\003\000\t\216\003\000\t\208\003\000\005l\001\000\005d\001\000\t\224\004\000\t\216\004\000\t\208\004\000\t\208\005\000\t\208\006\000\t\208\007\000\t\224\005\000\t\224\006\000\t\224\007\000\t\216\005\000\t\216\006\000\t\216\007\000\n\028\003\000\t\204\004\000\t\204\005\000\t\220\003\000\t\220\004\000\t\220\005\000\t\212\003\000\t\212\004\000\t\212\005\000\002<\006\000\001\220\001\000\001\224\001\000\002<\007\000\002<\b\000\002<\t\000\002<\n\000\002<\011\000\002\004\006\000\002\004\007\000\002\004\b\000\002\004\t\000\002\000\005\000\002\000\006\000\002\000\007\000\002\000\b\000\002\000\t\000\002\000\n\000\002\000\011\000\003\024\002\000\012|\001\000\n\164\001\000\nx\001\000\nt\001\000\nl\001\000\003$\001\000\001\180\001\000\001\148\001\000\003$\002\000\003$\003\000\003$\004\000\003\028\001\000\003\028\002\000\000\128\001\000\000l\001\000\003\028\003\000\003\028\004\000\003 \001\000\003 \002\000\003$\005\000\002$\b\000\002 \004\000\002 \005\000\004\240\003\000\004\240\004\000\004\240\005\000\004\244\002\000\004\236\002\000\004\244\003\000\004\236\003\000\b\160\002\000\b\164\001\000\002\028\004\000\b\164\002\000\b\164\003\000\b\156\001\000\0024\004\000\0020\004\000\0024\005\000\0020\005\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\0024\006\000\0020\006\000\0020\007\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\0020\b\000\t\232\004\000\t\228\004\000\t\228\005\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\002D\004\000\t\176\002\000\b\228\001\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\176\003\000\n,\001\000\n(\001\000\n\028\001\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\t\180\002\000\n<\002\000\n<\003\000\b\228\001\000\007\028\002\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\t\012\002\000\t\b\002\000\t\004\002\000\t\012\003\000\t\b\003\000\t\012\004\000\n\024\002\000\n\020\002\000\n\020\003\000\nT\002\000\nT\003\000\002\024\b\000\002\020\003\000\002\020\004\000\005\176\001\000\005\172\001\000\005\164\001\000\002\020\005\000\002\020\006\000\002\020\007\000\002\012\002\000\002\012\003\000\002\012\004\000\002\012\005\000\002\012\006\000\002\012\007\000\002\012\b\000\002\016\002\000\002\016\003\000\002\016\004\000\002\016\005\000\002\016\006\000\002\016\007\000\002\016\b\000\002\016\t\000\011\128\002\000\011\136\005\000\004(\002\000\0074\002\000\003\204\004\000\003\204\005\000\003\208\002\000\012 \001\000\012\028\001\000\004\000\002\000\003\252\002\000\004\000\003\000\004\000\004\000\004\000\005\000\004\000\006\000\001\216\001\000\004\000\007\000\004\000\b\000\b\152\001\000\003\252\003\000\003\252\004\000\003\252\005\000\001\216\001\000\003\252\006\000\003\252\007\000\003\248\002\000\003\248\003\000\003\248\004\000\003\244\002\000\004\224\005\000\004\224\006\000\b\228\001\000\002\232\001\000\002\188\003\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\nH\002\000\nD\002\000\nD\003\000\n,\001\000\n(\001\000\n\028\001\000\n\012\002\000\t\224\001\000\t\220\001\000\t\216\001\000\t\212\001\000\t\208\001\000\t\204\001\000\t\200\001\000\t\196\001\000\t\192\001\000\t\244\002\000\t\240\002\000\t\244\003\000\t\240\003\000\t\244\004\000\t\240\004\000\t\244\005\000\t\240\005\000\005\176\001\000\005\172\001\000\005\164\001\000\t\240\006\000\t\244\006\000\t\244\007\000\005\232\001\000\005\228\001\000\005\216\001\000\t\244\b\000\t\188\002\000\t\184\002\000\t\184\003\000\t\188\003\000\t\188\004\000\002(\004\000\002(\005\000\b\164\001\000\002(\006\000\001\232\004\000\001\232\005\000\b\164\001\000\001\232\006\000\b\228\001\000\007\\\004\000\007X\004\000\007T\004\000\007P\004\000\002\232\001\000\002\184\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\144\001\000\002\140\001\000\002\136\001\000\002\132\001\000\002\128\001\000\002|\001\000\002x\001\000\002t\001\000\002p\001\000\002l\001\000\002h\001\000\002d\001\000\002`\001\000\002\\\001\000\002X\001\000\007P\005\000\007\\\005\000\007\\\006\000\005\232\001\000\005\228\001\000\005\216\001\000\007\\\007\000\007X\005\000\007T\005\000\007X\006\000\007T\006\000\005\232\001\000\005\228\001\000\005\216\001\000\007T\007\000\007X\007\000\007X\b\000\005\232\001\000\005\228\001\000\005\216\001\000\007X\t\000\006h\005\000\005\176\001\000\005\172\001\000\005\164\001\000\006h\006\000\006d\002\000\006d\003\000\006d\004\000\005\176\001\000\005\172\001\000\005\164\001\000\006d\005\000\004\156\002\000\004\156\003\000\004\156\004\000\004\152\002\000\002\244\003\000\002\244\004\000\005\b\003\000\005\000\003\000\004\248\003\000\005\b\004\000\005\000\004\000\004\248\004\000\005\000\005\000\004\248\005\000\005\000\006\000\004\248\006\000\005\016\001\000\004\248\007\000\005\012\001\000\005\004\001\000\004\252\001\000\000\128\001\000\000l\001\000\005\004\002\000\004\252\002\000\004\252\003\000\000x\002\000\000t\002\000\000t\003\000\0030\003\000\0030\004\000\0030\005\000\b\216\001\000\000\132\002\000\000p\002\000\000\132\003\000\000p\003\000\000\132\004\000\000\132\005\000\000p\004\000\b\216\002\000\b\216\003\000\001\216\001\000\b\220\001\000\001\216\001\000\000X\002\000\000X\003\000\b\220\002\000\b\220\003\000\001\216\001\000\006X\002\000\006X\003\000\006X\004\000\006H\002\000\0060\002\000\001\216\001\000\0068\002\000\012,\002\000\011\180\006\000\011\180\007\000\011\180\b\000\003\\\001\000\002\252\001\000\003\\\002\000\002\252\002\000\002\252\003\000\002\252\004\000\002\252\005\000\011\180\t\000\bd\001\000\b`\001\000\011\180\n\000\b`\002\000\bd\002\000\bP\001\000\bX\001\000\bT\001\000\b\\\001\000\003`\001\000\003\000\001\000\003\000\002\000\003\000\003\000\003\000\004\000\011\176\004\000\003l\004\000\0050\001\000\003l\005\000\011\176\005\000\011\176\006\000\011\176\007\000\011\176\b\000\bd\001\000\b`\001\000\011\176\t\000\005\152\003\000\005\152\004\000\005\208\005\000\005\176\001\000\005\172\001\000\005\164\001\000\005\232\001\000\005\228\001\000\005\216\001\000\000\\\005\000\000\\\006\000\012\160\006\000\012\160\007\000\005\200\003\000\005\200\004\000\nx\007\000\005\232\001\000\005\228\001\000\005\216\001\000\nx\b\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\001\016\002\000\001\012\002\000\001\012\003\000\001\016\003\000\001\216\001\000\001\016\004\000\001\016\005\000\t\248\004\000\t\248\005\000\t\248\006\000\002,\004\000\002,\005\000\b\164\001\000\002,\006\000\001\248\004\000\001\244\004\000\001\240\004\000\001\236\004\000\001\248\005\000\001\240\005\000\b\164\001\000\001\248\006\000\001\240\006\000\001\248\007\000\001\248\b\000\001\244\005\000\001\244\006\000\0028\004\000\0028\005\000\0028\006\000\0028\007\000\000\176\003\000\000\176\004\000\001\252\003\000\001\252\004\000\001\252\005\000\001\252\006\000\001\252\007\000\003|\001\000\003|\002\000\000\000\001\000\000\004\000\000\003\136\001\000\003\136\002\000\000\004\001\000\000\b\000\000\012|\001\000\005D\001\000\001\148\001\000\005D\002\000\005D\003\000\005H\001\000\000\b\001\000\005|\001\000\005T\001\000\005P\001\000\005L\001\000\005<\001\000\005T\002\000\005P\002\000\005L\002\000\005<\002\000\012|\001\000\005P\003\000\005P\004\000\005P\005\000\005T\003\000\005L\003\000\000P\001\000\005@\001\000\000T\001\000\007`\001\000\007`\002\000\000\012\000\000\000\012\001\000\007d\001\000\007d\002\000\000\016\000\000\000\016\001\000\007h\001\000\001\216\001\000\007h\002\000\000\020\000\000\007l\001\000\007l\002\000\000\020\001\000\000\024\000\000\000\024\001\000\007p\001\000\005|\001\000\005<\001\000\007p\002\000\000\028\000\000\000\028\001\000\007t\001\000\005l\001\000\007t\002\000\000 \000\000\000 \001\000\007x\001\000\005\176\001\000\005\172\001\000\005\164\001\000\007x\002\000\000$\000\000\000$\001\000\007|\001\000\005\232\001\000\005\228\001\000\005\216\001\000\007|\002\000\000(\000\000\000(\001\000\007\128\001\000\007\128\002\000\000,\000\000\007\172\001\000\007\160\001\000\007\152\001\000\007\144\001\000\007\140\001\000\007\132\001\000\007\132\002\000\000,\001\000\0000\000\000\007\136\001\000\007\136\002\000\0000\001\000\005t\001\000\005l\001\000\005t\002\000\005l\002\000\0004\000\000\012\000\001\000\011\252\001\000\011\248\001\000\011\244\001\000\011\240\001\000\011\236\001\000\011\232\001\000\012\000\002\000\011\252\002\000\011\248\002\000\011\244\002\000\011\240\002\000\011\236\002\000\011\232\002\000\012\000\003\000\011\236\003\000\011\240\003\000\011\252\003\000\011\244\003\000\011\248\003\000\005t\001\000\005l\001\000\012\016\001\000\0004\001\000\012\012\001\000\012\012\002\000\004\184\001\000\004\184\002\000\012\004\001\000\012\004\002\000\012\004\003\000\012\b\001\000\012\b\002\000\0008\000\000\004\196\001\000\004\192\001\000\004\204\001\000\004\200\001\000\004\200\002\000\004\204\002\000\004\196\002\000\004\196\003\000\004\196\004\000\004\192\002\000\0008\001\000\012x\001\000\012x\002\000\012x\003\000\012x\004\000\012t\001\000\012t\002"), (16, "\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\b\000\t\000\n\000\011\000\012\000\r\000\014\000\015\000\016\000\017\000\018\000\019\000\020\000\021\000\022\000\023\000\024\000\025\000\026\000\027\000\028\000\029\000\030\000\031\000 \000!\000\"\000#\000$\000%\000&\000'\000(\000)\000*\000+\000,\000-\000.\000/\0000\0001\0002\0003\0004\0005\0006\0008\0009\000:\000;\000<\000=\000>\000?\000@\000A\000B\000C\000G\000K\000O\000P\000Q\000R\000S\000T\000U\000V\000W\000X\000Y\000[\000\\\000^\000_\000`\000b\000c\000d\000k\000l\000m\000n\000o\000p\000s\000t\000u\000w\000y\000{\000|\000}\000\127\000\128\000\129\000\131\000\132\000\133\000\134\000\135\000\136\000\137\000\138\000\139\000\140\000\141\000\142\000\143\000\144\000\145\000\146\000\147\000\148\000\149\000\150\000\156\000\158\000\159\000\160\000\162\000\164\000\165\000\167\000\169\000\171\000\172\000\174\000\176\000\178\000\179\000\180\000\181\000\182\000\183\000\184\000\185\000\186\000\187\000\188\000\189\000\190\000\191\000\192\000\194\000\195\000\196\000\198\000\199\000\200\000\201\000\202\000\206\000\207\000\208\000\209\000\210\000\211\000\212\000\213\000\214\000\215\000\216\000\217\000\218\000\222\000\226\000\230\000\231\000\233\000\234\000\236\000\238\000\239\000\240\000\241\000\244\000\245\000\246\000\247\000\248\000\249\000\250\000\251\000\252\000\254\000\255\001\000\001\001\001\003\001\005\001\006\001\b\001\012\001\018\001\020\001\021\001\022\001\024\001\028\001\031\001 \001!\001#\001$\001%\001&\001(\001)\001*\001+\0011\0015\0019\001:\001;\001<\001=\001?\001A\001B\001C\001D\001E\001F\001G\001H\001I\001J\001K\001L\001M\001N\001O\001P\001W\001Y\001[\001]\001^\001_\001`\001a\001b\001c\001e\001g\001h\001i\001j\001k\001l\001p\001q\001s\001t\001v\001x\001y\001z\001}\001~\001\129\001\130\001\133\001\134\001\135\001\136\001\137\001\139\001\140\001\141\001\142\001\143\001\144\001\145\001\146\001\148\001\149\001\151\001\152\001\153\001\154\001\157\001\158\001\159\001\160\001\161\001\162\001\163\001\164\001\168\001\169\001\172\001\173\001\174\001\175\001\177\001\178\001\179\001\180\001\182\001\183\001\184\001\185\001\187\001\188\001\189\001\191\001\192\001\193\001\194\001\195\001\197\001\198\001\200\001\201\001\203\001\205\001\206\001\207\001\208\001\210\001\211\001\213\001\214\001\217\001\218\001\219\001\221\001\222\001\223\001\224\001\226\001\230\001\231\001\232\001\233\001\234\001\235\001\236\001\237\001\238\001\239\001\240\001\241\001\242\001\243\001\244\001\245\001\247\001\248\001\249\001\250\001\251\002\002\002\b\002\011\002\012\002\r\002\014\002\015\002\016\002\017\002\019\002\020\002\026\002\027\002!\002\"\002(\002)\002/\0020\0021\0022\0024\002:\002;\002>\002F\002G\002I\002J\002K\002L\002M\002N\002O\002R\002S\002T\002[\002\\\002]\002_\002`\002f\002l\002m\002n\002t\002u\002w\002x\002y\002z\002\130\002\132\002\133\002\134\002\140\002\144\002\147\002\148\002\149\002\150\002\151\002\152\002\153\002\154\002\160\002\162\002\163\002\165\002\166\002\168\002\169\002\170\002\171\002\173\002\174\002\175\002\176\002\177\002\180\002\182\002\183\002\184\002\191\002\192\002\194\002\195\002\196\002\197\002\198\002\199\002\207\002\208\002\209\002\210\002\211\002\212\002\213\002\218\002\220\002\221\002\222\002\223\002\224\002\225\002\227\002\228\002\229\002\230\002\232\002\233\002\234\002\235\002\236\002\238\002\239\002\240\002\241\002\242\002\246\002\247\002\249\002\251\002\253\002\255\003\000\003\001\003\003\003\004\003\006\003\b\003\t\003\011\003\012\003\014\003\015\003\019\003\021\003\023\003\024\003\028\003\029\003!\003\"\003%\003'\003)\003*\003+\003,\003-\003.\0032\0035\0036\0039\003:\003;\003>\003?\003A\003B\003C\003D\003H\003L\003M\003Q\003R\003S\003T\003U\003Y\003`\003a\003f\003g\003h\003l\003m\003n\003o\003q\003r\003v\003w\003y\003{\003~\003\127\003\128\003\130\003\131\003\132\003\133\003\134\003\135\003\137\003\139\003\141\003\143\003\145\003\147\003\148\003\149\003\150\003\151\003\159\003\160\003\162\003\164\003\166\003\174\003\175\003\176\003\177\003\178\003\180\003\182\003\184\003\191\003\192\003\193\003\194\003\195\003\201\003\202\003\203\003\204\003\205\003\218\003\219\003\232\003\233\003\234\003\237\003\238\003\239\003\240\003\241\003\254\004\005\004\006\004\007\004\031\004!\004\"\004#\004$\004&\004(\004+\004,\004.\004/\0040\0041\0042\0043\0044\004A\004B\004O\004[\004`\004a\004c\004e\004f\004g\004h\004l\004m\004q\004r\004t\004v\004x\004z\004{\004}\004~\004\127\004\129\004\130\004\132\004\145\004\146\004\147\004\148\004\149\004\151\004\152\004\153\004\154\004\156\004\157\004\158\004\185\004\186\004\210\004\211\004\235\004\236\005\004\005\005\005\029\005\030\0056\0057\005O\005P\005h\005i\005\129\005\130\005\154\005\155\005\179\005\180\005\204\005\205\005\229\005\230\005\254\005\255\006\023\006\024\0060\0061\006I\006J\006b\006c\006{\006|\006\148\006\149\006\173\006\174\006\198\006\199\006\223\006\224\006\226\006\239\006\240\007\b\007\011\007\012\007\r\007\014\007\015\007\016\007\017\007\019\007\020\007\022\007\023\007\024\007\030\007\031\007 \007!\007'\007(\007.\007/\0075\0076\0077\0078\0079\007;\007<\007B\007C\007D\007E\007F\007H\007O\007P\007Q\007T\007U\007V\007W\007X\007Y\007]\007^\007_\007`\007a\007c\007e\007f\007g\007h\007l\007m\007q\007r\007v\007w\007x\007y\007z\007{\007|\007}\007~\007\127\007\128\007\129\007\130\007\131\007\132\007\133\007\134\007\135\007\136\007\137\007\138\007\139\007\143\007\144\007\145\007\146\007\147\007\148\007\149\007\151\007\152\007\153\007\154\007\156\007\157\007\158\007\160\007\161\007\162\007\163\007\165\007\167\007\169\007\171\007\172\007\174\007\175\007\176\007\177\007\179\007\180\007\181\007\182\007\184\007\186\007\188\007\190\007\191\007\193\007\195\007\197\007\198\007\199\007\201\007\202\007\203\007\205\007\206\007\207\007\209\007\211\007\215\007\216\007\220\007\221\007\223\007\226\007\228\007\229\007\230\007\231\007\232\007\236\007\239\007\241\007\242\007\243\007\246\007\251\007\252\007\253\b\000\b\005\b\006\b\007\b\b\b\t\b\011\b\017\b\023\b\029\b \b#\b&\b'\b+\b,\b-\b.\b/\b1\b2\b3\b4\b6\b7\b8\b9\b;\b<\b=\b>\bF\bL\bO\bP\bQ\bR\bS\bT\bU\bV\bW\bX\bY\bZ\b[\b\\\b]\b^\b`\ba\bb\bc\bd\be\bg\bh\bi\bj\bk\bn\bq\br\bs\bu\bv\bw\by\bz\b{\b|\b}\b\127\b\128\b\129\b\131\b\132\b\133\b\134\b\137\b\138\b\139\b\140\b\143\b\144\b\150\b\152\b\154\b\156\b\158\b\159\b\163\b\164\b\168\b\172\b\174\b\175\b\178\b\179\b\180\b\181\b\182\b\186\b\187\b\188\b\189\b\190\b\191\b\195\b\196\b\197\b\198\b\200\b\201\b\203\b\204\b\205\b\209\b\210\b\211\b\212\b\213\b\214\b\215\b\216\b\220\b\221\b\222\b\223\b\224\b\225\b\227\b\228\b\229\b\230\b\231\b\232\b\233\b\235\b\236\b\237\b\238\b\239\b\240\b\241\b\242\b\244\b\245\b\246\b\247\b\248\b\250\b\251\b\253\b\254\b\255\t\000\t\001\t\003\t\004\t\005\t\006\t\b\t\t\t\011\t\012\t\r\t\014\t\015\t\016\t\017\t\018\t\019\t\021\t\023\t\024\t\025\t\027\t\028\t\029\t\031\t \t!\t\"\t$\t&\t'\t(\t*\t+\t,\t.\t/\t1\t3\t4\t5\t6\t8\t9\t;\t<\t=\t>\t?\t@\tA\tB\tC\tD\tF\tG\tH\tI\tJ\tK\tL\tM\tO\tP\tQ\tR\tS\tT\tU\tV\tW\tX\tZ\t[\t\\\t]\ta\td\te\tf\tg\th\ti\tk\tm\tn\tp\tq\tr\ts\tt\tu\tv\tw\tx\ty\tz\t{\t|\t}\t~\t\127\t\128\t\129\t\130\t\131\t\132\t\133\t\134\t\135\t\136\t\137\t\138\t\139\t\140\t\141\t\142\t\143\t\145\t\146\t\147\t\148\t\149\t\150\t\151\t\152\t\153\t\154\t\155\t\157\t\158\t\159\t\160\t\161\t\162\t\163\t\164\t\165\t\167\t\169\t\170\t\171\t\172\t\173\t\174\t\175\t\176\t\177\t\178\t\179\t\181\t\183\t\185\t\187\t\188\t\189\t\190\t\191\t\192\t\193\t\194\t\197\t\199\t\200\t\202\t\203\t\204\t\205\t\206\t\208\t\210\t\212\t\213\t\214\t\215\t\216\t\217\t\218\t\221\t\224\t\227\t\230\t\232\t\233\t\234\t\235\t\237\t\238\t\239\t\240\t\241\t\242\t\243\t\244\t\245\t\246\t\247\t\248\t\249\t\250\t\251\t\252\n\000\n\002\n\003\n\005\n\006\n\007\n\b\n\t\n\n\n\r\n\016\n\018\n\019\n\020\n\021\n\023\n\024\n\025\n\026\n\027\n\028\n\029\n\030\n\031\n \n!\n#\n$\n%\n'\n+\n,\n-\n.\n/\n0\n1\n3\n4\n5\n7\n8\n9\n;\n<\n=\n>\n?\nA\nB\nD\nE\nF\nH\nI\nV\nc\ne\nf\ng\nh\nj\nk\nl\nn\no\np\nr\ns\nu\nv\nx\ny\nz\n{\n|\n\127\n\128\n\129\n\130\n\131\n\133\n\134\n\135\n\136\n\137\n\138\n\140\n\141\n\142\n\143\n\144\n\145\n\146\n\147\n\148\n\149\n\150\n\151\n\152\n\153\n\155\n\156\n\157\n\158\n\160\n\161\n\162\n\163\n\164\n\165\n\166\n\167\n\168\n\169\n\170\n\171\n\172\n\173\n\174\n\175\n\176\n\177\n\178\n\179\n\180\n\181\n\182\n\183\n\184\n\185\n\186\n\188\n\189\n\190\n\192\n\193\n\194\n\195\n\196\n\197\n\198\n\199\n\200\n\201\n\202\n\203\n\204\n\205\n\208\n\209\n\212\n\213\n\214\n\215\n\216\n\217\n\241\n\247\n\248\n\249\n\251\n\252\n\253\n\254\n\255\011\000\011\002\011\003\011\004\011\006\011\007\011\b\011\t\011#\011%\011&\011(\011)\011*\011+\011,\011-\011.\011/\011<\011=\011>\011A\011B\011E\011H\011J\011K\011L\011M\011N\011\\\011i\011k\011l\011r\011t\011v\011x\011y\011\145\011\147\011\149\011\151\011\152\011\176\011\178\011\180\011\182\011\183\011\207\011\221\011\223\011\225\011\227\011\228\011\252\011\254\012\000\012\002\012\003\012\027\012\029\012\031\012!\012\"\012:\012B\012H\012J\012L\012N\012O\012g\012i\012k\012m\012n\012\134\012\136\012\138\012\140\012\141\012\165\012\167\012\168\012\192\012\194\012\218\012\219\012\220\012\221\012\222\012\223\012\224\012\225\012\226\012\231\012\234\012\235\012\236\012\237\012\238\012\239\012\240\012\241\012\242\012\243\012\244\012\245\012\246\012\247\012\248\012\249\012\250\012\251\012\252\012\253\012\254\012\255\r\000\r\001\r\002\r\003\r\004\r\005\r\006\r\007\r\b\r\t\r\n\r\011\r\012\r\r\r\014\r\015\r\016\r\024\r\025\r\026\r\027\r\028\r\031\r \r!\r\"\r#\r$\r%\r&\r'\r(\r)\r*\r,\r-\r.\r/\r1\r2\r3\r4\r6\r8\rQ\rR\rj\rk\rl\rm\rz\r\146\r\147\r\160\r\161\r\162\r\186\r\189\r\191\r\192\r\193\r\194\r\195\r\196\r\197\r\198\r\199\r\200\r\204\r\205\r\206\r\207\r\208\r\209\r\210\r\211\r\212\r\213\r\214\r\215\r\216\r\217\r\218\r\219\r\220\r\221\r\222\r\223\r\224\r\225\r\226\r\227\r\228\r\232\r\233\r\234\r\235\r\237\r\238\r\239\r\241\r\242\r\244\r\245\r\246\r\247\r\248\r\249\r\250\r\251\r\252\014\020\014\021\014\022\014\023\014$\014&\014(\014*\014/\0140\0141\0145\0146\0148\0149\014:\014;\014<\014=\014?\014@\014A\014C\014^\014_\014`\014d\014e\014g\014l\014m\014n\014r\014s\014w\014x\014y\014z\014~\014\127\014\128\014\129\014\130\014\131\014\132\014\133\014\136\014\139\014\141\014\143\014\144\014\145\014\150\014\152\014\153\014\154\014\155\014\156\014\157\014\158\014\159\014\162\014\164\014\165\014\166\014\167\014\168\014\170\014\173\014\174\014\175\014\177\014\178\014\179\014\180\014\181\014\183\014\184\014\185\014\186\014\187\014\188\014\190\014\192\014\193\014\194\014\195\014\198\014\199\014\200\014\201\014\202\014\203\014\204\014\205\014\207\014\208\014\209\014\210\014\212\014\214\014\215\014\216\014\217\014\220\014\221\014\222\014\223\014\227\014\231\014\232\014\233\014\234\014\235\014\236\014\240\014\241\014\248\014\249\014\250\014\252\014\253\014\254\014\255\015\000\015\001\015\002\015\004\015\b\015\n\015\r\015\014\015\015\015\016\015\017\015\018\015\019\015\020\015\021\015\022\015\023\015\024\015\025\015\026\015\027\015\028\015\029\015\030\015\031\015 \015!\015\"\015#\015$\015'\015(\015)\015*\015+\0150\0154\0156\0157\0158\0159\015:\015;\015<\015=\015>\015?\015@\015A\015B\015C\015D\015E\015G\015H\015I\015J\015K\015L\015M\015N\015Q\015R\015S\015T\015V\015W\015X\015Y\015]\015^\015_\015`\015d\015e\015f\015g\015h\015i\015j\015p\015q\015r\015s\015t\015u\015v\015x\015z\015{\015\130\015\137\015\138\015\139\015\140\015\141\015\142\015\145\015\146\015\147\015\148\015\149\015\150\015\151\015\152\015\153\015\154\015\155\015\156\015\157\015\159\015\160\015\161\015\162\015\163\015\164\015\165\015\166\015\167\015\168\015\169\015\170\015\171\015\172\015\173\015\174")) + ((32, "\000\000\000\000\000\002\b\001\000\002 \001\000\011\160\001\000\011\156\001\000\011\152\001\000\011\148\001\000\011\144\001\000\n\220\001\000\011\140\001\000\011\136\001\000\011\132\001\000\011\128\001\000\011|\001\000\011x\001\000\011t\001\000\011p\001\000\011l\001\000\011h\001\000\011d\001\000\011`\001\000\011\\\001\000\011X\001\000\011T\001\000\011P\001\000\011L\001\000\011H\001\000\011D\001\000\n\216\001\000\011@\001\000\011<\001\000\0118\001\000\0114\001\000\0110\001\000\011,\001\000\011(\001\000\011$\001\000\011 \001\000\011\028\001\000\011\024\001\000\011\020\001\000\011\016\001\000\011\012\001\000\011\b\001\000\011\004\001\000\011\000\001\000\n\252\001\000\n\248\001\000\n\244\001\000\n\240\001\000\n\236\001\000\n\232\001\000\n\228\001\000\n\224\001\000\000\132\001\000\000\128\001\000\000\132\002\000\000\132\003\000\002 \002\000\002\b\002\000\000\140\001\000\000\140\002\000\002t\001\000\002t\002\000\002t\003\000\n`\001\000\005\132\001\000\002\004\001\000\002\000\001\000\001\252\001\000\001\248\001\000\002\004\002\000\002\000\002\000\001\252\002\000\001\248\002\000\002\004\003\000\002\000\003\000\001\252\003\000\001\248\003\000\002h\001\000\002h\002\000\002h\003\000\001x\001\000\001d\001\000\002(\001\000\n8\001\000\n$\001\000\n$\002\000\n$\003\000\000\236\001\000\000\232\001\000\n\168\001\000\t\200\001\000\t\196\001\000\t\196\002\000\t\200\002\000\t\192\001\000\t\188\001\000\t\188\002\000\t\192\002\000\012\164\001\000\n\208\001\000\n\164\001\000\n\160\001\000\n\152\001\000\001\144\001\000\001p\001\000\006\236\001\000\001p\002\000\006\152\001\000\006\224\001\000\006\220\001\000\t\200\001\000\t\196\001\000\006\216\001\000\006\240\001\000\007\000\001\000\n\164\002\000\n\160\002\000\n\164\003\000\n\160\003\000\n\164\004\000\n\160\004\000\005\220\001\000\005\216\001\000\n\164\005\000\n\160\005\000\n\160\006\000\n\164\006\000\005T\001\000\003\144\001\000\005\228\001\000\005\228\002\000\012\200\001\000\012\200\002\000\012\200\003\000\012\164\001\000\006\216\001\000\006\232\001\000\006\228\001\000\006\156\001\000\006\248\001\000\006\212\001\000\006\208\001\000\006\204\001\000\006\200\001\000\006\196\001\000\006\188\001\000\006\252\001\000\006\244\001\000\006\184\001\000\006\180\001\000\006\176\001\000\006\172\001\000\006\168\001\000\006\164\001\000\006\168\002\000\006\164\002\000\003\160\001\000\003\160\002\000\006\168\003\000\006\164\003\000\006\168\004\000\006\164\004\000\006\168\005\000\006\176\002\000\006\172\002\000\006\176\003\000\006\172\003\000\006\176\004\000\006\172\004\000\006\176\005\000\006\184\002\000\006\180\002\000\006\184\003\000\006\180\003\000\006\184\004\000\006\180\004\000\006\184\005\000\007\016\001\000\007\004\001\000\006\192\001\000\006\160\001\000\007\b\001\000\007\012\001\000\012\164\002\000\012\164\003\000\012\168\001\000\012\200\004\000\012\200\005\000\000|\001\000\005T\001\000\b\200\001\000\000x\001\000\003\144\001\000\003\148\001\000\b\200\002\000\000x\002\000\007p\001\000\007p\002\000\007p\003\000\007l\001\000\001\200\001\000\001\196\001\000\000p\001\000\000d\001\000\000x\001\000\000x\002\000\001\200\002\000\001\200\003\000\001\200\004\000\005\236\001\000\005\236\002\000\005\236\003\000\005\236\004\000\005\212\001\000\005\180\001\000\005\180\002\000\011\220\001\000\011\216\001\000\003\140\001\000\003\136\001\000\011\220\002\000\011\216\002\000\003\140\002\000\003\136\002\000\011\220\003\000\011\216\003\000\003\140\003\000\003\136\003\000\012\152\001\000\012\132\001\000\012x\001\000\012\132\002\000\011\220\004\000\003\140\004\000\012\140\001\000\012|\001\000\012\140\002\000\012h\001\000\012\148\001\000\012\144\001\000\012\136\001\000\012\128\001\000\012\136\002\000\012\144\002\000\012\\\001\000\012p\001\000\012l\001\000\012l\002\000\012\\\002\000\b\252\001\000\012h\002\000\t\000\001\000\012h\003\000\t\000\002\000\t\000\003\000\011\220\005\000\003\140\005\000\005L\001\000\003\140\006\000\012T\001\000\005T\001\000\001|\001\000\006t\001\000\006d\001\000\006T\001\000\006L\001\000\001\200\001\000\001\196\001\000\001\128\001\000\001p\001\000\000p\001\000\000d\001\000\005L\001\000\003L\001\000\003L\002\000\005L\001\000\006\132\001\000\006\128\001\000\005L\001\000\005$\001\000\005\028\001\000\005\020\001\000\005$\002\000\005\028\002\000\005\020\002\000\002$\001\000\002$\002\000\004\184\001\000\004\180\001\000\003\172\001\000\000@\001\000\000<\001\000\006\140\001\000\006\136\001\000\006\140\002\000\006\140\003\000\006\140\004\000\007\136\001\000\007\132\001\000\007\128\001\000\007|\001\000\007x\001\000\007t\001\000\007\136\002\000\007\132\002\000\007\128\002\000\007|\002\000\007\136\003\000\007\132\003\000\007\128\003\000\007|\003\000\n\024\001\000\n\024\002\000\n\024\003\000\005|\001\000\005\136\001\000\005\128\001\000\005\136\002\000\005\128\002\000\005\136\003\000\005\128\003\000\005\156\001\000\000\228\001\000\n\024\004\000\004\136\001\000\004\136\002\000\012\004\001\000\012\000\001\000\001\244\001\000\001\244\002\000\001\244\003\000\002d\001\000\002d\002\000\002d\003\000\012\164\001\000\n \001\000\n\028\001\000\t\232\001\000\t\228\001\000\001\144\001\000\001p\001\000\n8\001\000\006\152\001\000\nt\001\000\np\001\000\012\168\001\000\002\248\001\000\002\248\002\000\004\252\001\000\004\252\002\000\004\252\003\000\bd\001\000\004\252\004\000\t\216\001\000\t\212\001\000\t\208\001\000\001l\001\000\001l\002\000\t\204\001\000\003\204\001\000\t\204\002\000\t\204\003\000\004\248\001\000\004\244\001\000\004\240\001\000\004\236\001\000\007@\001\000\001\228\001\000\001\224\001\000\007 \001\000\001\228\002\000\001\224\002\000\001\220\001\000\001\216\001\000\001\220\002\000\001\216\002\000\001\212\001\000\001\208\001\000\001\204\001\000\000h\001\000\005\152\001\000\005X\001\000\005P\001\000\005\152\002\000\005\152\003\000\005\152\001\000\005X\001\000\005\152\004\000\005X\002\000\005X\003\000\005\148\001\000\005X\002\000\005P\002\000\005P\003\000\001X\001\000\000h\002\000\001\208\002\000\0064\001\000\0064\002\000\000\\\001\000\003P\001\000\003D\001\000\003P\002\000\012@\001\000\t\028\001\000\t\028\002\000\001\184\001\000\005\152\001\000\005X\001\000\005P\001\000\000t\001\000\005X\002\000\005P\002\000\000t\002\000\001\200\001\000\001\196\001\000\003H\001\000\003H\002\000\003H\003\000\012X\001\000\003H\004\000\001\188\001\000\0024\001\000\001\192\001\000\000X\001\000\012<\001\000\t \001\000\000l\001\000\000`\001\000\t \002\000\t \003\000\000l\001\000\000`\001\000\000l\002\000\000l\003\000\000`\002\000\000D\001\000\001\196\002\000\001\180\001\000\001\196\003\000\001\180\002\000\001\176\001\000\000H\001\000\000H\002\000\000H\003\000\000H\004\000\000t\003\000\t\028\003\000\000l\001\000\000`\001\000\003P\003\000\t$\001\000\b\236\001\000\b\240\001\000\001\208\003\000\001\208\004\000\b\240\002\000\b\240\003\000\012\012\001\000\012\b\001\000\012\b\002\000\007\020\001\000\012\b\003\000\012\b\004\000\b\224\001\000\b\224\002\000\b\224\003\000\000H\001\000\012\b\005\000\b\220\001\000\000H\001\000\012\012\002\000\t(\001\000\001\180\001\000\t$\001\000\001\204\002\000\001\204\003\000\001\212\002\000\001\212\003\000\b\240\001\000\001\212\004\000\001\212\005\000\b\240\001\000\001\216\003\000\001\216\004\000\b\240\001\000\001\228\003\000\001\224\003\000\001\224\004\000\001\228\004\000\b\196\001\000\001\228\005\000\001\228\006\000\b\196\002\000\b\192\001\000\007@\002\000\001\180\001\000\004\248\002\000\004\244\002\000\004\240\002\000\004\236\002\000\007X\001\000\007\244\001\000\007\244\002\000\007\244\003\000\001\\\001\000\n\188\001\000\n\188\002\000\001h\001\000\001t\001\000\001`\001\000\n\144\001\000\012\172\001\000\n\148\001\000\007\244\004\000\n\156\001\000\n\176\001\000\n\172\001\000\n\176\002\000\n\176\003\000\t\184\001\000\n\184\001\000\n\204\001\000\n\200\001\000\n\196\001\000\n\192\001\000\005\136\001\000\001\140\001\000\001\136\001\000\n\204\002\000\n\200\002\000\n\196\002\000\n\192\002\000\005\136\002\000\001\140\002\000\n\204\003\000\n\200\003\000\001\140\003\000\n\200\004\000\007\208\001\000\007\208\002\000\007\208\003\000\007\228\001\000\007\192\001\000\007\212\001\000\007\200\001\000\007\212\002\000\007\216\001\000\007\212\003\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\007\216\002\000\007\216\003\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\007\184\002\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\003\000\007\184\001\000\007\204\002\000\007\216\001\000\007\204\003\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\007\196\002\000\007\196\003\000\007\188\002\000\n\184\001\000\007\240\001\000\007\240\002\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\n\212\001\000\n\180\001\000\007\236\001\000\007\232\001\000\012\164\001\000\n\208\001\000\n\164\001\000\n\160\001\000\n\152\001\000\007\236\002\000\001\144\001\000\001p\001\000\007\236\003\000\006<\001\000\0068\001\000\006<\002\000\007\236\004\000\007\236\005\000\007\236\006\000\n\180\001\000\001\148\001\000\t\192\001\000\t\188\001\000\006\228\001\000\001\144\002\000\001\144\003\000\n\208\002\000\n\152\002\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\n\152\003\000\n\208\003\000\n\208\004\000\001\180\001\000\n\208\005\000\007\232\002\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\007\216\001\000\007\208\004\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\001\140\004\000\001\140\005\000\n\204\004\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\n\204\005\000\n\196\003\000\t\208\001\000\n\196\004\000\t\208\002\000\t\208\003\000\tL\001\000\tH\001\000\tD\001\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\tL\002\000\tH\002\000\tL\003\000\n\192\003\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\007X\002\000\004\248\003\000\004\244\003\000\004\240\003\000\004\236\003\000\004\248\004\000\004\244\004\000\004\240\004\000\004\244\005\000\007(\001\000\004\244\006\000\004\248\005\000\t\216\002\000\t\212\002\000\t\212\003\000\n\144\001\000\004\028\001\000\004\024\001\000\004\020\001\000\004\016\001\000\004\012\001\000\003\252\001\000\003\248\001\000\003\248\002\000\003\200\001\000\003\196\001\000\003\200\002\000\003\200\003\000\001\180\001\000\003\248\003\000\003\248\004\000\003\252\002\000\003\236\001\000\003\232\001\000\003\232\002\000\003\232\003\000\007`\001\000\002\240\001\000\n\144\001\000\004H\001\000\004D\001\000\003\244\001\000\003\240\001\000\b\020\001\000\003\240\002\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\004@\001\000\004<\001\000\004@\002\000\004@\003\000\001\180\001\000\003\240\003\000\003\240\004\000\003\240\005\000\b\016\001\000\003\244\002\000\012\164\001\000\n\208\001\000\n\164\001\000\n\160\001\000\n\152\001\000\003(\001\000\001\144\001\000\001p\001\000\003(\002\000\003(\003\000\003(\004\000\004\000\001\000\004\000\002\000\011\172\001\000\004(\001\000\002\\\001\000\002X\001\000\002T\001\000\002P\001\000\002\\\002\000\002X\002\000\002\\\003\000\002\\\004\000\002\\\005\000\005\184\001\000\005\184\002\000\003X\001\000\003T\001\000\003T\002\000\003X\002\000\003X\003\000\005\252\001\000\005\240\001\000\005\252\002\000\005\252\003\000\005\232\001\000\005\232\002\000\b\180\001\000\003\\\001\000\b\180\002\000\005\232\003\000\005\232\004\000\005\248\001\000\006\004\001\000\006\000\001\000\005\244\001\000\005\232\005\000\006\004\002\000\012\240\001\000\012\236\001\000\012\240\002\000\012\236\002\000\012\240\003\000\012\236\003\000\r\b\001\000\r\004\001\000\r\b\002\000\012\240\004\000\012\240\005\000\000H\001\000\012\236\004\000\012\236\005\000\000H\001\000\012\236\006\000\b\164\001\000\b\164\002\000\b\164\003\000\001\180\001\000\b\164\004\000\b\164\005\000\001\180\001\000\012d\001\000\r\000\001\000\012\252\001\000\012\248\001\000\012\244\001\000\r\000\002\000\012\252\002\000\r\000\003\000\012\252\003\000\012\252\004\000\012\252\005\000\006\004\001\000\006\000\001\000\005\244\001\000\006\000\002\000\006\004\001\000\006\000\003\000\006\000\001\000\005\244\001\000\005\244\002\000\005\152\001\000\005x\001\000\005X\001\000\005x\002\000\005X\002\000\005X\003\000\003\144\001\000\005x\003\000\006\020\001\000\005t\001\000\006\b\001\000\r\000\004\000\r\000\005\000\006\004\001\000\006\000\001\000\005\244\001\000\012\248\002\000\012\244\002\000\005\136\001\000\012\244\003\000\012\244\004\000\005\152\001\000\005X\001\000\005\136\002\000\012\248\003\000\012\248\004\000\005\152\001\000\005X\001\000\b\228\001\000\b\232\001\000\006\004\003\000\b\232\002\000\b\232\003\000\b\176\001\000\006\004\001\000\006\000\001\000\005\252\004\000\005\244\001\000\006\004\001\000\006\000\001\000\005\244\001\000\005\240\002\000\005\240\003\000\006\004\001\000\006\000\001\000\005\244\001\000\003X\004\000\003X\005\000\005\184\003\000\005\184\004\000\005\188\001\000\005\204\001\000\005\200\001\000\005\192\001\000\005\184\005\000\007\136\001\000\007\132\001\000\007\128\001\000\007|\001\000\007x\001\000\007t\001\000\005\204\002\000\005\204\003\000\007x\002\000\007t\002\000\005\204\001\000\005\200\001\000\005\192\001\000\007x\003\000\007t\003\000\007t\004\000\006\004\001\000\006\000\001\000\005\244\001\000\007t\005\000\005\200\002\000\005\192\002\000\005\196\001\000\005\136\001\000\005\208\001\000\005\204\001\000\005\200\001\000\005\192\001\000\002\\\006\000\002\\\007\000\n\128\001\000\001l\001\000\nD\001\000\n@\001\000\t@\001\000\t<\001\000\t8\001\000\007H\001\000\nh\001\000\012\168\001\000\005|\001\000\t\224\001\000\t\220\001\000\002\128\001\000\002\128\002\000\002\128\003\000\n\020\001\000\n\016\001\000\n\020\002\000\n\016\002\000\n\020\003\000\n\016\003\000\002p\001\000\002l\001\000\002p\002\000\002l\002\000\002p\003\000\002l\003\000\t`\001\000\002\024\001\000\t`\002\000\002\024\002\000\t`\003\000\002\024\003\000\b\212\001\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\005\016\001\000\005\012\001\000\005\b\001\000\005\012\002\000\002`\001\000\002`\002\000\002`\003\000\004\004\001\000\b\172\001\000\0030\001\000\003,\001\000\b\172\002\000\002`\004\000\0078\001\000\0078\002\000\000l\001\000\000`\001\000\002`\005\000\002`\006\000\002D\001\000\002\024\001\000\002D\002\000\002\024\002\000\002D\003\000\002\024\003\000\b\216\001\000\002D\004\000\002\024\004\000\b\216\002\000\b\216\003\000\b\208\001\000\002\016\001\000\002\012\001\000\002\016\002\000\002\012\002\000\002\016\003\000\002\012\003\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\002\016\004\000\002\012\004\000\002\016\005\000\002x\001\000\002x\002\000\002x\003\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\002x\004\000\002x\005\000\n<\001\000\n(\001\000\005\140\001\000\nX\001\000\nT\001\000\nH\001\000\n<\002\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\nX\002\000\nX\003\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\nT\002\000\nT\003\000\n\b\002\000\n\000\002\000\t\248\002\000\t\248\003\000\002\024\001\000\002\024\002\000\002\024\003\000\b\216\001\000\002\024\004\000\002|\001\000\002|\002\000\002|\003\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\002|\004\000\nH\002\000\n\012\002\000\n\004\002\000\t\252\002\000\t\244\002\000\t\240\002\000\t\236\002\000\t\236\003\000\002\228\001\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\003 \001\000\003\028\001\000\003\024\001\000\003\020\001\000\003\016\001\000\003\012\001\000\003\b\001\000\003\004\001\000\003\000\001\000\002\252\001\000\002\132\001\000\002L\001\000\003\220\001\000\003\216\001\000\003\220\002\000\003\220\003\000\012L\001\000\012L\002\000\001\180\001\000\012H\001\000\012D\001\000\012H\002\000\012D\002\000\001\180\001\000\012H\003\000\012H\004\000\001\180\001\000\003\220\004\000\003\220\005\000\003\216\002\000\003\224\001\000\003\224\002\000\003\228\001\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\003\228\002\000\n4\001\000\n\140\001\000\n\136\001\000\n\132\001\000\n|\001\000\nx\001\000\nl\001\000\nd\001\000\nP\001\000\nL\001\000\005\144\001\000\005\136\001\000\001\140\001\000\001\136\001\000\n\140\002\000\n\136\002\000\n\132\002\000\n|\002\000\nx\002\000\nl\002\000\nd\002\000\nP\002\000\nL\002\000\005\144\002\000\005\136\002\000\001\140\002\000\012\164\001\000\n\140\003\000\nd\003\000\nL\003\000\001\140\003\000\nd\004\000\006\220\001\000\000@\001\000\006\216\001\000\000<\001\000\n\140\004\000\n\140\005\000\n\140\006\000\n\140\007\000\005\204\001\000\005\200\001\000\005\192\001\000\n\140\b\000\n\140\t\000\006\004\001\000\006\000\001\000\005\244\001\000\n\140\n\000\012\004\001\000\006\232\001\000\012\000\001\000\006\228\001\000\006\156\001\000\002\240\001\000\007\228\001\000\004L\001\000\004L\002\000\004L\003\000\001\180\001\000\004L\004\000\004L\005\000\t\020\001\000\002\136\001\000\t\020\002\000\n4\001\000\002\144\001\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\002\144\002\000\012\176\001\000\n\\\001\000\n0\001\000\n,\001\000\005\004\001\000\001\240\001\000\001\240\002\000\001\240\003\000\005\000\001\000\004,\001\000\002\236\001\000\002\236\002\000\002\236\003\000\t\\\001\000\003@\001\000\003<\001\000\0038\001\000\0034\001\000\003$\001\000\002\244\001\000\002\224\001\000\002\220\001\000\002\216\001\000\002\212\001\000\002\208\001\000\002\204\001\000\002\200\001\000\002\196\001\000\002\192\001\000\002\188\001\000\002\184\001\000\002\180\001\000\002\176\001\000\002\172\001\000\002\168\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\020\001\000\002\188\002\000\003$\001\000\002\244\001\000\002\224\001\000\002\220\001\000\002\216\001\000\002\212\001\000\002\208\001\000\002\204\001\000\002\200\001\000\002\196\001\000\002\192\001\000\002\188\001\000\002\184\001\000\002\180\001\000\002\176\001\000\002\172\001\000\002\168\001\000\002\164\001\000\002\160\001\000\002\156\001\000\002\152\001\000\002\148\001\000\002\020\001\000\002\176\002\000\t\024\001\000\002\176\003\000\t\024\002\000\t\024\003\000\t\024\001\000\n0\001\000\002\140\001\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\002\140\002\000\002\232\001\000\t\024\001\000\002\232\002\000\002\172\002\000\t\024\001\000\002\172\003\000\002\168\002\000\t\024\001\000\002\168\003\000\002\192\002\000\t\024\001\000\002\192\003\000\002\208\002\000\t\024\001\000\002\208\003\000\002\184\002\000\t\024\001\000\002\184\003\000\002\180\002\000\t\024\001\000\002\180\003\000\002\200\002\000\t\024\001\000\002\200\003\000\002\164\002\000\t\024\001\000\002\164\003\000\002\160\002\000\t\024\001\000\002\160\003\000\002\156\002\000\t\024\001\000\002\156\003\000\002\152\002\000\t\024\001\000\002\152\003\000\002\148\002\000\t\024\001\000\002\148\003\000\002\204\002\000\t\024\001\000\002\204\003\000\002\196\002\000\t\024\001\000\002\196\003\000\002\224\002\000\t\024\001\000\002\224\003\000\002\244\002\000\t\024\001\000\002\244\003\000\002\212\002\000\t\024\001\000\002\212\003\000\002\216\002\000\t\024\001\000\002\216\003\000\002\220\002\000\t\024\001\000\002\220\003\000\003$\002\000\t\024\001\000\002\188\003\000\003@\002\000\003<\002\000\0038\002\000\003@\003\000\003@\004\000\003@\005\000\t\024\001\000\003<\003\000\000L\001\000\000L\002\000\n\148\001\000\004$\001\000\004$\002\000\004$\003\000\001\180\001\000\004$\004\000\004$\005\000\b\012\001\000\b\004\001\000\007\252\001\000\007\248\001\000\007\224\001\000\004 \001\000\004 \002\000\004 \003\000\007\224\002\000\007\224\003\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\007\248\002\000\007\248\003\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\b\012\002\000\b\012\003\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\b\004\002\000\b\004\003\000\007\252\002\000\b\000\001\000\b\b\001\000\007\220\001\000\007\220\002\000\007\220\003\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\004\b\001\000\000L\003\000\b<\001\000\b<\002\000\b(\001\000\b$\001\000\b(\002\000\b$\002\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\b(\003\000\b(\004\000\011\232\001\000\011\228\001\000\006\012\001\000\006\012\002\000\006\012\003\000\006\012\004\000\006\012\005\000\007P\001\000\007P\002\000\006\004\001\000\006\000\001\000\005\244\001\000\006\012\006\000\004\160\001\000\004\160\002\000\006\012\007\000\011\232\002\000\011\228\002\000\011\232\003\000\011\228\003\000\011\232\004\000\011\232\005\000\005\160\001\000\005\204\001\000\005\200\001\000\005\192\001\000\005\160\002\000\005\164\001\000\006\004\001\000\006\000\001\000\005\244\001\000\005\164\002\000\005\164\003\000\005\204\001\000\005\200\001\000\005\192\001\000\005\164\004\000\011\232\006\000\011\232\007\000\004x\001\000\004x\002\000\004x\003\000\004x\004\000\004x\005\000\004x\006\000\005\168\001\000\005\168\002\000\011\232\b\000\011\228\004\000\011\228\005\000\011\228\006\000\003\168\001\000\003\168\002\000\0028\001\000\0028\002\000\011\252\001\000\011\252\002\000\011\252\003\000\011\252\004\000\005\204\001\000\005\200\001\000\005\192\001\000\011\252\005\000\b@\001\000\b@\002\000\b@\003\000\b@\004\000\b@\005\000\b\204\001\000\b0\001\000\b\204\002\000\b\204\003\000\b0\002\000\b0\003\000\001\180\001\000\b@\006\000\b@\007\000\006D\001\000\006@\001\000\006D\002\000\b@\b\000\b@\t\000\b,\001\000\001\180\001\000\011\168\001\000\td\001\000\011\168\002\000\td\002\000\011\168\003\000\td\003\000\001|\001\000\001\128\001\000\001p\001\000\001\128\002\000\001\128\003\000\001l\001\000\011\168\004\000\td\004\000\003d\001\000\001\164\001\000\006\028\001\000\003\180\001\000\003\176\001\000\003\180\002\000\003\176\002\000\003\180\003\000\003\176\003\000\b\204\001\000\b8\001\000\b8\002\000\b8\003\000\000H\001\000\003\180\004\000\003\176\004\000\003\180\005\000\003\176\005\000\003\180\006\000\003\180\007\000\b4\001\000\000H\001\000\001\164\002\000\001\164\003\000\003\192\001\000\003\188\001\000\003\192\002\000\003\184\001\000\t\b\001\000\001\160\001\000\t\b\002\000\001\160\002\000\t\b\003\000\001\160\003\000\000l\001\000\000`\001\000\003d\002\000\t\004\001\000\001\156\001\000\000l\001\000\000`\001\000\011\168\005\000\001\144\001\000\001p\001\000\005\136\001\000\001\140\001\000\001\136\001\000\005\136\002\000\001\140\002\000\001\140\003\000\011\168\006\000\011\168\007\000\011\168\b\000\003t\001\000\003p\001\000\003l\001\000\003h\001\000\b\204\001\000\003t\002\000\003l\002\000\003t\003\000\003l\003\000\003l\004\000\003l\005\000\003l\006\000\000l\001\000\000`\001\000\t\004\001\000\003t\004\000\001\156\001\000\000l\001\000\000`\001\000\003h\002\000\003h\003\000\003h\004\000\000l\001\000\000`\001\000\t\004\001\000\003p\002\000\001\156\001\000\000l\001\000\000`\001\000\td\005\000\td\006\000\td\007\000\001\132\001\000\b \001\000\b\028\001\000\t\136\001\000\t\132\001\000\003\140\001\000\003\136\001\000\003\132\001\000\003\128\001\000\t\136\002\000\t\132\002\000\003\140\002\000\003\136\002\000\003\132\002\000\003\128\002\000\t\136\003\000\t\132\003\000\003\140\003\000\003\136\003\000\003\132\003\000\003\128\003\000\t\136\004\000\003\140\004\000\003\132\004\000\t\136\005\000\003\140\005\000\003\132\005\000\005L\001\000\003\140\006\000\003\132\006\000\003\132\007\000\001\212\001\000\001\208\001\000\001\204\001\000\001l\001\000\006p\001\000\006p\002\000\006p\003\000\006`\001\000\003x\001\000\001\168\001\000\003x\002\000\003x\003\000\003x\004\000\bx\001\000\001\172\001\000\003x\001\000\bx\002\000\003\132\b\000\b\164\001\000\003\132\t\000\003\132\n\000\bp\001\000\bt\001\000\006|\001\000\006x\001\000\006l\001\000\006h\001\000\006\\\001\000\006X\001\000\006H\001\000\001\180\001\000\006|\002\000\006x\002\000\006l\002\000\006h\002\000\006\\\002\000\006X\002\000\006|\003\000\006l\003\000\006\\\003\000\006|\004\000\006|\005\000\006|\006\000\006l\004\000\006\\\004\000\003|\001\000\003|\002\000\003|\003\000\006x\003\000\006x\004\000\006x\005\000\006h\003\000\006X\003\000\006P\001\000\003\140\007\000\b\164\001\000\003\140\b\000\003\140\t\000\t\136\006\000\t\136\007\000\bH\001\000\t\136\b\000\t\136\t\000\b\156\001\000\t\136\n\000\b\156\002\000\b\148\001\000\b\152\001\000\t\132\004\000\003\136\004\000\003\128\004\000\005L\001\000\003\136\005\000\003\128\005\000\003\128\006\000\003\128\007\000\b\164\001\000\003\128\b\000\003\128\t\000\003\136\006\000\b\164\001\000\003\136\007\000\003\136\b\000\t\132\005\000\t\132\006\000\t\132\007\000\t\132\b\000\b\156\001\000\t\132\t\000\004\168\001\000\006\148\001\000\006\144\001\000\006\148\002\000\006\148\003\000\006\148\004\000\006\148\005\000\005\152\001\000\005X\001\000\006\148\006\000\006\144\002\000\006\144\003\000\006\144\004\000\005\152\001\000\005X\001\000\006\144\005\000\t\156\001\000\t\148\001\000\t\144\001\000\006\016\001\000\006\012\001\000\005\224\001\000\006\016\002\000\006\012\002\000\006\016\003\000\006\012\003\000\006\016\004\000\006\012\004\000\006\016\005\000\006\012\005\000\006\016\006\000\006\016\007\000\006\004\001\000\006\000\001\000\005\244\001\000\006\016\b\000\t\156\002\000\t\148\002\000\t\144\002\000\005\224\002\000\t\156\003\000\t\148\003\000\t\144\003\000\005\224\003\000\005\224\004\000\005\216\001\000\005\224\005\000\005\224\006\000\005\152\001\000\005X\001\000\005\224\007\000\t\156\004\000\t\156\005\000\t\156\006\000\t\156\007\000\006\004\001\000\006\000\001\000\005\244\001\000\t\156\b\000\004\128\001\000\004\128\002\000\004\128\003\000\004\128\004\000\006\004\001\000\006\000\001\000\005\244\001\000\004\128\005\000\004\128\006\000\004\128\007\000\t\156\t\000\t\148\004\000\t\144\004\000\t\148\005\000\t\148\006\000\005\136\001\000\t\148\007\000\005\172\001\000\006\004\001\000\006\000\001\000\005\244\001\000\005\172\002\000\t\144\005\000\t\144\006\000\005\176\001\000\005\176\002\000\t\172\001\000\t\172\002\000\t\172\003\000\t\172\004\000\006\004\001\000\006\000\001\000\005\244\001\000\t\172\005\000\td\001\000\td\002\000\td\003\000\td\004\000\t\176\001\000\001T\001\000\001T\002\000\001T\003\000\001T\004\000\012\208\001\000\001T\005\000\002@\001\000\t\000\001\000\002@\002\000\002@\003\000\001T\006\000\001T\007\000\001T\b\000\001 \001\000\001 \002\000\000\244\001\000\001\180\001\000\000\244\002\000\000\244\003\000\001 \003\000\001\000\001\000\001\000\002\000\0060\001\000\006(\001\000\0060\002\000\006,\001\000\006$\001\000\006,\002\000\001\000\003\000\001\000\004\000\001\000\005\000\001\180\001\000\001\000\006\000\001\000\007\000\001\004\001\000\001\004\002\000\b\\\001\000\bT\001\000\b\\\002\000\bX\001\000\bP\001\000\bX\002\000\001\004\003\000\001\004\004\000\001\004\005\000\001\004\006\000\001\004\007\000\000\252\001\000\000\252\002\000\001,\001\000\001(\001\000\001,\002\000\001(\002\000\001,\003\000\001,\004\000\005\136\001\000\001,\005\000\001,\006\000\001\024\001\000\b\248\001\000\001\024\002\000\001\024\003\000\001\024\004\000\b\248\002\000\b\248\003\000\001\180\001\000\b\244\001\000\001\180\001\000\001\028\001\000\001\020\001\000\001,\007\000\001$\001\000\001$\002\000\001(\003\000\005\136\001\000\001(\004\000\001(\005\000\001(\006\000\001$\001\000\001$\001\000\000\252\003\000\000\252\004\000\001\b\001\000\001\b\002\000\001\180\001\000\001\152\001\000\001\152\002\000\001\180\001\000\001\152\003\000\001\b\003\000\001\b\004\000\001 \004\000\001 \005\000\001\012\001\000\001\012\002\000\001\016\001\000\004\196\001\000\004\196\002\000\001T\t\000\001$\001\000\001T\n\000\004p\001\000\004p\002\000\004p\003\000\004p\004\000\004p\005\000\004p\006\000\004p\007\000\001$\001\000\004p\b\000\004p\t\000\001T\011\000\t\176\002\000\t\176\003\000\t\176\004\000\t\176\005\000\t\176\006\000\t\176\007\000\005L\001\000\001L\001\000\001L\002\000\001L\003\000\001L\004\000\001\212\001\000\001\208\001\000\001\204\001\000\001\024\001\000\t(\001\000\b\244\001\000\001\180\001\000\001P\001\000\001P\002\000\001H\001\000\001H\002\000\001H\003\000\012X\001\000\001X\001\000\0024\001\000\001\028\001\000\001H\004\000\001D\001\000\001$\001\000\001P\003\000\001L\005\000\t\176\b\000\t\176\t\000\004h\001\000\004h\002\000\004h\003\000\004h\004\000\004h\005\000\004h\006\000\004h\007\000\004h\b\000\004h\t\000\t\176\n\000\tt\001\000\004\172\001\000\t\140\001\000\tx\001\000\t\168\001\000\t\164\001\000\t\160\001\000\t\152\001\000\004\172\002\000\tl\001\000\tl\002\000\t|\001\000\004\144\001\000\004\144\002\000\004\144\003\000\004\144\004\000\004\144\005\000\b\164\001\000\004\144\006\000\004\144\007\000\004\144\b\000\t|\002\000\t\128\001\000\004\152\001\000\004\152\002\000\004\152\003\000\004\152\004\000\004\152\005\000\004\152\006\000\b\164\001\000\004\152\007\000\004\152\b\000\004\152\t\000\t\128\002\000\tp\001\000\t\180\001\000\004\168\002\000\b\028\002\000\th\001\000\b \002\000\001\180\001\000\011\244\001\000\001T\001\000\011\244\002\000\011\244\003\000\011\244\004\000\011\244\005\000\011\244\006\000\000\208\001\000\001@\001\000\001@\002\000\001@\003\000\000\184\001\000\012\196\001\000\012\188\001\000\012\196\002\000\012\188\002\000\012\196\003\000\012\188\003\000\012\196\004\000\012\188\004\000\012\188\005\000\012\188\006\000\012\196\005\000\012\196\006\000\012\196\007\000\000\184\002\000\000\184\003\000\012\192\001\000\012\184\001\000\012\180\001\000\012\220\001\000\012\212\001\000\012\220\002\000\012\216\001\000\006\028\001\000\012\216\002\000\012\180\002\000\012\180\003\000\012\180\004\000\012\180\005\000\001\180\001\000\012\192\002\000\012\184\002\000\012\192\003\000\012\184\003\000\012\184\004\000\012\184\005\000\012\192\004\000\012\192\005\000\012\192\006\000\000\188\001\000\005H\001\000\005@\001\000\0058\001\000\005H\002\000\005@\002\000\0058\002\000\005H\003\000\005@\003\000\0058\003\000\005H\004\000\005@\004\000\0058\004\000\005H\005\000\005@\005\000\005H\006\000\005H\007\000\005H\b\000\005H\t\000\001\180\001\000\005H\n\000\005H\011\000\005@\006\000\005@\007\000\005@\b\000\0058\005\000\011\176\001\000\007h\001\000\011\176\002\000\011\176\003\000\002H\001\000\011\176\004\000\b\168\001\000\000\188\002\000\000\188\003\000\005D\001\000\005<\001\000\0054\001\000\0050\001\000\012\232\001\000\012\224\001\000\012\232\002\000\012\228\001\000\bH\001\000\012\228\002\000\0050\002\000\0050\003\000\0050\004\000\0050\005\000\005D\002\000\005<\002\000\0054\002\000\005D\003\000\005<\003\000\0054\003\000\005D\004\000\005<\004\000\005D\005\000\005D\006\000\005D\007\000\005D\b\000\001\180\001\000\005D\t\000\005D\n\000\005<\005\000\005<\006\000\005<\007\000\0054\004\000\000\196\001\000\000\196\002\000\000\196\003\000\000\196\004\000\000\180\001\000\000\176\001\000\000\180\002\000\000\180\003\000\001<\001\000\0010\001\000\0044\001\000\0040\001\000\000\160\001\000\000\156\001\000\0044\002\000\0044\003\000\0044\004\000\0044\005\000\0044\006\000\0044\007\000\000\160\002\000\000\156\002\000\000\160\003\000\000\160\004\000\005\136\001\000\000\160\005\000\000\160\006\000\0018\001\000\b\248\001\000\0018\002\000\0018\003\000\0018\004\000\000\148\001\000\000\148\002\000\000\224\001\000\000\220\001\000\000\220\002\000\0048\001\000\000\152\001\000\000\152\002\000\000\172\001\000\000\168\001\000\000\144\001\000\003\212\001\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\003\212\002\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\003\208\001\000\b\188\001\000\000\168\002\000\b\188\002\000\b\184\001\000\0014\001\000\000\164\001\000\000\152\003\000\000\164\002\000\0048\002\000\000\220\003\000\000\164\001\000\000\224\002\000\000\148\003\000\000\164\001\000\000\160\007\000\000\156\003\000\005\136\001\000\000\156\004\000\000\156\005\000\000\164\001\000\000\156\006\000\0040\002\000\0040\003\000\0040\004\000\0040\005\000\001<\002\000\0010\002\000\000\164\001\000\0010\003\000\001<\003\000\001<\004\000\001<\005\000\000\180\004\000\000\164\001\000\0070\001\000\0070\002\000\000\180\005\000\000\180\006\000\000\176\002\000\000\176\003\000\000\164\001\000\000\176\004\000\000\176\005\000\000\192\001\000\000\192\002\000\000\192\003\000\000\192\004\000\001@\004\000\001@\005\000\000\200\001\000\000\200\002\000\000\204\001\000\004\204\001\000\004\204\002\000\000\208\002\000\000\164\001\000\000\212\001\000\000\212\002\000\000\212\003\000\000\212\004\000\000\164\001\000\000\216\001\000\000\216\002\000\011\244\007\000\011\244\b\000\004`\001\000\004`\002\000\004`\003\000\004`\004\000\004`\005\000\004`\006\000\004`\007\000\004`\b\000\011\244\t\000\011\208\001\000\004\188\001\000\004(\001\000\004(\002\000\004(\003\000\004(\004\000\004(\005\000\004(\006\000\011\224\001\000\011\164\001\000\011\204\001\000\011\240\001\000\011\236\001\000\011\188\001\000\005\004\001\000\005\004\002\000\004\188\002\000\011\192\001\000\004,\001\000\004,\002\000\011\196\001\000\011\196\002\000\011\212\001\000\011\212\002\000\011\200\001\000\011\248\001\000\b\024\001\000\011\184\001\000\011\184\002\000\011\184\003\000\000\136\001\000\011\188\001\000\005\004\001\000\001\240\001\000\011\180\001\000\011\192\001\000\004,\001\000\002\236\001\000\0028\003\000\0028\004\000\003\168\003\000\003\168\004\000\b<\003\000\b<\004\000\000L\004\000\t\024\001\000\t\020\003\000\b\012\001\000\b\004\001\000\007\252\001\000\007\248\001\000\007\224\001\000\004P\001\000\004P\002\000\004P\003\000\004X\001\000\002\240\002\000\002\240\003\000\002\240\004\000\004X\002\000\004X\003\000\004T\001\000\n<\001\000\006\192\001\000\nL\004\000\nL\005\000\n|\003\000\nx\003\000\n|\004\000\nx\004\000\nx\005\000\t4\001\000\t0\001\000\t,\001\000\t\024\001\000\t4\002\000\t0\002\000\t4\003\000\n\136\003\000\n\132\003\000\n\136\004\000\n\132\004\000\n\132\005\000\nP\003\000\nP\004\000\nP\005\000\nl\003\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\bl\001\000\bl\002\000\bl\003\000\tX\001\000\tT\001\000\tP\001\000\tX\002\000\tT\002\000\tP\002\000\tX\003\000\tT\003\000\tP\003\000\tX\004\000\tT\004\000\tX\005\000\bh\001\000\nl\004\000\nl\005\000\n\140\001\000\n\136\001\000\n\132\001\000\n|\001\000\nx\001\000\nl\001\000\nd\001\000\nP\001\000\nL\001\000\005\144\001\000\005\136\001\000\005\128\001\000\001\140\001\000\001\136\001\000\n\140\002\000\n\136\002\000\n\132\002\000\n|\002\000\nx\002\000\nl\002\000\nd\002\000\nP\002\000\nL\002\000\005\144\002\000\005\136\002\000\005\128\002\000\001\140\002\000\012\168\001\000\005\128\003\000\005\144\003\000\n\b\002\000\n\000\002\000\t\248\002\000\003\028\002\000\003\020\002\000\003\012\002\000\t\248\003\000\003\012\003\000\t\248\004\000\003\012\004\000\t\248\005\000\003\012\005\000\003\012\006\000\t\024\001\000\003\012\007\000\n\b\003\000\003\028\003\000\n\b\004\000\003\028\004\000\n\b\005\000\003\028\005\000\003\028\006\000\t\024\001\000\003\028\007\000\n\000\003\000\003\020\003\000\n\000\004\000\003\020\004\000\n\000\005\000\003\020\005\000\003\020\006\000\t\024\001\000\003\020\007\000\nH\002\000\n\012\002\000\n\004\002\000\t\252\002\000\t\244\002\000\t\240\002\000\t\236\002\000\003 \002\000\003\024\002\000\003\016\002\000\003\b\002\000\003\004\002\000\003\000\002\000\002\252\002\000\t\236\003\000\003\000\003\000\t\236\004\000\003\000\004\000\t\236\005\000\003\000\005\000\003\000\006\000\t\024\001\000\003\000\007\000\t\244\003\000\003\b\003\000\t\244\004\000\003\b\004\000\t\244\005\000\003\b\005\000\003\b\006\000\t\024\001\000\003\b\007\000\t\240\003\000\003\004\003\000\t\240\004\000\003\004\004\000\t\240\005\000\003\004\005\000\003\004\006\000\t\024\001\000\003\004\007\000\n\012\003\000\n\004\003\000\t\252\003\000\005\136\001\000\005\128\001\000\003 \003\000\003\024\003\000\003\016\003\000\n\012\004\000\n\004\004\000\t\252\004\000\003 \004\000\003\024\004\000\003\016\004\000\t\252\005\000\003\016\005\000\t\252\006\000\003\016\006\000\t\252\007\000\003\016\007\000\003\016\b\000\t\024\001\000\003\016\t\000\n\012\005\000\003 \005\000\n\012\006\000\003 \006\000\n\012\007\000\003 \007\000\003 \b\000\t\024\001\000\003 \t\000\n\004\005\000\003\024\005\000\n\004\006\000\003\024\006\000\n\004\007\000\003\024\007\000\003\024\b\000\t\024\001\000\003\024\t\000\nH\003\000\002\252\003\000\002\252\004\000\t\024\001\000\002\252\005\000\b\188\001\000\002\132\002\000\t\024\001\000\002\228\002\000\t\236\004\000\t\236\005\000\t\244\003\000\t\244\004\000\t\244\005\000\t\240\003\000\t\240\004\000\t\240\005\000\n\012\003\000\n\004\003\000\t\252\003\000\005\136\001\000\005\128\001\000\n\012\004\000\n\004\004\000\t\252\004\000\t\252\005\000\t\252\006\000\t\252\007\000\n\012\005\000\n\012\006\000\n\012\007\000\n\004\005\000\n\004\006\000\n\004\007\000\nH\003\000\t\248\004\000\t\248\005\000\n\b\003\000\n\b\004\000\n\b\005\000\n\000\003\000\n\000\004\000\n\000\005\000\002x\006\000\001\232\001\000\001\236\001\000\002x\007\000\002x\b\000\002x\t\000\002x\n\000\002x\011\000\002\016\006\000\002\016\007\000\002\016\b\000\002\016\t\000\002\012\005\000\002\012\006\000\002\012\007\000\002\012\b\000\002\012\t\000\002\012\n\000\002\012\011\000\002`\007\000\005\012\003\000\005\012\004\000\005\012\005\000\005\016\002\000\005\b\002\000\005\016\003\000\005\b\003\000\b\212\002\000\t`\004\000\b\216\001\000\002\024\004\000\002p\004\000\002l\004\000\002p\005\000\002l\005\000\t\024\001\000\002p\006\000\002l\006\000\002l\007\000\t\024\001\000\002l\b\000\n\020\004\000\n\016\004\000\n\016\005\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\002\128\004\000\t\220\002\000\t\024\001\000\t\220\003\000\nX\001\000\nT\001\000\nH\001\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\t\224\002\000\nh\002\000\nh\003\000\t\024\001\000\007H\002\000\t@\002\000\t<\002\000\t8\002\000\t@\003\000\t<\003\000\t@\004\000\nD\002\000\n@\002\000\n@\003\000\n\128\002\000\n\128\003\000\002\\\b\000\002X\003\000\002X\004\000\005\204\001\000\005\200\001\000\005\192\001\000\002X\005\000\002X\006\000\002X\007\000\002P\002\000\002P\003\000\002P\004\000\002P\005\000\002P\006\000\002P\007\000\002P\b\000\002T\002\000\002T\003\000\002T\004\000\002T\005\000\002T\006\000\002T\007\000\002T\b\000\002T\t\000\011\172\002\000\004D\002\000\007`\002\000\003\232\004\000\003\232\005\000\003\236\002\000\012H\001\000\012D\001\000\004\028\002\000\004\024\002\000\004\028\003\000\004\028\004\000\004\028\005\000\004\028\006\000\001\180\001\000\004\028\007\000\004\028\b\000\b\204\001\000\004\024\003\000\004\024\004\000\004\024\005\000\001\180\001\000\004\024\006\000\004\024\007\000\004\020\002\000\004\020\003\000\004\020\004\000\004\016\002\000\004\252\005\000\004\252\006\000\t\024\001\000\002\248\003\000\nt\002\000\np\002\000\np\003\000\nX\001\000\nT\001\000\nH\001\000\n8\002\000\n\012\001\000\n\b\001\000\n\004\001\000\n\000\001\000\t\252\001\000\t\248\001\000\t\244\001\000\t\240\001\000\t\236\001\000\n \002\000\n\028\002\000\n \003\000\n\028\003\000\n \004\000\n\028\004\000\n \005\000\n\028\005\000\005\204\001\000\005\200\001\000\005\192\001\000\n\028\006\000\n \006\000\n \007\000\006\004\001\000\006\000\001\000\005\244\001\000\n \b\000\t\232\002\000\t\228\002\000\t\228\003\000\t\232\003\000\t\232\004\000\002d\004\000\002d\005\000\b\216\001\000\002d\006\000\001\244\004\000\001\244\005\000\b\216\001\000\001\244\006\000\t\024\001\000\007\136\004\000\007\132\004\000\007\128\004\000\007|\004\000\007|\005\000\007\136\005\000\007\136\006\000\006\004\001\000\006\000\001\000\005\244\001\000\007\136\007\000\007\132\005\000\007\128\005\000\007\132\006\000\007\128\006\000\006\004\001\000\006\000\001\000\005\244\001\000\007\128\007\000\007\132\007\000\007\132\b\000\006\004\001\000\006\000\001\000\005\244\001\000\007\132\t\000\006\140\005\000\005\204\001\000\005\200\001\000\005\192\001\000\006\140\006\000\006\136\002\000\006\136\003\000\006\136\004\000\005\204\001\000\005\200\001\000\005\192\001\000\006\136\005\000\004\184\002\000\004\184\003\000\004\184\004\000\004\180\002\000\002$\003\000\002$\004\000\005$\003\000\005\028\003\000\005\020\003\000\005$\004\000\005\028\004\000\005\020\004\000\005\028\005\000\005\020\005\000\005\028\006\000\005\020\006\000\005,\001\000\005\020\007\000\005(\001\000\005 \001\000\005\024\001\000\000l\001\000\000`\001\000\005 \002\000\005\024\002\000\005\024\003\000\006\132\002\000\006\128\002\000\006\128\003\000\003L\003\000\003L\004\000\003L\005\000\t\012\001\000\000p\002\000\000d\002\000\000p\003\000\000d\003\000\000p\004\000\000p\005\000\000d\004\000\t\012\002\000\t\012\003\000\001\180\001\000\t\016\001\000\001\196\002\000\001\180\001\000\t\016\002\000\t\016\003\000\001\180\001\000\006t\002\000\006t\003\000\006t\004\000\006d\002\000\006L\002\000\001\180\001\000\006T\002\000\012T\002\000\011\220\006\000\011\220\007\000\011\220\b\000\003x\001\000\002,\001\000\003x\002\000\002,\002\000\002,\003\000\002,\004\000\002,\005\000\011\220\t\000\b\144\001\000\b\140\001\000\011\220\n\000\b\140\002\000\b\144\002\000\b|\001\000\b\132\001\000\b\128\001\000\b\136\001\000\003|\001\000\0020\001\000\0020\002\000\0020\003\000\0020\004\000\011\216\004\000\003\136\004\000\005L\001\000\003\136\005\000\011\216\005\000\011\216\006\000\011\216\007\000\011\216\b\000\b\144\001\000\b\140\001\000\011\216\t\000\005\180\003\000\005\180\004\000\005\236\005\000\005\204\001\000\005\200\001\000\005\192\001\000\006\004\001\000\006\000\001\000\005\244\001\000\001\200\005\000\001\200\006\000\012\200\006\000\012\200\007\000\005\228\003\000\005\228\004\000\n\164\007\000\006\004\001\000\006\000\001\000\005\244\001\000\n\164\b\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\000\236\002\000\000\232\002\000\000\232\003\000\000\236\003\000\001\180\001\000\000\236\004\000\000\236\005\000\n$\004\000\n$\005\000\n$\006\000\002h\004\000\002h\005\000\b\216\001\000\002h\006\000\002\004\004\000\002\000\004\000\001\252\004\000\001\248\004\000\002\004\005\000\001\252\005\000\b\216\001\000\002\004\006\000\001\252\006\000\002\004\007\000\002\004\b\000\002\000\005\000\002\000\006\000\002t\004\000\002t\005\000\002t\006\000\002t\007\000\000\140\003\000\000\140\004\000\002\b\003\000\002\b\004\000\002\b\005\000\002\b\006\000\002\b\007\000\003\152\001\000\003\152\002\000\000\000\001\000\000\004\000\000\003\164\001\000\003\164\002\000\000\004\001\000\000\b\000\000\012\164\001\000\005`\001\000\001p\001\000\005`\002\000\005`\003\000\005d\001\000\000\b\001\000\005\152\001\000\005p\001\000\005l\001\000\005h\001\000\005X\001\000\005p\002\000\005l\002\000\005h\002\000\005X\002\000\012\164\001\000\005l\003\000\005l\004\000\005l\005\000\005p\003\000\005h\003\000\000P\001\000\005\\\001\000\000T\001\000\007\140\001\000\007\140\002\000\000\012\000\000\000\012\001\000\007\144\001\000\007\144\002\000\000\016\000\000\000\016\001\000\007\148\001\000\001\180\001\000\007\148\002\000\000\020\000\000\007\152\001\000\007\152\002\000\000\020\001\000\000\024\000\000\000\024\001\000\007\156\001\000\005\152\001\000\005X\001\000\007\156\002\000\000\028\000\000\000\028\001\000\007\160\001\000\005\136\001\000\007\160\002\000\000 \000\000\000 \001\000\007\164\001\000\005\204\001\000\005\200\001\000\005\192\001\000\007\164\002\000\000$\000\000\000$\001\000\007\168\001\000\006\004\001\000\006\000\001\000\005\244\001\000\007\168\002\000\000(\000\000\000(\001\000\007\172\001\000\007\172\002\000\000,\000\000\007\216\001\000\007\204\001\000\007\196\001\000\007\188\001\000\007\184\001\000\007\176\001\000\007\176\002\000\000,\001\000\0000\000\000\007\180\001\000\007\180\002\000\0000\001\000\005\144\001\000\005\136\001\000\005\144\002\000\005\136\002\000\0004\000\000\012(\001\000\012$\001\000\012 \001\000\012\028\001\000\012\024\001\000\012\020\001\000\012\016\001\000\012(\002\000\012$\002\000\012 \002\000\012\028\002\000\012\024\002\000\012\020\002\000\012\016\002\000\012(\003\000\012\020\003\000\012\024\003\000\012$\003\000\012\028\003\000\012 \003\000\005\144\001\000\005\136\001\000\0128\001\000\0004\001\000\0124\001\000\0124\002\000\004\212\001\000\004\212\002\000\012,\001\000\012,\002\000\012,\003\000\0120\001\000\0120\002\000\0008\000\000\004\224\001\000\004\220\001\000\004\232\001\000\004\228\001\000\004\228\002\000\004\232\002\000\004\224\002\000\004\224\003\000\004\224\004\000\004\220\002\000\0008\001\000\012\160\001\000\012\160\002\000\012\160\003\000\012\160\004\000\012\156\001\000\012\156\002"), (16, "\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\b\000\t\000\n\000\011\000\012\000\r\000\014\000\015\000\016\000\017\000\018\000\019\000\020\000\021\000\022\000\023\000\024\000\025\000\026\000\027\000\028\000\029\000\030\000\031\000 \000!\000\"\000#\000$\000%\000&\000'\000(\000)\000*\000+\000,\000-\000.\000/\0000\0001\0002\0003\0004\0005\0006\0008\0009\000:\000;\000<\000=\000>\000?\000@\000A\000B\000C\000G\000K\000O\000P\000Q\000R\000S\000T\000U\000V\000W\000X\000Y\000[\000\\\000^\000_\000`\000b\000c\000d\000k\000l\000m\000n\000o\000p\000s\000t\000u\000w\000y\000{\000|\000}\000\127\000\128\000\129\000\131\000\132\000\133\000\134\000\135\000\136\000\137\000\138\000\139\000\140\000\141\000\142\000\143\000\144\000\145\000\146\000\147\000\148\000\149\000\150\000\156\000\158\000\159\000\160\000\162\000\164\000\165\000\167\000\169\000\171\000\172\000\174\000\176\000\178\000\179\000\180\000\181\000\182\000\183\000\184\000\185\000\186\000\187\000\188\000\189\000\190\000\191\000\192\000\194\000\195\000\196\000\198\000\199\000\200\000\201\000\202\000\206\000\207\000\208\000\209\000\210\000\211\000\212\000\213\000\214\000\215\000\216\000\217\000\218\000\222\000\226\000\230\000\231\000\233\000\234\000\236\000\238\000\239\000\240\000\241\000\244\000\245\000\246\000\247\000\248\000\249\000\250\000\251\000\252\000\254\000\255\001\000\001\001\001\003\001\005\001\006\001\b\001\012\001\018\001\020\001\021\001\022\001\024\001\028\001\031\001 \001!\001#\001$\001%\001&\001(\001)\001*\001+\0011\0015\0019\001:\001;\001<\001=\001?\001A\001B\001C\001D\001E\001F\001G\001H\001I\001J\001K\001L\001M\001N\001O\001P\001W\001Y\001[\001]\001^\001_\001`\001a\001b\001c\001e\001g\001h\001i\001j\001k\001l\001p\001q\001s\001t\001v\001x\001y\001z\001}\001~\001\129\001\130\001\133\001\134\001\135\001\136\001\137\001\139\001\140\001\141\001\142\001\143\001\144\001\145\001\146\001\148\001\149\001\151\001\152\001\153\001\157\001\160\001\162\001\163\001\164\001\165\001\166\001\167\001\168\001\169\001\170\001\171\001\175\001\176\001\179\001\180\001\181\001\182\001\183\001\185\001\186\001\187\001\189\001\190\001\191\001\192\001\193\001\196\001\197\001\198\001\199\001\201\001\202\001\203\001\204\001\206\001\207\001\208\001\209\001\211\001\212\001\214\001\215\001\217\001\218\001\220\001\222\001\223\001\224\001\225\001\227\001\228\001\230\001\231\001\234\001\235\001\236\001\238\001\239\001\240\001\241\001\243\001\247\001\248\001\249\001\250\001\251\001\252\001\253\001\254\001\255\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\b\002\t\002\n\002\011\002\012\002\019\002\025\002\028\002\029\002\030\002\031\002 \002!\002\"\002$\002%\002+\002,\0022\0023\0029\002:\002@\002A\002B\002C\002E\002K\002L\002O\002W\002X\002Z\002[\002\\\002]\002^\002_\002`\002c\002d\002e\002l\002m\002n\002p\002q\002w\002}\002~\002\127\002\133\002\134\002\136\002\137\002\138\002\139\002\147\002\149\002\150\002\151\002\157\002\161\002\164\002\165\002\166\002\167\002\168\002\169\002\170\002\171\002\177\002\179\002\180\002\182\002\183\002\185\002\186\002\187\002\188\002\190\002\191\002\192\002\193\002\194\002\197\002\199\002\200\002\201\002\208\002\209\002\211\002\212\002\213\002\214\002\215\002\216\002\224\002\225\002\226\002\227\002\228\002\229\002\230\002\235\002\237\002\238\002\239\002\240\002\241\002\242\002\244\002\245\002\246\002\247\002\249\002\250\002\251\002\252\002\253\002\255\003\000\003\001\003\002\003\003\003\007\003\b\003\n\003\012\003\014\003\016\003\017\003\018\003\020\003\021\003\023\003\025\003\026\003\028\003\029\003\031\003 \003$\003&\003(\003)\003-\003.\0032\0033\0036\0038\003:\003;\003<\003=\003>\003?\003C\003F\003G\003J\003K\003L\003O\003P\003R\003S\003T\003U\003Y\003]\003^\003b\003c\003d\003e\003f\003j\003q\003r\003w\003x\003y\003}\003~\003\127\003\128\003\130\003\131\003\135\003\136\003\138\003\140\003\143\003\144\003\145\003\147\003\148\003\149\003\150\003\151\003\152\003\154\003\156\003\158\003\160\003\162\003\164\003\166\003\168\003\170\003\171\003\179\003\180\003\181\003\182\003\183\003\184\003\186\003\187\003\188\003\189\003\190\003\193\003\194\003\195\003\197\003\199\003\201\003\204\003\205\003\206\003\207\003\209\003\211\003\213\003\220\003\221\003\222\003\223\003\224\003\230\003\231\003\232\003\233\003\234\003\247\003\248\004\005\004\006\004\007\004\n\004\011\004\012\004\r\004\014\004\016\004\017\004\018\004\019\004 \004'\004(\004)\004A\004C\004D\004E\004F\004H\004J\004M\004N\004P\004Q\004R\004S\004T\004U\004V\004c\004d\004q\004}\004\130\004\131\004\133\004\135\004\136\004\137\004\138\004\142\004\143\004\147\004\148\004\150\004\152\004\154\004\156\004\157\004\159\004\160\004\161\004\163\004\164\004\166\004\179\004\180\004\181\004\182\004\183\004\185\004\186\004\187\004\188\004\190\004\191\004\192\004\193\004\220\004\221\004\244\004\245\004\247\004\248\004\250\004\252\005\t\005\n\005\012\005\r\005\015\005\016\005\018\005\019\005\021\005\022\005\024\005\025\005\027\005\028\005\030\005\031\005!\005\"\005$\005%\005'\005(\005*\005+\005-\005.\0050\0051\0053\0054\0056\0057\0059\005:\005<\005=\005?\005@\005B\005C\005E\005F\005H\005K\005L\005M\005N\005O\005P\005Q\005R\005T\005U\005W\005X\005Y\005_\005`\005a\005b\005h\005i\005o\005p\005v\005w\005x\005y\005z\005|\005}\005\131\005\132\005\133\005\134\005\135\005\137\005\144\005\145\005\146\005\149\005\150\005\151\005\152\005\153\005\154\005\158\005\159\005\160\005\161\005\162\005\164\005\166\005\167\005\168\005\169\005\173\005\174\005\178\005\179\005\183\005\184\005\185\005\186\005\187\005\188\005\189\005\190\005\191\005\192\005\193\005\194\005\195\005\196\005\197\005\198\005\199\005\200\005\201\005\202\005\203\005\204\005\208\005\209\005\210\005\211\005\212\005\213\005\214\005\216\005\217\005\218\005\219\005\221\005\222\005\223\005\225\005\226\005\227\005\228\005\230\005\232\005\234\005\236\005\237\005\239\005\240\005\241\005\242\005\244\005\245\005\246\005\247\005\249\005\251\005\253\005\255\006\000\006\002\006\004\006\006\006\007\006\b\006\n\006\011\006\012\006\014\006\015\006\016\006\018\006\020\006\024\006\025\006\029\006\030\006 \006#\006%\006&\006'\006(\006)\006-\0060\0062\0063\0064\0067\006<\006=\006>\006A\006F\006G\006H\006I\006J\006L\006R\006X\006^\006a\006d\006g\006h\006l\006m\006n\006o\006p\006r\006s\006t\006u\006w\006x\006y\006z\006|\006}\006~\006\127\006\135\006\141\006\144\006\145\006\146\006\147\006\148\006\149\006\150\006\151\006\152\006\153\006\154\006\155\006\156\006\157\006\158\006\159\006\161\006\162\006\163\006\164\006\165\006\166\006\168\006\169\006\170\006\171\006\172\006\175\006\178\006\179\006\180\006\182\006\183\006\184\006\186\006\187\006\188\006\189\006\190\006\192\006\193\006\194\006\196\006\197\006\198\006\199\006\202\006\203\006\204\006\205\006\208\006\209\006\215\006\217\006\219\006\221\006\223\006\224\006\228\006\229\006\233\006\237\006\239\006\240\006\243\006\244\006\245\006\246\006\247\006\251\006\252\006\253\006\254\006\255\007\000\007\004\007\005\007\006\007\007\007\t\007\n\007\012\007\r\007\014\007\018\007\019\007\020\007\021\007\022\007\023\007\024\007\025\007\029\007\030\007\031\007 \007!\007\"\007$\007%\007&\007'\007(\007)\007*\007,\007-\007.\007/\0070\0071\0072\0073\0075\0076\0077\0078\0079\007;\007<\007>\007?\007@\007A\007B\007D\007E\007F\007G\007I\007J\007L\007M\007N\007O\007P\007Q\007R\007S\007T\007V\007X\007Y\007Z\007\\\007]\007^\007`\007a\007b\007c\007e\007g\007h\007i\007k\007l\007m\007o\007p\007r\007t\007u\007v\007w\007y\007z\007|\007}\007~\007\127\007\128\007\129\007\130\007\131\007\132\007\133\007\135\007\136\007\137\007\138\007\139\007\140\007\141\007\142\007\144\007\145\007\146\007\147\007\148\007\149\007\150\007\151\007\152\007\153\007\155\007\156\007\157\007\158\007\162\007\165\007\166\007\167\007\168\007\169\007\170\007\172\007\174\007\175\007\177\007\178\007\179\007\180\007\181\007\182\007\183\007\184\007\185\007\186\007\187\007\188\007\189\007\190\007\191\007\192\007\193\007\194\007\195\007\196\007\197\007\198\007\199\007\200\007\201\007\202\007\203\007\204\007\205\007\206\007\207\007\208\007\210\007\211\007\212\007\213\007\214\007\215\007\216\007\217\007\218\007\219\007\220\007\222\007\223\007\224\007\225\007\226\007\227\007\228\007\229\007\230\007\232\007\234\007\235\007\236\007\237\007\238\007\239\007\240\007\241\007\242\007\243\007\244\007\246\007\248\007\250\007\252\007\253\007\254\007\255\b\000\b\001\b\002\b\003\b\006\b\b\b\t\b\011\b\012\b\r\b\014\b\015\b\017\b\019\b\021\b\022\b\023\b\024\b\025\b\026\b\027\b\030\b!\b$\b'\b)\b*\b+\b,\b.\b/\b0\b1\b2\b3\b4\b5\b6\b7\b8\b9\b:\b;\b<\b=\bA\bC\bD\bF\bG\bH\bI\bJ\bK\bN\bQ\bS\bT\bU\bV\bX\bY\bZ\b[\b\\\b]\b^\b_\b`\ba\bb\bd\be\bf\bh\bl\bm\bn\bo\bp\bq\br\bt\bu\bv\bx\by\bz\b|\b}\b~\b\127\b\128\b\130\b\131\b\133\b\134\b\135\b\137\b\138\b\151\b\164\b\166\b\167\b\168\b\169\b\171\b\172\b\173\b\175\b\176\b\177\b\179\b\180\b\182\b\183\b\185\b\186\b\187\b\188\b\189\b\192\b\193\b\194\b\195\b\196\b\198\b\199\b\200\b\201\b\202\b\203\b\205\b\206\b\207\b\208\b\209\b\210\b\211\b\212\b\213\b\214\b\215\b\216\b\217\b\218\b\220\b\221\b\222\b\223\b\225\b\226\b\227\b\228\b\229\b\230\b\231\b\232\b\233\b\234\b\235\b\236\b\237\b\238\b\239\b\240\b\241\b\242\b\243\b\244\b\245\b\246\b\247\b\248\b\249\b\250\b\251\b\253\b\254\b\255\t\001\t\002\t\003\t\004\t\005\t\006\t\007\t\b\t\t\t\n\t\011\t\012\t\r\t\016\t\017\t\020\t\021\t\022\t\023\t\024\t\025\t\026\t\027\t\029\t#\t$\t%\t'\t(\t)\t*\t+\t,\t.\t/\t0\t2\t3\t4\t5\t9\t;\t<\t>\t?\t@\tA\tB\tC\tD\tE\tR\tS\tT\tW\tZ\t]\t_\t`\ta\tb\tc\tq\t~\t\128\t\129\t\135\t\137\t\139\t\141\t\142\t\144\t\146\t\148\t\150\t\151\t\153\t\155\t\157\t\159\t\160\t\162\t\176\t\178\t\180\t\182\t\183\t\185\t\187\t\189\t\191\t\192\t\194\t\196\t\198\t\200\t\201\t\203\t\211\t\217\t\219\t\221\t\223\t\224\t\226\t\228\t\230\t\232\t\233\t\235\t\237\t\239\t\241\t\242\t\244\t\246\t\247\t\249\t\251\t\253\t\254\t\255\n\000\n\001\n\002\n\003\n\004\n\005\n\n\n\r\n\014\n\015\n\016\n\017\n\018\n\019\n\020\n\021\n\022\n\023\n\024\n\025\n\026\n\027\n\028\n\029\n\030\n\031\n \n!\n\"\n#\n$\n%\n&\n'\n(\n)\n*\n+\n,\n-\n.\n/\n0\n1\n2\n3\n4\n5\n6\n8\n9\n:\n;\n>\n@\nB\nE\nF\nH\nI\nJ\nK\nX\nZ\n[\nh\ni\nj\nl\no\nq\nr\ns\nt\nu\nv\nw\nx\ny\nz\n~\n\127\n\128\n\129\n\130\n\131\n\132\n\133\n\134\n\135\n\136\n\137\n\138\n\139\n\140\n\141\n\142\n\143\n\144\n\145\n\146\n\147\n\148\n\149\n\153\n\154\n\155\n\156\n\158\n\159\n\160\n\162\n\163\n\165\n\166\n\167\n\168\n\169\n\170\n\171\n\172\n\173\n\175\n\176\n\177\n\178\n\191\n\193\n\195\n\197\n\202\n\203\n\204\n\208\n\209\n\211\n\212\n\213\n\214\n\215\n\216\n\218\n\219\n\220\n\222\n\227\n\228\n\229\n\233\n\234\n\236\n\241\n\242\n\243\n\247\n\248\n\252\n\253\n\254\n\255\011\003\011\004\011\005\011\006\011\007\011\b\011\t\011\n\011\r\011\016\011\018\011\020\011\021\011\022\011\027\011\029\011\030\011\031\011 \011!\011\"\011#\011$\011'\011)\011*\011+\011,\011-\011/\0112\0113\0115\0116\0117\0118\0119\011;\011<\011=\011>\011?\011@\011B\011D\011E\011F\011G\011J\011K\011L\011M\011N\011O\011P\011Q\011S\011T\011U\011V\011X\011Z\011[\011\\\011]\011`\011a\011b\011c\011g\011k\011l\011m\011n\011o\011p\011t\011u\011|\011}\011~\011\128\011\129\011\130\011\131\011\132\011\133\011\134\011\136\011\140\011\142\011\145\011\146\011\147\011\148\011\149\011\150\011\151\011\152\011\153\011\154\011\155\011\156\011\157\011\158\011\159\011\160\011\161\011\162\011\163\011\164\011\165\011\166\011\167\011\168\011\171\011\172\011\173\011\174\011\175\011\180\011\184\011\186\011\187\011\188\011\189\011\190\011\191\011\192\011\193\011\194\011\195\011\196\011\197\011\198\011\199\011\200\011\201\011\203\011\204\011\205\011\206\011\207\011\208\011\209\011\210\011\213\011\214\011\215\011\216\011\218\011\219\011\220\011\221\011\225\011\226\011\227\011\228\011\232\011\233\011\234\011\235\011\236\011\237\011\238\011\244\011\245\011\246\011\247\011\248\011\249\011\250\011\252\011\254\011\255\012\006\012\r\012\014\012\015\012\016\012\017\012\018\012\021\012\022\012\023\012\024\012\025\012\026\012\027\012\028\012\029\012\030\012\031\012 \012!\012#\012$\012%\012&\012'\012(\012)\012*\012+\012,\012-\012.\012/\0120\0121\0122")) and nullable = - "\000\000\016)\001\000@\000\001\014\016\000\001\255\128\192\000\000?\255\128\000@\130\016\000\012\000\000" + "\000\000\016)\001\000@\000\000\135\b\000\000\255\224\024\000\000\007\255\240\000\b\016\b \000\006\004\000" and first = - (133, "3\248H1b\171\1273=\001P}\200\160\001\199\001\159\194A\139\021[\249\153\232\n\131\238E\000\0148\000 \000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\003\016\128 @\0020$Z\000 \n\128\000\001\004\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\000\006\002\000@\000\000@@\000\000\002\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\001\016\000\000\000\000 \000@\000\000\002\000\000\000\000\000\b\128\000\000\000\001\128\002\000\000\000\016\000\000\000\000\001 \004\016\001\004\000\016\128\000\128\000d\000\000\128\000\207\225 \197\138\173\252\204\244\005\001\247\"\128\007\028\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\b\004\000 \000\000\000\000\000\000\002\000\002\000\000\000\000\000`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\001\159\194A\139\021[\249\153\232\n\131\238E\000\0148\000\000\000\000H\000@\000\000\002\000\000\000\000\000\001\000\002\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\146\000\017\000\000\000\128\000\000\000\000\000@\000\128\000\004\144\000\128\000\000\004\000\000\000\000\000\002\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\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\012\000\000\192\000\000\194\225\000\000\128\000\000\000\000\000\012\254\018\012X\170\223\204\207@T\031r(\000q\192\000\000\000\000\000\000\000\000\000\000 \000\000\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\128\000\000\000\000\000\000\000\000\000\000\t\000\000\128\b \020\132\000\004\000\003\000\000\004\000\006\127\t\006,Uo\230g\160(\015\184\020\0008\224\001\138@\020$\001\024\018+\000\016\005 \000\000\130\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\023\183d@\130\254*@\0010p:q\193`Ph\003\016\128 @\002 $R\000 \n\000\000\001\004\000\024\132\001\002\000\017\129\"\144\001\000P\000\000\b \000\196 \b\128P\012\t\028\128\000\002\128P\000c\000\000\000\000\000\000\000\000\b\160\000\000\000\000\000\000\000\000\000\b\000\004\000 \000\000 \000\000\128\000\000\016\000\002@\000 \002\b\000!\000\001\000\000\192\000\001\000\000\018\000A\000\016@\001\b\000\b\000\006\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\196 \b\016\000\140\t\022\128\b\002\160\000\000A\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\002\000\012\000\000\192\000\000\194\225\000\000\128\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\003\000\0008\b\0000\184@\000 \000\000\000\000\000\000\024\000\001\128\000\001\133\194\000\001\000\000\000\000\000\000\000\128\000\004\144\000\128\000\000\004\000\000\000\000\000\002\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000\0000\000\003\128\128\003\011\132\000\002\000\000\000\000\000@\000@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000b\016\004\b\000F\004\139@\004\001P\000\000\"\128\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\197 \n\130P\012\t\029\128\000\002\128P\000c\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\136\000\000\000\000\016\000 \000\000\001\000\000\000\b\000\004@\000\000\000\000\128\001\000\000\000\b\000\000\000@\000\"\000\000\000\000\004\000\b\000\000\000@\000\000\002\000\003\016\128\"\001@0$r\000\000\n\001@\001\140\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000g\240\144j\197V\254fz\002\128\251\129@\007\142\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\196 \b\016\000\140\t\022\128\b\002\128\000\000A\000\006!\000@\128\004`H\180\000@\020\000\000\002\b\0001\b\002\004\000#\002E\160\002\000\160\000\000\016@\001\136@\016 \001\024\018-\000\016\005@\000\000\130\000\012B\000\129\000\b\192\145h\000\128*\000\000\004\016\000 \000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\003\016\128 @\0020$Z\000 \n\128\000\001\004\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\000\006\002\000@\000\000@@\000\000\002\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\001\016\000\000\000\000 \000@\000\000\002\000\000\000\000\000\b\128\000\000\000\001\128\002\000\000\000\016\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\016\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\015\192\024\018\000\001\241\b\001\002\000@\162\192\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\024\128\001\224@\001\133\194\128\001\000\016\001\000\000\128\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\004\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\128\016\000\000\016\016\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\004\000\000\000\000\000\b\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\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\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\192\000\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\016\000\000\000\000\000\000\000\000\000\000@\000\000 \000\000\128\004\000\000\000\000\000\000\000@\000\192\000\012\000\000\012.\016\000\b\000\000\b\000\000\000\006!\000@\128\004`H\180\000@\021\000\000\002\b\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\144\002\b\000\130\001H@\000D\0000\000\000@\000\004\128\000@\004\016\nB\000\002\000\001\128\000\002\000\000 \000\002\000\000\b\002\016\012\000\000\000\000\b\000\000\001\000\000\016\000\000@\016\128 \000\000\000\000@\000\000\t\000 \128\b \020\132\000\004\000\003\000\000\004\000\000H\001\004\000A\000\004 \000 \000\024\000\000 \000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \012B\000\129\000\b\192\145h\000\128(\000\000\004\016\000b\016\004\b\000F\004\139@\004\001@\000\000 \128\003\016\128 @\0020$Z\000 \n\128\000\001\004\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\006!\000@\128\004`H\180\000@\020\000\000\002\b\0001\b\002\004\000#\002E\160\002\000\160\000\000\016@\001\138@\020$\001\024\018+\000\016\005\000\000\000\130\000\012R\000\168%\000\192\145\216\000\000(\005\000\0060\000 \000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\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\004\000\000\000\004\000\000\000\000\000\000\000\000\000\002@\b \002\b\000!\000\001\000\000\200\000\001\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\012\254\018\012X\170\223\204\207@P\031r(\000q\192\001\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\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\002 \000\000\000\000@\000\128\000\000\004\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\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\003\000\0008\b\0000\184@\000 \000\000\000\000\000\000\024\164\001B@Q\129\"\176\001\000P\000\000( \000\197 \n\018\000\140\t\021\128\b\002\144\000\tA\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\136\000\000\000\000\016\000 \000\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\004\000\000\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\003\027\132\001\022\n7\241#\208\004\007\208\n\000\012p\000\002\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000\000\017\000\000\000\000\002\000\004\000\000\000 \000\000\001\000\001\128\000\024\000\000\024\\(\000\016\000\000\000\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000\"\000\000\000\000\004\000\b\000\000\000@\000\000\000\000\001\016\000\000\000\000 \000@\000\000\002\000\000\000\000\000\000\128\000\000\000\001\000\002\000\000\000\016\000\000\000\000\000\000 \000\000\000\000\000\000\128\000\002\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\000\000\000\000\000\000 \000\001\128\000\028\004\128\025\\ \000\016\000\000\000\000\000\000\004\000\000\000\004\000\192\001\000\000\000\000\000\000\000\000\000 \000\004\000 \002D\b\000\000\000\000\000\000\000\000\004\000\000@\000\001\000B\000\128\000\000\000\001\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\0001H\002\132\128#\002E`\002\000\160\000\000\016@\001\138@\020$\001\024\018+\000\016\005 \000\002\130\000\016\000\001\000\000\004\001\b\006\000\000\000\000\004\000\000\000 \000\004\000 \006D\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\005\237\217\016 \191\138\144\000L\028\014\156pX\020\026\000\192\000\012\000\000\012.\016\000\b\000\000\000\000\000\000\002 \000\000\000\000`\000\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000") + (133, "3\248H1b\171\1273=\001P}\200\160\001\199\001\159\194A\139\021[\249\153\232\n\131\238E\000\0148\000 \000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\003\016\128 @\0020$Z\000 \n\128\000\001\004\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000@\b\b\000\004\012\b\000\000\000@\000\000\000\000\000\006\002\000@\000\000@@\000\000\002\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\141\194\000\139\005\027\248\145\232\002\003\232\005\000\0068\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\001\016\000\000\000\000 \000@\000\000\002\000\000\000\000\000\b\128\000\000\000\001\128\002\000\000\000\016\000\000\000\000\001 \004\016\001\004\000\016\128\000\128\000d\000\000\128\000\207\225 \197\138\173\252\204\244\005\001\247\"\128\007\028\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\b\004\000 \000\000\000\000\000\000\002\000\002\000\000\000\000\000`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\001\159\194A\139\021[\249\153\232\n\131\238E\000\0148\000\000\000\000H\000@\000\000\002\000\000\000\000\000\001\000\002\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\146\000\017\000\000\000\128\000\000\000\000\000@\000\128\000\004\144\000\128\000\000\004\000\000\000\000\000\002\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\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\012\000\000\192\000\000\194\225\000\000\128\000\000\000\000\000\012\254\018\012X\170\223\204\207@T\031r(\000q\192\000\000\000\000\000\000\000\000\000\000 \000\000\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\128\000\000\000\000\000\000\000\000\000\000\t\000\000\128\b \020\132\000\004\000\003\000\000\004\000\006\127\t\006,Uo\230g\160(\015\184\020\0008\224\001\138@\020$\001\024\018+\000\016\005 \000\000\130\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\023\183d@\130\254*@\0010p:q\193`Ph\003\016\128 @\002 $R\000 \n\000\000\001\004\000\024\132\001\002\000\017\129\"\144\001\000P\000\000\b \000\196 \b\128P\012\t\028\128\000\002\128P\000c\000\000\000\000\000\000\000\000\b\160\000\000\000\000\000\000\000\000\000\b\000\004\000 \000\000 \000\000\128\000\000\016\000\002@\000 \002\b\000!\000\001\000\000\192\000\001\000\000\018\000A\000\016@\001\b\000\b\000\006\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\196 \b\016\000\140\t\022\128\b\002\160\000\000A\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\001\128\000\028\004\000\024\\ \000\016\000\000\000\000\002\000\012\000\000\192\000\000\194\225\000\000\128\000\000\000\000\000\012n\016\004X(\223\196\143@\016\031@(\0001\192\003\000\0008\b\0000\184@\000 \000\000\000\000\000\000\024\000\001\128\000\001\133\194\000\001\000\000\000\000\000\000\000\128\000\004\144\000\128\000\000\004\000\000\000\000\000\002\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000\0000\000\003\128\128\003\011\132\000\002\000\000\000\000\000@\000@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\012\000\000\224 \000\194\225\000\000\128\000\000\000\000\000\000b\016\004\b\000F\004\139@\004\001P\000\000\"\128\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\197 \n\130P\012\t\029\128\000\002\128P\000c\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\0001H\002\132\128#\002E`\002\000\160\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\004@\000\000\000\000\128\001\000\000\000\b\000\000\000@\000\"\000\000\000\000\004\000\b\000\000\000@\000\000\002\000\001\016\000\000\000\000 \000@\000\000\002\000\000\000\016\000\024\132\001\016\n\001\129#\144\000\000P\n\000\012`\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\003\000\0008\b\0000\184@\000 \000\000\000\000\000\003?\132\131V*\183\2433\208\020\007\220\n\000\228P\000\227\128\002\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\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\000\000\000\128\001\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\006\000\000p\016\000ap\128\000@\000\000\000\000\000\0067\b\002,\020o\226G\160\b\015\160\020\000\024\224\001\138@\020$\001\024\018+\000\016\005\000\000\000\130\000\012R\000\161 \b\192\145X\000\128(\000\000\004\016\012n\016\004X(\223\196\143@\016\031@(\0001\192cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000@\000\000\000\000\000\000\000\000\000\017\000\000\000\000\002\000\004\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000cp\128\"\193F\254$z\000\128\250\001@\001\142\000\000@\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\b\006\016\000\000\000\000\000\000\000\000\000\000\000@\000\000Ap\128\000\000\000\000\000\000\000\0000\000\003\128\128\003\011\132\000\002\000\000\000\000\000\000\000\136\000\000\000\000\016\000 \000\000\001\000\000\000\b\000\012\000\000\192\000\000\194\225@\000\128\000\000\000\000\000\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\001\016\000\000\000\000 \000@\000\000\002\000\000\000\000\000\b\128\000\000\000\001\000\002\000\000\000\016\000\000\000\000\000\004\000\000\000\000\b\000\016\000\000\000\128\000\000\000\000\000\001\000\000\000\000\000\000\004\000\000\016\000\000\002\000\000\016\000\000\000\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\001\000\000\012\000\000\224$\000\202\225\000\000\128\000\000\000\000\000\000 \000\000\000 \006\000\b\000\000\000\000\000\000\000\000\001\000\000 \001\000\018 @\000\000\000\000\000\000\000\000 \000\002\000\000\b\002\016\004\000\000\000\000\b\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\001\138@\020$\001\024\018+\000\016\005\000\000\000\130\000\012R\000\161 \b\192\145X\000\128)\000\000\020\016\000\128\000\b\000\000 \b@0\000\000\000\000 \000\000\001\000\000 \001\0002 @\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\025\252$\026\177U\191\153\158\128\160>\224P\001\227\129{vD\b/\226\164\000\019\007\003\167\028\022\005\006\1280\000\003\000\000\003\011\132\000\002\000\000\000\000\000\000\000\136\000\000\000\000\024\000 \000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000`\000\007\001\000\006\023\b\000\004\000\000\000\000\000\000\000\000\000\000\192\000\000\000\000\000\000\000\000\000\000\000\000") end) (ET) (TI) @@ -46304,59 +46726,59 @@ end let use_file = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1847 lexer lexbuf) : (Parsetree.toplevel_phrase list)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1856 lexer lexbuf) : (Parsetree.toplevel_phrase list)) and toplevel_phrase = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1827 lexer lexbuf) : (Parsetree.toplevel_phrase)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1836 lexer lexbuf) : (Parsetree.toplevel_phrase)) and parse_val_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1821 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1830 lexer lexbuf) : (Longident.t)) and parse_pattern = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1817 lexer lexbuf) : (Parsetree.pattern)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1826 lexer lexbuf) : (Parsetree.pattern)) and parse_mty_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1813 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1822 lexer lexbuf) : (Longident.t)) and parse_module_type = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1809 lexer lexbuf) : (Parsetree.module_type)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1818 lexer lexbuf) : (Parsetree.module_type)) and parse_module_expr = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1805 lexer lexbuf) : (Parsetree.module_expr)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1814 lexer lexbuf) : (Parsetree.module_expr)) and parse_mod_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1801 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1810 lexer lexbuf) : (Longident.t)) and parse_mod_ext_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1797 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1806 lexer lexbuf) : (Longident.t)) and parse_expression = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1793 lexer lexbuf) : (Parsetree.expression)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1802 lexer lexbuf) : (Parsetree.expression)) and parse_core_type = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1789 lexer lexbuf) : (Parsetree.core_type)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1798 lexer lexbuf) : (Parsetree.core_type)) and parse_constr_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1785 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1794 lexer lexbuf) : (Longident.t)) and parse_any_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1767 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1776 lexer lexbuf) : (Longident.t)) and interface = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Legacy 1763 lexer lexbuf) : (Parsetree.signature)) + (Obj.magic (MenhirInterpreter.entry `Legacy 1772 lexer lexbuf) : (Parsetree.signature)) and implementation = fun lexer lexbuf -> @@ -46366,59 +46788,59 @@ module Incremental = struct let use_file = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1847 initial_position) : (Parsetree.toplevel_phrase list) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1856 initial_position) : (Parsetree.toplevel_phrase list) MenhirInterpreter.checkpoint) and toplevel_phrase = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1827 initial_position) : (Parsetree.toplevel_phrase) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1836 initial_position) : (Parsetree.toplevel_phrase) MenhirInterpreter.checkpoint) and parse_val_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1821 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1830 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_pattern = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1817 initial_position) : (Parsetree.pattern) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1826 initial_position) : (Parsetree.pattern) MenhirInterpreter.checkpoint) and parse_mty_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1813 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1822 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_module_type = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1809 initial_position) : (Parsetree.module_type) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1818 initial_position) : (Parsetree.module_type) MenhirInterpreter.checkpoint) and parse_module_expr = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1805 initial_position) : (Parsetree.module_expr) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1814 initial_position) : (Parsetree.module_expr) MenhirInterpreter.checkpoint) and parse_mod_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1801 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1810 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_mod_ext_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1797 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1806 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_expression = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1793 initial_position) : (Parsetree.expression) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1802 initial_position) : (Parsetree.expression) MenhirInterpreter.checkpoint) and parse_core_type = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1789 initial_position) : (Parsetree.core_type) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1798 initial_position) : (Parsetree.core_type) MenhirInterpreter.checkpoint) and parse_constr_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1785 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1794 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_any_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1767 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1776 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and interface = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 1763 initial_position) : (Parsetree.signature) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 1772 initial_position) : (Parsetree.signature) MenhirInterpreter.checkpoint) and implementation = fun initial_position -> @@ -46426,12 +46848,12 @@ module Incremental = struct end -# 4142 "src/ocaml/preprocess/parser_raw.mly" +# 4355 "src/ocaml/preprocess/parser_raw.mly" -# 46433 "src/ocaml/preprocess/parser_raw.ml" +# 46855 "src/ocaml/preprocess/parser_raw.ml" # 269 "" -# 46438 "src/ocaml/preprocess/parser_raw.ml" +# 46860 "src/ocaml/preprocess/parser_raw.ml" diff --git a/src/ocaml/preprocess/parser_raw.mli b/src/ocaml/preprocess/parser_raw.mli index 128ee3f63e..9818215e61 100644 --- a/src/ocaml/preprocess/parser_raw.mli +++ b/src/ocaml/preprocess/parser_raw.mli @@ -336,7 +336,7 @@ module MenhirInterpreter : sig | N_type_parameter : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) nonterminal | N_type_longident : (Longident.t) nonterminal | N_type_kind : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) nonterminal - | N_type_constraint : (Parsetree.core_type option * Parsetree.core_type option) nonterminal + | N_type_constraint : (Parsetree.type_constraint) nonterminal | N_tuple_type : (Parsetree.core_type) nonterminal | N_toplevel_phrase : (Parsetree.toplevel_phrase) nonterminal | N_toplevel_directive : (Parsetree.toplevel_phrase) nonterminal @@ -375,6 +375,7 @@ module MenhirInterpreter : sig | N_reversed_nonempty_llist_name_tag_ : (string list) nonterminal | N_reversed_nonempty_llist_labeled_simple_expr_ : ((Asttypes.arg_label * Parsetree.expression) list) nonterminal | N_reversed_nonempty_llist_functor_arg_ : ((Lexing.position * Parsetree.functor_parameter) list) nonterminal + | N_reversed_nonempty_concat_fun_param_as_list_ : (Parsetree.function_param list) nonterminal | N_reversed_llist_preceded_CONSTRAINT_constrain__ : ((Parsetree.core_type * Parsetree.core_type * Location.t) list) nonterminal | N_reversed_bar_llist_extension_constructor_declaration_ : (Parsetree.extension_constructor list) nonterminal | N_reversed_bar_llist_extension_constructor_ : (Parsetree.extension_constructor list) nonterminal @@ -408,12 +409,13 @@ module MenhirInterpreter : sig | N_parse_any_longident : (Longident.t) nonterminal | N_paren_module_expr : (Parsetree.module_expr) nonterminal | N_optlabel : (string) nonterminal - | N_option_type_constraint_ : ((Parsetree.core_type option * Parsetree.core_type option) option) nonterminal + | N_option_type_constraint_ : (Parsetree.type_constraint option) nonterminal | N_option_preceded_EQUAL_seq_expr__ : (Parsetree.expression option) nonterminal | N_option_preceded_EQUAL_pattern__ : (Parsetree.pattern option) nonterminal | N_option_preceded_EQUAL_module_type__ : (Parsetree.module_type option) nonterminal | N_option_preceded_EQUAL_expr__ : (Parsetree.expression option) nonterminal | N_option_preceded_COLON_core_type__ : (Parsetree.core_type option) nonterminal + | N_option_preceded_COLON_atomic_type__ : (Parsetree.core_type option) nonterminal | N_option_preceded_AS_mkrhs_LIDENT___ : (string Location.loc option) nonterminal | N_option_SEMI_ : (unit option) nonterminal | N_option_BAR_ : (unit option) nonterminal @@ -421,6 +423,7 @@ module MenhirInterpreter : sig | N_operator : (string) nonterminal | N_open_description : (Longident.t Location.loc Parsetree.open_infos * string Location.loc option) nonterminal | N_open_declaration : (Parsetree.module_expr Parsetree.open_infos * string Location.loc option) nonterminal + | N_object_type : (Parsetree.core_type) nonterminal | N_nonempty_type_kind : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) nonterminal | N_nonempty_list_raw_string_ : (string list) nonterminal | N_nonempty_list_mkrhs_LIDENT__ : (string Location.loc list) nonterminal @@ -442,7 +445,7 @@ module MenhirInterpreter : sig | N_mk_longident_mod_longident_UIDENT_ : (Longident.t) nonterminal | N_mk_longident_mod_longident_LIDENT_ : (Longident.t) nonterminal | N_mk_longident_mod_ext_longident_ident_ : (Longident.t) nonterminal - | N_mk_longident_mod_ext_longident___anonymous_41_ : (Longident.t) nonterminal + | N_mk_longident_mod_ext_longident___anonymous_43_ : (Longident.t) nonterminal | N_mk_longident_mod_ext_longident_UIDENT_ : (Longident.t) nonterminal | N_mk_longident_mod_ext_longident_LIDENT_ : (Longident.t) nonterminal | N_method_ : ((string Location.loc * Asttypes.private_flag * Parsetree.class_field_kind) * @@ -503,16 +506,22 @@ module MenhirInterpreter : sig | N_functor_args : ((Lexing.position * Parsetree.functor_parameter) list) nonterminal | N_functor_arg : (Lexing.position * Parsetree.functor_parameter) nonterminal | N_function_type : (Parsetree.core_type) nonterminal - | N_fun_def : (Parsetree.expression) nonterminal - | N_fun_binding : (Parsetree.expression) nonterminal + | N_fun_seq_expr : (Parsetree.expression) nonterminal + | N_fun_params : (Parsetree.function_param list) nonterminal + | N_fun_param_as_list : (Parsetree.function_param list) nonterminal + | N_fun_expr : (Parsetree.expression) nonterminal + | N_fun_body : (Parsetree.function_body) nonterminal | N_formal_class_parameters : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) nonterminal | N_floating_attribute : (Parsetree.attribute) nonterminal + | N_extension_type : (Parsetree.core_type) nonterminal | N_extension_constructor_rebind_epsilon_ : (Parsetree.extension_constructor) nonterminal | N_extension_constructor_rebind_BAR_ : (Parsetree.extension_constructor) nonterminal | N_extension : (Parsetree.extension) nonterminal | N_ext : (string Location.loc option) nonterminal | N_expr : (Parsetree.expression) nonterminal | N_direction_flag : (Asttypes.direction_flag) nonterminal + | N_delimited_type_supporting_local_open : (Parsetree.core_type) nonterminal + | N_delimited_type : (Parsetree.core_type) nonterminal | N_core_type : (Parsetree.core_type) nonterminal | N_constructor_declarations : (Parsetree.constructor_declaration list) nonterminal | N_constructor_arguments : (Parsetree.constructor_arguments) nonterminal @@ -535,6 +544,7 @@ module MenhirInterpreter : sig | N_class_field : (Parsetree.class_field) nonterminal | N_class_expr : (Parsetree.class_expr) nonterminal | N_attribute : (Parsetree.attribute) nonterminal + | N_attr_payload : (Parsetree.payload) nonterminal | N_attr_id : (string Location.loc) nonterminal | N_atomic_type : (Parsetree.core_type) nonterminal | N_any_longident : (Longident.t) nonterminal diff --git a/src/ocaml/preprocess/parser_recover.ml b/src/ocaml/preprocess/parser_recover.ml index 542f452b63..5183a550d5 100644 --- a/src/ocaml/preprocess/parser_recover.ml +++ b/src/ocaml/preprocess/parser_recover.ml @@ -206,6 +206,7 @@ module Default = struct | MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_llist_name_tag_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_llist_labeled_simple_expr_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_llist_functor_arg_ -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_reversed_nonempty_concat_fun_param_as_list_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_reversed_llist_preceded_CONSTRAINT_constrain__ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_reversed_bar_llist_extension_constructor_declaration_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_reversed_bar_llist_extension_constructor_ -> raise Not_found @@ -244,6 +245,7 @@ module Default = struct | MenhirInterpreter.N MenhirInterpreter.N_option_preceded_EQUAL_module_type__ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_option_preceded_EQUAL_expr__ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_option_preceded_COLON_core_type__ -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_option_preceded_COLON_atomic_type__ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_option_preceded_AS_mkrhs_LIDENT___ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_option_SEMI_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_option_BAR_ -> raise Not_found @@ -251,6 +253,7 @@ module Default = struct | MenhirInterpreter.N MenhirInterpreter.N_operator -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_open_description -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_open_declaration -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_object_type -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_nonempty_type_kind -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_nonempty_list_raw_string_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_nonempty_list_mkrhs_LIDENT__ -> raise Not_found @@ -272,7 +275,7 @@ module Default = struct | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_longident_UIDENT_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_longident_LIDENT_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident_ident_ -> raise Not_found - | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident___anonymous_41_ -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident___anonymous_43_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident_UIDENT_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_mk_longident_mod_ext_longident_LIDENT_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_method_ -> raise Not_found @@ -323,16 +326,22 @@ module Default = struct | MenhirInterpreter.N MenhirInterpreter.N_functor_args -> [] | MenhirInterpreter.N MenhirInterpreter.N_functor_arg -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_function_type -> raise Not_found - | MenhirInterpreter.N MenhirInterpreter.N_fun_def -> raise Not_found - | MenhirInterpreter.N MenhirInterpreter.N_fun_binding -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_fun_seq_expr -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_fun_params -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_fun_param_as_list -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_fun_expr -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_fun_body -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_formal_class_parameters -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_floating_attribute -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_extension_type -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_extension_constructor_rebind_epsilon_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_extension_constructor_rebind_BAR_ -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_extension -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_ext -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_expr -> default_expr () | MenhirInterpreter.N MenhirInterpreter.N_direction_flag -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_delimited_type_supporting_local_open -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_delimited_type -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_core_type -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_constructor_declarations -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_constructor_arguments -> raise Not_found @@ -355,6 +364,7 @@ module Default = struct | MenhirInterpreter.N MenhirInterpreter.N_class_field -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_class_expr -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_attribute -> raise Not_found + | MenhirInterpreter.N MenhirInterpreter.N_attr_payload -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_attr_id -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_atomic_type -> raise Not_found | MenhirInterpreter.N MenhirInterpreter.N_any_longident -> raise Not_found @@ -379,7 +389,7 @@ type decision = | Select of (int -> action list) let depth = - [|0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;3;2;2;1;2;1;2;3;1;1;1;2;3;1;2;3;1;1;1;1;1;2;3;1;1;1;2;2;1;2;2;1;1;2;1;1;1;1;1;1;2;3;4;1;1;5;6;6;1;1;2;1;2;3;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;1;2;3;4;5;2;3;4;5;2;3;4;5;1;1;1;1;1;1;2;3;1;4;5;1;1;1;1;1;2;1;2;3;1;1;1;2;2;3;4;1;2;3;4;1;1;2;1;2;3;1;1;2;4;1;2;1;1;1;2;2;1;1;1;2;2;1;2;3;2;3;5;6;1;1;1;1;1;2;1;1;1;2;1;2;1;1;1;1;1;2;3;4;1;2;3;1;2;3;1;1;2;3;3;1;1;4;1;2;1;1;1;2;3;1;2;3;1;1;1;1;2;1;2;3;1;4;1;1;2;1;1;2;3;1;1;1;1;2;1;2;2;1;1;1;2;3;4;2;3;1;2;3;1;2;2;1;2;1;1;2;1;2;1;1;3;2;3;2;1;2;3;4;1;2;3;3;1;1;3;4;2;3;1;2;1;3;4;2;1;3;2;3;4;5;1;2;1;2;1;2;3;2;3;4;5;3;4;3;4;4;5;6;2;1;2;2;1;1;2;3;1;1;2;1;1;1;1;1;1;4;1;1;2;3;1;1;1;2;3;4;1;2;3;1;1;1;2;3;2;3;2;1;2;1;1;2;3;1;2;4;5;6;1;1;1;2;3;2;3;2;3;3;4;5;2;3;2;3;2;4;4;5;4;5;3;4;2;3;1;2;3;3;2;3;4;5;1;6;5;2;2;3;1;1;2;1;2;3;3;4;2;1;2;3;1;1;1;1;1;2;1;2;3;3;4;5;1;2;1;2;3;4;1;2;1;1;2;3;4;5;1;2;1;2;2;3;1;2;3;1;2;1;2;3;4;1;5;2;1;2;3;1;2;4;5;4;5;6;2;3;4;5;1;1;2;3;4;5;2;1;2;3;3;1;1;1;4;5;2;3;2;3;4;2;3;4;1;3;2;3;1;4;2;3;4;5;3;4;1;5;2;3;2;3;3;4;5;2;2;1;1;6;7;1;1;1;1;1;1;1;1;1;2;3;1;2;3;1;2;3;1;2;3;1;1;2;1;2;3;4;5;6;7;1;1;2;3;4;5;1;2;3;4;5;1;1;1;2;1;1;2;3;4;1;1;4;5;6;7;8;9;10;1;1;1;1;2;3;4;1;2;3;4;2;3;2;3;1;1;1;2;3;1;2;1;2;3;4;4;5;2;1;2;1;2;2;3;2;3;4;5;1;2;1;2;1;1;1;1;1;2;3;1;1;2;3;1;2;3;2;3;2;1;2;1;2;2;3;4;5;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;1;2;1;2;3;4;5;1;2;3;2;3;2;3;2;3;2;3;2;1;1;2;3;1;3;1;2;1;2;3;4;1;2;3;4;5;1;2;6;1;2;7;2;3;4;5;1;2;1;2;3;4;6;7;1;2;3;4;5;6;1;2;8;4;5;6;1;2;1;2;1;2;3;4;5;1;2;3;4;5;1;2;3;2;3;6;7;1;2;8;9;1;1;2;3;1;1;2;3;1;4;1;1;1;1;2;3;1;2;3;4;5;6;7;1;2;3;1;2;1;1;2;3;2;1;5;1;1;2;3;6;7;8;1;2;3;4;5;6;4;2;3;4;2;5;6;7;1;1;1;2;3;4;5;6;7;1;1;2;3;1;1;2;3;4;1;1;2;8;9;10;1;1;1;2;3;4;5;6;4;4;1;2;3;3;4;5;3;3;1;7;8;9;6;7;1;8;9;10;2;1;1;4;5;6;7;8;9;6;7;8;5;6;7;8;9;1;1;2;3;4;5;6;2;3;4;5;1;2;3;4;5;6;7;8;2;3;4;5;6;7;4;5;6;7;8;1;2;3;4;5;6;7;9;4;5;6;7;1;2;5;6;1;2;1;2;3;4;5;1;2;3;4;1;2;3;4;1;5;1;2;3;6;7;8;1;2;1;2;3;3;1;2;1;2;1;2;3;4;5;6;7;1;2;1;2;1;2;3;4;5;6;7;1;2;1;2;3;4;5;6;1;2;3;4;2;3;1;1;1;7;2;3;4;5;6;3;4;1;2;1;2;3;3;4;4;5;1;2;1;1;2;9;10;1;2;3;4;5;6;7;8;9;11;2;3;4;5;6;7;1;2;3;4;1;1;1;2;1;2;3;1;1;4;1;3;5;8;9;1;2;3;4;5;6;7;8;9;10;1;1;1;1;1;1;1;1;2;1;2;1;1;2;3;4;5;6;7;8;2;1;1;2;3;4;5;6;7;8;9;2;1;1;2;2;1;2;1;2;3;4;5;6;1;1;2;3;1;1;2;3;4;5;6;5;6;7;2;3;1;1;2;1;2;2;3;4;5;2;3;4;5;4;5;6;1;1;2;3;4;5;6;7;8;9;10;11;6;7;8;5;1;1;1;2;3;1;2;2;3;1;1;2;1;2;2;3;4;5;2;3;4;5;6;7;8;9;10;5;6;7;4;1;2;3;4;1;2;3;1;1;2;3;4;5;6;7;2;3;4;5;6;1;2;3;4;1;2;1;2;1;2;1;1;1;2;1;2;2;1;1;3;2;2;3;2;3;7;3;4;5;6;2;3;4;5;2;3;3;4;5;4;1;2;5;6;2;3;4;5;1;2;3;4;4;5;1;2;1;1;2;2;1;2;3;4;1;2;7;8;1;2;3;4;5;6;7;8;9;1;1;1;2;3;4;5;6;1;1;1;1;1;1;2;2;1;2;1;2;1;2;1;1;1;1;2;3;3;4;1;1;1;3;4;3;4;4;3;3;4;5;3;4;5;3;4;5;6;7;1;2;3;5;6;7;5;6;7;3;2;3;4;5;6;7;3;4;5;6;7;3;4;5;6;7;2;3;4;5;6;7;3;4;5;6;7;3;4;5;6;7;3;4;5;6;7;8;9;5;6;7;8;9;5;6;7;8;9;3;4;5;2;2;4;5;3;4;5;3;4;5;5;1;2;3;2;3;4;2;3;1;1;4;5;3;4;4;5;3;4;4;5;3;4;5;3;1;2;3;1;1;2;3;4;5;1;4;5;1;2;3;3;6;1;1;7;8;9;10;11;6;7;8;9;5;6;7;8;9;10;11;2;1;2;3;4;1;2;3;4;1;2;5;8;4;5;3;4;5;2;3;3;2;4;2;3;1;4;5;6;7;8;4;4;5;4;2;3;2;2;3;2;2;3;4;2;2;3;2;3;8;3;4;5;6;7;2;3;4;5;6;7;8;2;3;4;5;6;7;8;9;2;5;2;2;4;5;2;2;3;4;5;6;7;8;3;4;5;6;7;2;3;4;2;5;6;3;2;2;3;2;2;3;4;5;6;6;7;8;2;3;3;4;4;5;6;4;5;6;4;5;5;6;7;5;6;7;7;8;9;5;6;2;3;4;5;2;3;4;2;3;4;3;4;5;6;1;7;1;2;3;2;2;3;3;4;5;2;3;4;5;4;2;3;2;3;2;3;2;3;4;2;2;2;2;6;7;8;1;2;3;4;5;9;10;2;2;1;1;1;1;1;2;3;4;4;5;5;6;7;8;9;3;4;5;5;6;6;7;3;4;7;8;2;3;3;4;5;4;5;6;4;5;6;4;5;6;7;8;5;6;4;5;6;7;3;4;3;4;5;6;7;1;2;1;0;1;2;1;0;1;2;3;1;1;1;2;3;4;5;3;3;1;1;1;1;2;0;1;1;2;0;1;1;2;0;1;2;1;0;1;1;2;0;1;1;2;0;1;1;2;0;1;1;2;0;1;1;2;0;1;2;1;0;1;2;1;1;2;0;1;2;3;3;3;3;3;3;1;1;1;2;1;2;1;2;3;1;2;0;1;1;1;2;2;2;3;4;2;1;1;2;3;4;1;2;|] + [|0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;3;2;2;1;2;1;2;3;1;1;1;2;3;1;2;3;1;1;1;1;1;2;3;1;1;1;2;2;1;2;2;1;1;2;1;1;1;1;1;1;2;3;4;1;1;5;6;6;1;1;2;1;2;3;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;1;2;3;4;5;2;3;4;5;2;3;4;5;1;1;1;1;1;1;2;3;1;4;5;1;1;1;1;1;2;1;2;3;1;1;1;2;2;3;4;1;2;3;4;1;1;2;1;2;3;1;1;2;4;1;2;1;1;1;2;2;1;1;1;2;2;1;2;3;2;3;5;6;1;1;1;1;1;2;1;1;1;2;1;2;1;1;1;1;1;2;3;4;1;2;3;1;2;3;1;1;2;3;3;1;1;4;1;2;1;1;1;2;3;1;2;3;1;1;1;1;2;1;2;3;1;4;1;1;2;1;1;2;3;1;1;1;1;2;1;2;2;1;1;1;2;3;4;2;3;1;2;3;1;2;2;1;2;1;1;2;1;2;1;1;2;1;1;2;3;1;4;1;1;1;1;1;2;3;2;3;2;1;2;3;2;1;2;3;4;3;3;3;1;1;3;4;2;3;1;2;1;3;4;2;3;5;1;2;1;2;3;2;3;4;5;3;4;3;4;4;5;6;2;1;2;2;1;1;2;3;1;1;2;1;1;1;1;1;1;4;1;1;2;3;1;1;1;2;3;4;1;2;3;1;1;1;2;3;2;3;2;1;2;1;1;2;3;1;2;4;5;6;1;1;1;2;3;2;3;2;3;3;4;5;2;3;2;3;2;4;4;5;4;5;3;4;2;3;1;2;3;3;2;3;4;5;1;6;5;2;2;3;1;1;2;1;2;3;3;4;2;1;2;3;1;1;1;1;1;2;1;2;3;3;4;5;1;2;1;2;3;4;1;2;1;1;2;3;4;5;1;2;1;2;2;3;1;2;3;1;2;1;2;3;4;1;5;2;1;2;3;1;2;4;5;4;5;6;2;3;4;5;1;1;2;3;4;5;2;1;2;3;3;1;1;1;4;5;2;3;2;3;4;2;3;4;1;3;2;3;1;4;2;3;4;5;3;4;1;5;2;3;2;3;3;4;5;2;2;1;1;6;7;1;1;1;1;1;1;1;1;1;2;3;1;2;3;1;2;3;1;2;3;1;1;2;1;2;3;1;1;1;2;4;1;2;5;6;1;2;3;4;2;3;1;1;2;3;4;5;1;2;3;4;5;1;1;1;2;1;1;2;3;4;1;1;4;5;6;7;8;9;10;1;1;1;1;2;3;4;1;2;3;4;2;3;2;3;1;2;3;4;1;1;1;2;3;1;2;1;2;3;4;4;5;2;1;2;1;2;2;3;2;3;4;5;1;2;1;2;1;1;1;1;1;2;3;1;1;2;3;1;1;2;1;2;3;1;2;1;2;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;2;3;4;5;1;3;1;2;1;2;3;4;5;1;2;3;2;3;2;3;2;3;2;3;2;1;1;2;3;1;3;1;2;1;2;3;4;1;2;3;4;5;1;2;6;1;2;7;2;3;4;5;1;2;1;2;3;4;6;7;1;2;3;4;5;6;1;2;8;4;5;6;1;2;1;2;1;2;3;4;5;1;2;3;4;5;1;2;3;2;3;6;7;1;2;8;9;1;1;2;3;1;1;2;3;1;4;1;1;1;1;2;3;1;2;3;4;5;6;7;1;2;3;1;2;1;1;2;3;2;1;5;1;1;2;3;6;7;8;1;2;3;4;5;6;4;2;3;4;2;5;6;7;1;1;1;2;3;4;5;6;7;1;1;2;3;1;1;2;3;4;1;1;2;8;9;10;1;1;1;2;3;4;5;6;4;4;1;2;3;3;4;5;3;3;1;7;8;9;6;7;1;8;9;10;2;1;1;4;5;6;7;8;9;6;7;8;5;6;7;8;9;1;1;2;3;4;5;6;2;3;4;5;1;2;3;4;5;6;7;8;2;3;4;5;6;7;4;5;6;7;8;1;2;3;4;5;6;7;9;4;5;6;7;1;2;5;6;1;2;1;2;3;4;5;1;2;3;4;1;2;3;4;1;5;1;2;3;6;7;8;1;2;1;2;3;3;1;2;1;2;1;2;3;4;5;6;7;1;2;1;2;1;2;3;4;5;6;7;1;2;1;2;3;4;5;6;1;2;3;4;2;3;1;1;1;7;2;3;4;5;6;3;4;1;2;1;2;3;3;4;4;5;1;2;1;1;2;9;10;1;2;3;4;5;6;7;8;9;11;2;3;4;5;6;7;1;2;3;4;1;1;1;2;1;2;3;1;1;4;1;3;5;8;9;1;2;3;4;5;6;7;8;9;10;1;1;1;1;1;1;1;1;2;1;2;1;1;2;3;4;5;6;7;8;2;1;1;2;3;4;5;6;7;8;9;2;1;1;2;2;1;2;1;2;3;4;5;6;1;1;2;3;1;1;2;3;4;5;6;5;6;7;2;3;1;1;2;1;2;2;3;4;5;2;3;4;5;4;5;6;1;1;2;3;4;5;6;7;8;9;10;11;6;7;8;5;1;1;2;3;1;4;1;2;3;1;1;2;1;2;2;3;4;5;2;3;4;5;6;7;8;9;10;5;6;7;4;1;2;3;4;1;2;3;1;1;2;3;4;5;6;7;2;3;4;5;6;1;2;3;4;1;2;1;2;1;2;1;1;1;2;1;2;2;1;1;3;2;2;3;2;3;7;3;4;5;6;2;3;4;5;2;3;3;4;5;4;1;2;5;6;2;3;4;5;1;2;3;4;4;5;1;2;1;1;2;2;1;2;3;4;1;2;7;8;1;2;3;4;5;6;7;8;9;1;1;1;2;3;4;5;6;1;1;1;1;1;1;2;2;1;2;1;2;1;2;1;1;1;1;2;3;1;1;1;1;3;4;3;4;3;4;4;3;3;4;5;3;4;5;3;4;5;6;7;1;2;3;5;6;7;5;6;7;3;2;3;4;5;6;7;3;4;5;6;7;3;4;5;6;7;2;3;4;5;6;7;3;4;5;6;7;3;4;5;6;7;3;4;5;6;7;8;9;5;6;7;8;9;5;6;7;8;9;3;4;5;2;2;4;5;3;4;5;3;4;5;5;1;2;3;2;3;4;2;3;1;1;4;5;3;4;4;5;3;4;4;5;3;4;5;3;1;2;3;1;2;3;4;5;1;4;5;1;2;3;3;6;1;1;7;8;9;10;11;6;7;8;9;5;6;7;8;9;10;11;7;3;4;5;2;3;3;2;4;4;5;6;7;8;4;4;5;4;2;3;2;2;3;2;2;3;4;2;2;3;2;3;8;3;4;5;6;7;2;3;4;5;6;7;8;2;3;4;5;6;7;8;9;2;2;2;4;5;2;2;3;4;5;6;7;8;3;4;5;6;7;2;3;4;2;5;6;3;2;2;3;2;2;3;4;5;6;6;7;8;2;3;3;4;4;5;6;4;5;6;4;5;5;6;7;5;6;7;7;8;9;5;6;2;3;4;5;2;3;4;2;3;4;3;4;5;6;1;7;1;2;3;2;2;3;3;4;5;2;3;4;5;4;2;3;2;2;3;2;3;4;2;2;2;2;6;7;8;1;2;3;4;5;9;10;2;2;1;1;1;1;1;2;3;4;4;5;5;6;7;8;9;3;4;5;5;6;6;7;3;4;7;8;2;3;3;4;5;4;5;6;4;5;6;4;5;6;7;8;5;6;4;5;6;7;3;4;3;4;5;6;7;1;2;1;0;1;2;1;0;1;2;3;1;1;1;2;3;4;5;3;3;1;1;1;1;2;0;1;1;2;0;1;1;2;0;1;2;1;0;1;1;2;0;1;1;2;0;1;1;2;0;1;1;2;0;1;1;2;0;1;2;1;0;1;2;1;1;2;0;1;2;3;3;3;3;3;3;1;1;1;2;1;2;1;2;3;1;2;0;1;1;1;2;2;2;3;4;2;1;1;2;3;4;1;2;|] let can_pop (type a) : a terminal -> bool = function | T_WITH -> true @@ -494,3070 +504,3093 @@ let can_pop (type a) : a terminal -> bool = function | _ -> false let recover = - let r0 = [R 586] in - let r1 = S (N N_expr) :: r0 in - let r2 = [R 127] in - let r3 = S (T T_DONE) :: r2 in - let r4 = Sub (r1) :: r3 in - let r5 = S (T T_DO) :: r4 in - let r6 = Sub (r1) :: r5 in - let r7 = R 282 :: r6 in - let r8 = [R 685] in - let r9 = S (T T_AND) :: r8 in - let r10 = [R 42] in - let r11 = Sub (r9) :: r10 in - let r12 = [R 188] in - let r13 = [R 43] in - let r14 = [R 507] in - let r15 = S (N N_structure) :: r14 in - let r16 = [R 44] in - let r17 = S (T T_RBRACKET) :: r16 in - let r18 = Sub (r15) :: r17 in - let r19 = [R 142] in - let r20 = S (T T_DONE) :: r19 in - let r21 = Sub (r1) :: r20 in - let r22 = S (T T_DO) :: r21 in - let r23 = Sub (r1) :: r22 in - let r24 = R 282 :: r23 in - let r25 = [R 653] in - let r26 = [R 346] in - let r27 = [R 123] in - let r28 = Sub (r1) :: r27 in - let r29 = R 282 :: r28 in - let r30 = [R 315] in - let r31 = Sub (r1) :: r30 in - let r32 = S (T T_MINUSGREATER) :: r31 in - let r33 = S (N N_pattern) :: r32 in - let r34 = [R 551] in - let r35 = Sub (r33) :: r34 in - let r36 = [R 139] in - let r37 = Sub (r35) :: r36 in - let r38 = S (T T_WITH) :: r37 in - let r39 = Sub (r1) :: r38 in - let r40 = R 282 :: r39 in - let r41 = [R 190] in - let r42 = S (T T_UNDERSCORE) :: r25 in - let r43 = [R 643] in - let r44 = [R 638] in - let r45 = S (T T_END) :: r44 in - let r46 = R 299 :: r45 in - let r47 = R 69 :: r46 in - let r48 = R 282 :: r47 in - let r49 = [R 67] in - let r50 = S (T T_RPAREN) :: r49 in - let r51 = [R 671] in - let r52 = [R 614] in - let r53 = [R 612] in - let r54 = [R 101] in - let r55 = [R 667] in + let r0 = [R 664] in + let r1 = S (T T_UNDERSCORE) :: r0 in + let r2 = [R 147] in + let r3 = Sub (r1) :: r2 in + let r4 = [R 205] in + let r5 = Sub (r3) :: r4 in + let r6 = [R 599] in + let r7 = Sub (r5) :: r6 in + let r8 = [R 130] in + let r9 = S (T T_DONE) :: r8 in + let r10 = Sub (r7) :: r9 in + let r11 = S (T T_DO) :: r10 in + let r12 = Sub (r7) :: r11 in + let r13 = R 289 :: r12 in + let r14 = [R 696] in + let r15 = S (T T_AND) :: r14 in + let r16 = [R 32] in + let r17 = Sub (r15) :: r16 in + let r18 = [R 136] in + let r19 = [R 33] in + let r20 = [R 518] in + let r21 = S (N N_structure) :: r20 in + let r22 = [R 34] in + let r23 = Sub (r21) :: r22 in + let r24 = [R 35] in + let r25 = S (T T_RBRACKET) :: r24 in + let r26 = Sub (r23) :: r25 in + let r27 = [R 157] in + let r28 = S (T T_DONE) :: r27 in + let r29 = Sub (r7) :: r28 in + let r30 = S (T T_DO) :: r29 in + let r31 = Sub (r7) :: r30 in + let r32 = R 289 :: r31 in + let r33 = [R 353] in + let r34 = [R 126] in + let r35 = Sub (r7) :: r34 in + let r36 = R 289 :: r35 in + let r37 = [R 322] in + let r38 = Sub (r7) :: r37 in + let r39 = S (T T_MINUSGREATER) :: r38 in + let r40 = S (N N_pattern) :: r39 in + let r41 = [R 564] in + let r42 = Sub (r40) :: r41 in + let r43 = [R 154] in + let r44 = Sub (r42) :: r43 in + let r45 = S (T T_WITH) :: r44 in + let r46 = Sub (r7) :: r45 in + let r47 = R 289 :: r46 in + let r48 = [R 138] in + let r49 = [R 654] in + let r50 = [R 649] in + let r51 = S (T T_END) :: r50 in + let r52 = R 306 :: r51 in + let r53 = R 60 :: r52 in + let r54 = R 289 :: r53 in + let r55 = [R 58] in let r56 = S (T T_RPAREN) :: r55 in - let r57 = [R 442] in - let r58 = S (T T_AMPERAMPER) :: r57 in - let r59 = [R 799] in - let r60 = S (T T_RPAREN) :: r59 in - let r61 = Sub (r58) :: r60 in - let r62 = [R 368] in - let r63 = S (T T_UNDERSCORE) :: r62 in - let r64 = [R 669] in - let r65 = S (T T_RPAREN) :: r64 in - let r66 = Sub (r63) :: r65 in - let r67 = R 282 :: r66 in - let r68 = [R 670] in - let r69 = S (T T_RPAREN) :: r68 in - let r70 = [R 334] in - let r71 = [R 591] in - let r72 = R 290 :: r71 in - let r73 = [R 370] in - let r74 = S (T T_END) :: r73 in - let r75 = Sub (r72) :: r74 in - let r76 = [R 800] in - let r77 = S (T T_LIDENT) :: r76 in - let r78 = [R 25] in - let r79 = S (T T_UNDERSCORE) :: r78 in - let r80 = [R 773] in - let r81 = Sub (r79) :: r80 in - let r82 = [R 202] in - let r83 = Sub (r81) :: r82 in - let r84 = [R 17] in - let r85 = Sub (r83) :: r84 in - let r86 = [R 117] in + let r57 = [R 682] in + let r58 = [R 625] in + let r59 = [R 623] in + let r60 = [R 92] in + let r61 = [R 678] in + let r62 = S (T T_RPAREN) :: r61 in + let r63 = [R 451] in + let r64 = S (T T_AMPERAMPER) :: r63 in + let r65 = [R 809] in + let r66 = S (T T_RPAREN) :: r65 in + let r67 = Sub (r64) :: r66 in + let r68 = [R 375] in + let r69 = S (T T_UNDERSCORE) :: r68 in + let r70 = [R 680] in + let r71 = S (T T_RPAREN) :: r70 in + let r72 = Sub (r69) :: r71 in + let r73 = R 289 :: r72 in + let r74 = [R 681] in + let r75 = S (T T_RPAREN) :: r74 in + let r76 = [R 341] in + let r77 = [R 602] in + let r78 = R 297 :: r77 in + let r79 = [R 377] in + let r80 = S (T T_END) :: r79 in + let r81 = Sub (r78) :: r80 in + let r82 = [R 810] in + let r83 = S (T T_LIDENT) :: r82 in + let r84 = [R 31] in + let r85 = S (T T_UNDERSCORE) :: r84 in + let r86 = [R 783] in let r87 = Sub (r85) :: r86 in - let r88 = [R 512] in + let r88 = [R 209] in let r89 = Sub (r87) :: r88 in - let r90 = [R 808] in - let r91 = R 288 :: r90 in - let r92 = Sub (r89) :: r91 in - let r93 = S (T T_COLON) :: r92 in - let r94 = Sub (r77) :: r93 in - let r95 = R 282 :: r94 in - let r96 = [R 416] in - let r97 = S (T T_RPAREN) :: r96 in - let r98 = R 224 :: r97 in - let r99 = [R 225] in - let r100 = [R 418] in - let r101 = S (T T_RBRACKET) :: r100 in - let r102 = [R 420] in - let r103 = S (T T_RBRACE) :: r102 in - let r104 = [R 222] in - let r105 = S (T T_LIDENT) :: r104 in - let r106 = [R 24] in - let r107 = Sub (r105) :: r106 in - let r108 = [R 549] in - let r109 = [R 465] in - let r110 = S (T T_COLON) :: r109 in - let r111 = [R 23] in - let r112 = S (T T_RPAREN) :: r111 in - let r113 = S (N N_module_type) :: r112 in - let r114 = R 282 :: r113 in - let r115 = R 187 :: r114 in - let r116 = [R 372] in - let r117 = S (N N_module_expr) :: r116 in - let r118 = R 282 :: r117 in - let r119 = S (T T_OF) :: r118 in - let r120 = [R 358] in - let r121 = S (T T_END) :: r120 in - let r122 = S (N N_structure) :: r121 in - let r123 = [R 332] in - let r124 = S (T T_LIDENT) :: r123 in - let r125 = [R 780] in - let r126 = Sub (r124) :: r125 in - let r127 = [R 102] in - let r128 = S (T T_FALSE) :: r127 in - let r129 = [R 106] in - let r130 = Sub (r128) :: r129 in - let r131 = [R 216] in - let r132 = R 282 :: r131 in - let r133 = R 209 :: r132 in - let r134 = Sub (r130) :: r133 in - let r135 = [R 532] in + let r90 = [R 17] in + let r91 = Sub (r89) :: r90 in + let r92 = [R 108] in + let r93 = Sub (r91) :: r92 in + let r94 = [R 523] in + let r95 = Sub (r93) :: r94 in + let r96 = [R 818] in + let r97 = R 295 :: r96 in + let r98 = Sub (r95) :: r97 in + let r99 = S (T T_COLON) :: r98 in + let r100 = Sub (r83) :: r99 in + let r101 = R 289 :: r100 in + let r102 = [R 425] in + let r103 = S (T T_RPAREN) :: r102 in + let r104 = R 231 :: r103 in + let r105 = [R 232] in + let r106 = [R 427] in + let r107 = S (T T_RBRACKET) :: r106 in + let r108 = [R 429] in + let r109 = S (T T_RBRACE) :: r108 in + let r110 = [R 229] in + let r111 = S (T T_LIDENT) :: r110 in + let r112 = [R 30] in + let r113 = Sub (r111) :: r112 in + let r114 = [R 562] in + let r115 = [R 476] in + let r116 = S (T T_COLON) :: r115 in + let r117 = [R 114] in + let r118 = S (T T_RPAREN) :: r117 in + let r119 = S (N N_module_type) :: r118 in + let r120 = R 289 :: r119 in + let r121 = R 135 :: r120 in + let r122 = [R 379] in + let r123 = S (N N_module_expr) :: r122 in + let r124 = R 289 :: r123 in + let r125 = S (T T_OF) :: r124 in + let r126 = [R 365] in + let r127 = S (T T_END) :: r126 in + let r128 = S (N N_structure) :: r127 in + let r129 = [R 339] in + let r130 = S (T T_LIDENT) :: r129 in + let r131 = [R 790] in + let r132 = Sub (r130) :: r131 in + let r133 = [R 93] in + let r134 = S (T T_FALSE) :: r133 in + let r135 = [R 97] in let r136 = Sub (r134) :: r135 in - let r137 = [R 748] in - let r138 = R 288 :: r137 in - let r139 = Sub (r136) :: r138 in - let r140 = R 518 :: r139 in - let r141 = S (T T_PLUSEQ) :: r140 in - let r142 = Sub (r126) :: r141 in - let r143 = R 782 :: r142 in - let r144 = R 282 :: r143 in - let r145 = [R 219] in - let r146 = R 288 :: r145 in - let r147 = R 541 :: r146 in - let r148 = R 778 :: r147 in - let r149 = S (T T_LIDENT) :: r148 in - let r150 = R 782 :: r149 in - let r151 = R 282 :: r150 in - let r152 = R 187 :: r151 in - let r153 = [R 749] in - let r154 = R 288 :: r153 in - let r155 = Sub (r136) :: r154 in - let r156 = R 518 :: r155 in - let r157 = S (T T_PLUSEQ) :: r156 in - let r158 = Sub (r126) :: r157 in - let r159 = [R 220] in - let r160 = R 288 :: r159 in - let r161 = R 541 :: r160 in - let r162 = R 778 :: r161 in - let r163 = S (T T_LIDENT) :: r162 in - let r164 = R 782 :: r163 in - let r165 = [R 786] in - let r166 = S (T T_UNDERSCORE) :: r165 in - let r167 = [R 781] in - let r168 = Sub (r166) :: r167 in - let r169 = R 787 :: r168 in - let r170 = [R 562] in - let r171 = Sub (r169) :: r170 in - let r172 = [R 784] in - let r173 = S (T T_RPAREN) :: r172 in - let r174 = [R 785] in - let r175 = [R 563] in - let r176 = [R 401] in - let r177 = S (T T_DOTDOT) :: r176 in - let r178 = [R 779] in - let r179 = [R 402] in - let r180 = [R 105] in - let r181 = S (T T_RPAREN) :: r180 in - let r182 = [R 204] in - let r183 = Sub (r83) :: r182 in - let r184 = S (T T_MINUSGREATER) :: r183 in - let r185 = Sub (r81) :: r184 in - let r186 = [R 30] in - let r187 = [R 514] in - let r188 = Sub (r85) :: r187 in - let r189 = [R 322] in - let r190 = R 282 :: r189 in - let r191 = Sub (r188) :: r190 in - let r192 = [R 189] in - let r193 = S (T T_RBRACKET) :: r192 in - let r194 = Sub (r15) :: r193 in - let r195 = [R 294] in - let r196 = [R 409] in - let r197 = R 288 :: r196 in - let r198 = S (N N_module_expr) :: r197 in - let r199 = R 282 :: r198 in - let r200 = [R 410] in - let r201 = R 288 :: r200 in - let r202 = S (N N_module_expr) :: r201 in - let r203 = R 282 :: r202 in - let r204 = [R 467] in - let r205 = S (T T_RPAREN) :: r204 in - let r206 = [R 468] in - let r207 = S (T T_RPAREN) :: r206 in - let r208 = S (N N_expr) :: r207 in - let r209 = [R 344] in - let r210 = S (T T_LIDENT) :: r209 in - let r211 = [R 66] in - let r212 = Sub (r210) :: r211 in - let r213 = [R 635] in - let r214 = Sub (r212) :: r213 in - let r215 = R 282 :: r214 in - let r216 = [R 345] in - let r217 = S (T T_LIDENT) :: r216 in - let r218 = [R 347] in - let r219 = [R 352] in - let r220 = [R 283] in - let r221 = [R 122] in - let r222 = Sub (r35) :: r221 in - let r223 = S (T T_WITH) :: r222 in - let r224 = Sub (r1) :: r223 in - let r225 = R 282 :: r224 in - let r226 = [R 138] in - let r227 = Sub (r35) :: r226 in - let r228 = S (T T_WITH) :: r227 in - let r229 = Sub (r1) :: r228 in - let r230 = R 282 :: r229 in - let r231 = [R 622] in - let r232 = S (T T_RPAREN) :: r231 in - let r233 = [R 658] in - let r234 = [R 175] in - let r235 = [R 252] in - let r236 = Sub (r77) :: r235 in - let r237 = [R 312] in - let r238 = R 288 :: r237 in - let r239 = Sub (r236) :: r238 in - let r240 = R 525 :: r239 in - let r241 = R 282 :: r240 in - let r242 = [R 619] in - let r243 = [R 100] in - let r244 = [R 580] in - let r245 = S (N N_pattern) :: r244 in - let r246 = [R 617] in - let r247 = S (T T_RBRACKET) :: r246 in - let r248 = [R 236] in - let r249 = Sub (r210) :: r248 in - let r250 = [R 308] in - let r251 = R 458 :: r250 in - let r252 = R 452 :: r251 in - let r253 = Sub (r249) :: r252 in - let r254 = [R 616] in - let r255 = S (T T_RBRACE) :: r254 in - let r256 = [R 453] in - let r257 = [R 573] in - let r258 = Sub (r87) :: r257 in - let r259 = [R 558] in - let r260 = Sub (r258) :: r259 in - let r261 = [R 39] in - let r262 = S (T T_RBRACKET) :: r261 in - let r263 = Sub (r260) :: r262 in - let r264 = [R 38] in - let r265 = [R 37] in - let r266 = S (T T_RBRACKET) :: r265 in - let r267 = [R 390] in - let r268 = Sub (r105) :: r267 in - let r269 = S (T T_BACKQUOTE) :: r268 in - let r270 = [R 761] in - let r271 = R 282 :: r270 in + let r137 = [R 223] in + let r138 = R 289 :: r137 in + let r139 = R 216 :: r138 in + let r140 = Sub (r136) :: r139 in + let r141 = [R 543] in + let r142 = Sub (r140) :: r141 in + let r143 = [R 758] in + let r144 = R 295 :: r143 in + let r145 = Sub (r142) :: r144 in + let r146 = R 529 :: r145 in + let r147 = S (T T_PLUSEQ) :: r146 in + let r148 = Sub (r132) :: r147 in + let r149 = R 792 :: r148 in + let r150 = R 289 :: r149 in + let r151 = [R 226] in + let r152 = R 295 :: r151 in + let r153 = R 552 :: r152 in + let r154 = R 788 :: r153 in + let r155 = S (T T_LIDENT) :: r154 in + let r156 = R 792 :: r155 in + let r157 = R 289 :: r156 in + let r158 = R 135 :: r157 in + let r159 = [R 759] in + let r160 = R 295 :: r159 in + let r161 = Sub (r142) :: r160 in + let r162 = R 529 :: r161 in + let r163 = S (T T_PLUSEQ) :: r162 in + let r164 = Sub (r132) :: r163 in + let r165 = [R 227] in + let r166 = R 295 :: r165 in + let r167 = R 552 :: r166 in + let r168 = R 788 :: r167 in + let r169 = S (T T_LIDENT) :: r168 in + let r170 = R 792 :: r169 in + let r171 = [R 796] in + let r172 = S (T T_UNDERSCORE) :: r171 in + let r173 = [R 791] in + let r174 = Sub (r172) :: r173 in + let r175 = R 797 :: r174 in + let r176 = [R 575] in + let r177 = Sub (r175) :: r176 in + let r178 = [R 794] in + let r179 = S (T T_RPAREN) :: r178 in + let r180 = [R 795] in + let r181 = [R 576] in + let r182 = [R 408] in + let r183 = S (T T_DOTDOT) :: r182 in + let r184 = [R 789] in + let r185 = [R 409] in + let r186 = [R 96] in + let r187 = S (T T_RPAREN) :: r186 in + let r188 = [R 211] in + let r189 = Sub (r89) :: r188 in + let r190 = S (T T_MINUSGREATER) :: r189 in + let r191 = Sub (r87) :: r190 in + let r192 = [R 417] in + let r193 = [R 525] in + let r194 = Sub (r91) :: r193 in + let r195 = [R 329] in + let r196 = R 289 :: r195 in + let r197 = Sub (r194) :: r196 in + let r198 = [R 137] in + let r199 = S (T T_RBRACKET) :: r198 in + let r200 = Sub (r21) :: r199 in + let r201 = [R 301] in + let r202 = [R 418] in + let r203 = R 295 :: r202 in + let r204 = S (N N_module_expr) :: r203 in + let r205 = R 289 :: r204 in + let r206 = [R 419] in + let r207 = R 295 :: r206 in + let r208 = S (N N_module_expr) :: r207 in + let r209 = R 289 :: r208 in + let r210 = [R 478] in + let r211 = S (T T_RPAREN) :: r210 in + let r212 = [R 479] in + let r213 = S (T T_RPAREN) :: r212 in + let r214 = S (N N_expr) :: r213 in + let r215 = [R 351] in + let r216 = S (T T_LIDENT) :: r215 in + let r217 = [R 57] in + let r218 = Sub (r216) :: r217 in + let r219 = [R 646] in + let r220 = Sub (r218) :: r219 in + let r221 = R 289 :: r220 in + let r222 = [R 352] in + let r223 = S (T T_LIDENT) :: r222 in + let r224 = [R 354] in + let r225 = [R 359] in + let r226 = [R 290] in + let r227 = [R 125] in + let r228 = Sub (r42) :: r227 in + let r229 = S (T T_WITH) :: r228 in + let r230 = Sub (r7) :: r229 in + let r231 = R 289 :: r230 in + let r232 = [R 153] in + let r233 = Sub (r42) :: r232 in + let r234 = S (T T_WITH) :: r233 in + let r235 = Sub (r7) :: r234 in + let r236 = R 289 :: r235 in + let r237 = [R 647] in + let r238 = S (T T_RPAREN) :: r237 in + let r239 = S (N N_module_expr) :: r238 in + let r240 = R 289 :: r239 in + let r241 = R 135 :: r240 in + let r242 = [R 669] in + let r243 = [R 190] in + let r244 = [R 259] in + let r245 = Sub (r83) :: r244 in + let r246 = [R 319] in + let r247 = R 295 :: r246 in + let r248 = Sub (r245) :: r247 in + let r249 = R 536 :: r248 in + let r250 = R 289 :: r249 in + let r251 = [R 630] in + let r252 = [R 91] in + let r253 = [R 593] in + let r254 = S (N N_pattern) :: r253 in + let r255 = [R 628] in + let r256 = S (T T_RBRACKET) :: r255 in + let r257 = [R 243] in + let r258 = Sub (r216) :: r257 in + let r259 = [R 315] in + let r260 = R 469 :: r259 in + let r261 = R 463 :: r260 in + let r262 = Sub (r258) :: r261 in + let r263 = [R 627] in + let r264 = S (T T_RBRACE) :: r263 in + let r265 = [R 464] in + let r266 = [R 586] in + let r267 = Sub (r93) :: r266 in + let r268 = [R 571] in + let r269 = Sub (r267) :: r268 in + let r270 = [R 120] in + let r271 = S (T T_RBRACKET) :: r270 in let r272 = Sub (r269) :: r271 in - let r273 = [R 34] in + let r273 = [R 119] in let r274 = S (T T_RBRACKET) :: r273 in - let r275 = [R 95] in - let r276 = Sub (r124) :: r275 in - let r277 = [R 31] in - let r278 = [R 335] in - let r279 = S (T T_UIDENT) :: r278 in - let r280 = S (T T_DOT) :: r279 in - let r281 = [R 333] in - let r282 = S (T T_LIDENT) :: r281 in - let r283 = S (T T_UIDENT) :: r70 in - let r284 = [R 350] in - let r285 = Sub (r283) :: r284 in - let r286 = [R 351] in - let r287 = S (T T_RPAREN) :: r286 in - let r288 = [R 35] in - let r289 = S (T T_RBRACKET) :: r288 in - let r290 = [R 205] in - let r291 = [R 570] in - let r292 = [R 32] in - let r293 = [R 203] in - let r294 = Sub (r83) :: r293 in - let r295 = S (T T_MINUSGREATER) :: r294 in - let r296 = [R 571] in - let r297 = [R 559] in - let r298 = [R 554] in - let r299 = Sub (r85) :: r298 in - let r300 = [R 760] in - let r301 = R 282 :: r300 in - let r302 = Sub (r299) :: r301 in - let r303 = [R 555] in - let r304 = [R 18] in - let r305 = Sub (r105) :: r304 in - let r306 = [R 36] in - let r307 = S (T T_RBRACKET) :: r306 in - let r308 = Sub (r260) :: r307 in - let r309 = [R 547] in - let r310 = Sub (r269) :: r309 in - let r311 = [R 40] in - let r312 = S (T T_RBRACKET) :: r311 in - let r313 = [R 459] in - let r314 = S (T T_UNDERSCORE) :: r51 in - let r315 = [R 666] in - let r316 = Sub (r314) :: r315 in - let r317 = [R 498] in - let r318 = Sub (r316) :: r317 in - let r319 = R 282 :: r318 in - let r320 = [R 96] in - let r321 = [R 676] in - let r322 = S (T T_INT) :: r320 in - let r323 = [R 611] in - let r324 = Sub (r322) :: r323 in - let r325 = [R 673] in - let r326 = [R 678] in + let r275 = [R 118] in + let r276 = S (T T_RBRACKET) :: r275 in + let r277 = [R 397] in + let r278 = Sub (r111) :: r277 in + let r279 = S (T T_BACKQUOTE) :: r278 in + let r280 = [R 771] in + let r281 = R 289 :: r280 in + let r282 = Sub (r279) :: r281 in + let r283 = [R 115] in + let r284 = S (T T_RBRACKET) :: r283 in + let r285 = [R 86] in + let r286 = Sub (r130) :: r285 in + let r287 = [R 26] in + let r288 = [R 340] in + let r289 = S (T T_LIDENT) :: r288 in + let r290 = S (T T_DOT) :: r289 in + let r291 = S (T T_UIDENT) :: r76 in + let r292 = [R 357] in + let r293 = Sub (r291) :: r292 in + let r294 = [R 358] in + let r295 = S (T T_RPAREN) :: r294 in + let r296 = [R 342] in + let r297 = S (T T_UIDENT) :: r296 in + let r298 = [R 116] in + let r299 = S (T T_RBRACKET) :: r298 in + let r300 = [R 212] in + let r301 = [R 583] in + let r302 = S (T T_DOT) :: r297 in + let r303 = S (T T_LBRACKETGREATER) :: r274 in + let r304 = [R 29] in + let r305 = Sub (r303) :: r304 in + let r306 = [R 210] in + let r307 = Sub (r89) :: r306 in + let r308 = S (T T_MINUSGREATER) :: r307 in + let r309 = [R 584] in + let r310 = [R 27] in + let r311 = [R 113] in + let r312 = [R 18] in + let r313 = Sub (r111) :: r312 in + let r314 = [R 572] in + let r315 = [R 567] in + let r316 = Sub (r91) :: r315 in + let r317 = [R 770] in + let r318 = R 289 :: r317 in + let r319 = Sub (r316) :: r318 in + let r320 = [R 568] in + let r321 = [R 117] in + let r322 = S (T T_RBRACKET) :: r321 in + let r323 = Sub (r269) :: r322 in + let r324 = [R 560] in + let r325 = Sub (r279) :: r324 in + let r326 = [R 121] in let r327 = S (T T_RBRACKET) :: r326 in - let r328 = S (T T_LBRACKET) :: r327 in - let r329 = [R 679] in - let r330 = [R 489] in - let r331 = S (N N_pattern) :: r330 in - let r332 = R 282 :: r331 in - let r333 = [R 490] in - let r334 = [R 483] in - let r335 = [R 497] in - let r336 = [R 495] in - let r337 = [R 391] in - let r338 = S (T T_LIDENT) :: r337 in - let r339 = [R 496] in - let r340 = Sub (r316) :: r339 in - let r341 = S (T T_RPAREN) :: r340 in - let r342 = [R 110] in - let r343 = [R 109] in - let r344 = S (T T_RPAREN) :: r343 in - let r345 = [R 491] in - let r346 = [R 681] in - let r347 = S (T T_RPAREN) :: r346 in - let r348 = [R 488] in - let r349 = [R 486] in - let r350 = [R 108] in - let r351 = S (T T_RPAREN) :: r350 in - let r352 = [R 680] in - let r353 = [R 310] in - let r354 = [R 618] in - let r355 = [R 248] in - let r356 = [R 234] in - let r357 = S (T T_LIDENT) :: r356 in - let r358 = [R 247] in + let r328 = [R 470] in + let r329 = S (T T_UNDERSCORE) :: r57 in + let r330 = [R 677] in + let r331 = Sub (r329) :: r330 in + let r332 = [R 509] in + let r333 = Sub (r331) :: r332 in + let r334 = R 289 :: r333 in + let r335 = [R 87] in + let r336 = [R 687] in + let r337 = S (T T_INT) :: r335 in + let r338 = [R 622] in + let r339 = Sub (r337) :: r338 in + let r340 = [R 684] in + let r341 = [R 689] in + let r342 = S (T T_RBRACKET) :: r341 in + let r343 = S (T T_LBRACKET) :: r342 in + let r344 = [R 690] in + let r345 = [R 500] in + let r346 = S (N N_pattern) :: r345 in + let r347 = R 289 :: r346 in + let r348 = [R 501] in + let r349 = [R 494] in + let r350 = [R 508] in + let r351 = [R 506] in + let r352 = [R 398] in + let r353 = S (T T_LIDENT) :: r352 in + let r354 = [R 507] in + let r355 = Sub (r331) :: r354 in + let r356 = S (T T_RPAREN) :: r355 in + let r357 = [R 101] in + let r358 = [R 100] in let r359 = S (T T_RPAREN) :: r358 in - let r360 = [R 235] in - let r361 = [R 244] in - let r362 = [R 243] in - let r363 = S (T T_RPAREN) :: r362 in - let r364 = R 460 :: r363 in - let r365 = [R 461] in - let r366 = [R 267] in - let r367 = Sub (r77) :: r366 in - let r368 = [R 270] in - let r369 = Sub (r367) :: r368 in - let r370 = [R 173] in - let r371 = Sub (r1) :: r370 in - let r372 = S (T T_IN) :: r371 in - let r373 = [R 506] in - let r374 = S (T T_UNDERSCORE) :: r373 in - let r375 = [R 246] in - let r376 = [R 245] in - let r377 = S (T T_RPAREN) :: r376 in - let r378 = R 460 :: r377 in - let r379 = [R 265] in - let r380 = [R 736] in - let r381 = Sub (r1) :: r380 in - let r382 = S (T T_EQUAL) :: r381 in - let r383 = [R 196] in + let r360 = [R 502] in + let r361 = [R 692] in + let r362 = S (T T_RPAREN) :: r361 in + let r363 = [R 499] in + let r364 = [R 497] in + let r365 = [R 99] in + let r366 = S (T T_RPAREN) :: r365 in + let r367 = [R 691] in + let r368 = [R 317] in + let r369 = [R 629] in + let r370 = [R 255] in + let r371 = [R 241] in + let r372 = S (T T_LIDENT) :: r371 in + let r373 = [R 254] in + let r374 = S (T T_RPAREN) :: r373 in + let r375 = [R 242] in + let r376 = [R 251] in + let r377 = [R 250] in + let r378 = S (T T_RPAREN) :: r377 in + let r379 = R 471 :: r378 in + let r380 = [R 472] in + let r381 = [R 274] in + let r382 = Sub (r83) :: r381 in + let r383 = [R 277] in let r384 = Sub (r382) :: r383 in - let r385 = [R 738] in - let r386 = Sub (r384) :: r385 in - let r387 = S (T T_RPAREN) :: r386 in - let r388 = Sub (r338) :: r387 in - let r389 = [R 249] in - let r390 = [R 133] in - let r391 = Sub (r1) :: r390 in - let r392 = S (T T_IN) :: r391 in - let r393 = S (N N_module_expr) :: r392 in - let r394 = R 282 :: r393 in - let r395 = R 187 :: r394 in - let r396 = [R 259] in - let r397 = R 288 :: r396 in - let r398 = Sub (r236) :: r397 in - let r399 = R 525 :: r398 in - let r400 = R 282 :: r399 in - let r401 = R 187 :: r400 in - let r402 = [R 134] in - let r403 = Sub (r1) :: r402 in - let r404 = S (T T_IN) :: r403 in - let r405 = S (N N_module_expr) :: r404 in - let r406 = R 282 :: r405 in - let r407 = [R 359] in - let r408 = S (N N_module_expr) :: r407 in - let r409 = S (T T_MINUSGREATER) :: r408 in - let r410 = S (N N_functor_args) :: r409 in - let r411 = [R 206] in - let r412 = [R 207] in - let r413 = S (T T_RPAREN) :: r412 in - let r414 = S (N N_module_type) :: r413 in - let r415 = [R 373] in - let r416 = S (T T_RPAREN) :: r415 in - let r417 = [R 376] in - let r418 = S (N N_module_type) :: r417 in - let r419 = [R 371] in - let r420 = S (N N_module_type) :: r419 in - let r421 = S (T T_MINUSGREATER) :: r420 in - let r422 = S (N N_functor_args) :: r421 in - let r423 = [R 342] in - let r424 = Sub (r105) :: r423 in - let r425 = [R 382] in - let r426 = Sub (r424) :: r425 in - let r427 = [R 821] in + let r385 = [R 188] in + let r386 = Sub (r7) :: r385 in + let r387 = S (T T_IN) :: r386 in + let r388 = [R 517] in + let r389 = S (T T_UNDERSCORE) :: r388 in + let r390 = [R 253] in + let r391 = [R 252] in + let r392 = S (T T_RPAREN) :: r391 in + let r393 = R 471 :: r392 in + let r394 = [R 272] in + let r395 = [R 202] in + let r396 = S (T T_RPAREN) :: r395 in + let r397 = [R 256] in + let r398 = [R 747] in + let r399 = Sub (r7) :: r398 in + let r400 = [R 266] in + let r401 = R 295 :: r400 in + let r402 = Sub (r245) :: r401 in + let r403 = R 536 :: r402 in + let r404 = R 289 :: r403 in + let r405 = R 135 :: r404 in + let r406 = [R 150] in + let r407 = Sub (r7) :: r406 in + let r408 = S (T T_IN) :: r407 in + let r409 = S (N N_module_expr) :: r408 in + let r410 = R 289 :: r409 in + let r411 = R 135 :: r410 in + let r412 = [R 151] in + let r413 = Sub (r7) :: r412 in + let r414 = S (T T_IN) :: r413 in + let r415 = S (N N_module_expr) :: r414 in + let r416 = R 289 :: r415 in + let r417 = [R 366] in + let r418 = S (N N_module_expr) :: r417 in + let r419 = S (T T_MINUSGREATER) :: r418 in + let r420 = S (N N_functor_args) :: r419 in + let r421 = [R 213] in + let r422 = [R 214] in + let r423 = S (T T_RPAREN) :: r422 in + let r424 = S (N N_module_type) :: r423 in + let r425 = [R 380] in + let r426 = S (T T_RPAREN) :: r425 in + let r427 = [R 383] in let r428 = S (N N_module_type) :: r427 in - let r429 = S (T T_EQUAL) :: r428 in - let r430 = Sub (r426) :: r429 in - let r431 = S (T T_TYPE) :: r430 in - let r432 = S (T T_MODULE) :: r431 in - let r433 = [R 556] in - let r434 = Sub (r432) :: r433 in - let r435 = [R 378] in - let r436 = [R 818] in - let r437 = Sub (r85) :: r436 in - let r438 = S (T T_COLONEQUAL) :: r437 in - let r439 = Sub (r249) :: r438 in - let r440 = [R 817] in - let r441 = R 541 :: r440 in - let r442 = [R 542] in - let r443 = Sub (r87) :: r442 in - let r444 = S (T T_EQUAL) :: r443 in - let r445 = [R 343] in - let r446 = Sub (r105) :: r445 in - let r447 = [R 822] in - let r448 = [R 377] in - let r449 = [R 819] in - let r450 = Sub (r285) :: r449 in - let r451 = S (T T_UIDENT) :: r218 in - let r452 = [R 820] in - let r453 = [R 557] in - let r454 = [R 364] in - let r455 = [R 466] in - let r456 = S (T T_RPAREN) :: r455 in - let r457 = [R 574] in - let r458 = S (N N_expr) :: r457 in - let r459 = [R 661] in - let r460 = S (T T_RBRACKET) :: r459 in - let r461 = [R 646] in - let r462 = [R 577] in - let r463 = R 454 :: r462 in - let r464 = [R 455] in - let r465 = [R 583] in - let r466 = R 454 :: r465 in - let r467 = R 462 :: r466 in - let r468 = Sub (r249) :: r467 in - let r469 = [R 527] in - let r470 = Sub (r468) :: r469 in - let r471 = [R 655] in - let r472 = S (T T_RBRACE) :: r471 in - let r473 = [R 621] in - let r474 = [R 620] in - let r475 = S (T T_GREATERDOT) :: r474 in - let r476 = [R 145] in - let r477 = Sub (r42) :: r476 in - let r478 = R 282 :: r477 in - let r479 = [R 634] in - let r480 = S (T T_END) :: r479 in - let r481 = R 282 :: r480 in - let r482 = [R 141] in - let r483 = S (N N_expr) :: r482 in - let r484 = S (T T_THEN) :: r483 in - let r485 = Sub (r1) :: r484 in - let r486 = R 282 :: r485 in - let r487 = [R 135] in - let r488 = Sub (r35) :: r487 in - let r489 = R 282 :: r488 in - let r490 = [R 552] in - let r491 = [R 316] in - let r492 = Sub (r1) :: r491 in - let r493 = S (T T_MINUSGREATER) :: r492 in - let r494 = [R 250] in - let r495 = Sub (r316) :: r494 in - let r496 = [R 198] in - let r497 = Sub (r1) :: r496 in - let r498 = S (T T_MINUSGREATER) :: r497 in - let r499 = [R 136] in - let r500 = Sub (r498) :: r499 in - let r501 = Sub (r495) :: r500 in - let r502 = R 282 :: r501 in - let r503 = [R 137] in - let r504 = Sub (r498) :: r503 in - let r505 = S (T T_RPAREN) :: r504 in - let r506 = [R 129] in - let r507 = S (T T_DONE) :: r506 in - let r508 = Sub (r1) :: r507 in - let r509 = S (T T_DO) :: r508 in - let r510 = Sub (r1) :: r509 in - let r511 = S (T T_IN) :: r510 in - let r512 = S (N N_pattern) :: r511 in - let r513 = R 282 :: r512 in - let r514 = [R 120] in - let r515 = S (T T_DOWNTO) :: r514 in - let r516 = [R 143] in - let r517 = S (T T_DONE) :: r516 in - let r518 = Sub (r1) :: r517 in - let r519 = S (T T_DO) :: r518 in - let r520 = Sub (r1) :: r519 in - let r521 = Sub (r515) :: r520 in - let r522 = Sub (r1) :: r521 in - let r523 = S (T T_EQUAL) :: r522 in - let r524 = S (N N_pattern) :: r523 in - let r525 = R 282 :: r524 in - let r526 = [R 644] in - let r527 = [R 654] in - let r528 = S (T T_RPAREN) :: r527 in - let r529 = S (T T_LPAREN) :: r528 in - let r530 = S (T T_DOT) :: r529 in - let r531 = [R 664] in - let r532 = S (T T_RPAREN) :: r531 in - let r533 = S (N N_module_type) :: r532 in - let r534 = S (T T_COLON) :: r533 in - let r535 = S (N N_module_expr) :: r534 in - let r536 = R 282 :: r535 in - let r537 = [R 268] in - let r538 = Sub (r1) :: r537 in - let r539 = S (T T_EQUAL) :: r538 in - let r540 = [R 144] in - let r541 = Sub (r42) :: r540 in - let r542 = R 282 :: r541 in - let r543 = [R 651] in - let r544 = [R 627] in - let r545 = S (T T_RPAREN) :: r544 in - let r546 = Sub (r458) :: r545 in - let r547 = S (T T_LPAREN) :: r546 in - let r548 = [R 170] in - let r549 = [R 239] in - let r550 = [R 775] in - let r551 = Sub (r87) :: r550 in - let r552 = S (T T_COLON) :: r551 in - let r553 = [R 240] in - let r554 = S (T T_RPAREN) :: r553 in - let r555 = Sub (r552) :: r554 in - let r556 = [R 777] in - let r557 = [R 776] in - let r558 = [R 241] in - let r559 = [R 242] in - let r560 = [R 650] in - let r561 = [R 624] in - let r562 = S (T T_RPAREN) :: r561 in - let r563 = Sub (r1) :: r562 in - let r564 = S (T T_LPAREN) :: r563 in - let r565 = [R 568] in - let r566 = [R 121] in - let r567 = Sub (r1) :: r566 in - let r568 = [R 172] in - let r569 = Sub (r1) :: r568 in - let r570 = [R 160] in - let r571 = [R 154] in - let r572 = [R 171] in - let r573 = [R 589] in - let r574 = Sub (r1) :: r573 in - let r575 = [R 157] in - let r576 = [R 161] in - let r577 = [R 153] in - let r578 = [R 156] in - let r579 = [R 155] in - let r580 = [R 165] in - let r581 = [R 159] in - let r582 = [R 158] in - let r583 = [R 163] in - let r584 = [R 152] in - let r585 = [R 151] in - let r586 = [R 174] in - let r587 = [R 150] in - let r588 = [R 164] in - let r589 = [R 162] in - let r590 = [R 166] in - let r591 = [R 167] in - let r592 = [R 168] in - let r593 = [R 569] in - let r594 = [R 169] in - let r595 = [R 19] in - let r596 = R 288 :: r595 in - let r597 = Sub (r236) :: r596 in - let r598 = [R 258] in - let r599 = Sub (r1) :: r598 in - let r600 = S (T T_EQUAL) :: r599 in - let r601 = [R 257] in - let r602 = Sub (r1) :: r601 in - let r603 = [R 493] in - let r604 = [R 499] in - let r605 = [R 504] in - let r606 = [R 502] in - let r607 = [R 492] in - let r608 = [R 516] in - let r609 = S (T T_RBRACKET) :: r608 in - let r610 = Sub (r15) :: r609 in - let r611 = [R 510] in - let r612 = [R 511] in - let r613 = [R 353] in - let r614 = S (N N_module_expr) :: r613 in - let r615 = S (T T_EQUAL) :: r614 in - let r616 = [R 751] in - let r617 = R 288 :: r616 in - let r618 = Sub (r615) :: r617 in - let r619 = Sub (r63) :: r618 in - let r620 = R 282 :: r619 in - let r621 = [R 380] in - let r622 = R 288 :: r621 in - let r623 = R 456 :: r622 in - let r624 = Sub (r105) :: r623 in - let r625 = R 282 :: r624 in - let r626 = R 187 :: r625 in - let r627 = [R 457] in - let r628 = [R 289] in - let r629 = [R 752] in - let r630 = R 278 :: r629 in - let r631 = R 288 :: r630 in - let r632 = Sub (r615) :: r631 in - let r633 = [R 354] in - let r634 = S (N N_module_expr) :: r633 in - let r635 = S (T T_EQUAL) :: r634 in - let r636 = [R 279] in - let r637 = R 278 :: r636 in - let r638 = R 288 :: r637 in - let r639 = Sub (r615) :: r638 in - let r640 = Sub (r63) :: r639 in - let r641 = [R 355] in - let r642 = [R 227] in - let r643 = S (T T_RBRACKET) :: r642 in - let r644 = Sub (r15) :: r643 in - let r645 = [R 193] in - let r646 = S (T T_RBRACKET) :: r645 in - let r647 = Sub (r15) :: r646 in - let r648 = [R 757] in - let r649 = R 288 :: r648 in - let r650 = S (N N_module_expr) :: r649 in - let r651 = R 282 :: r650 in - let r652 = [R 393] in - let r653 = S (T T_STRING) :: r652 in - let r654 = [R 517] in - let r655 = R 288 :: r654 in - let r656 = Sub (r653) :: r655 in - let r657 = S (T T_EQUAL) :: r656 in - let r658 = Sub (r89) :: r657 in - let r659 = S (T T_COLON) :: r658 in - let r660 = Sub (r77) :: r659 in - let r661 = R 282 :: r660 in - let r662 = [R 513] in - let r663 = Sub (r87) :: r662 in - let r664 = [R 550] in - let r665 = Sub (r128) :: r342 in - let r666 = [R 735] in - let r667 = R 288 :: r666 in - let r668 = R 282 :: r667 in - let r669 = Sub (r665) :: r668 in - let r670 = S (T T_EQUAL) :: r669 in - let r671 = Sub (r130) :: r670 in - let r672 = R 282 :: r671 in - let r673 = [R 590] in - let r674 = R 288 :: r673 in - let r675 = R 282 :: r674 in - let r676 = R 209 :: r675 in - let r677 = Sub (r130) :: r676 in - let r678 = R 282 :: r677 in - let r679 = R 187 :: r678 in - let r680 = [R 112] in - let r681 = Sub (r79) :: r680 in - let r682 = [R 210] in - let r683 = [R 229] in - let r684 = R 282 :: r683 in - let r685 = Sub (r188) :: r684 in - let r686 = S (T T_COLON) :: r685 in - let r687 = S (T T_LIDENT) :: r686 in - let r688 = R 383 :: r687 in - let r689 = [R 231] in - let r690 = Sub (r688) :: r689 in - let r691 = [R 114] in - let r692 = S (T T_RBRACE) :: r691 in - let r693 = [R 230] in - let r694 = R 282 :: r693 in - let r695 = S (T T_SEMI) :: r694 in - let r696 = R 282 :: r695 in - let r697 = Sub (r188) :: r696 in - let r698 = S (T T_COLON) :: r697 in - let r699 = [R 515] in - let r700 = Sub (r85) :: r699 in - let r701 = [R 113] in - let r702 = Sub (r79) :: r701 in - let r703 = S (T T_COLONCOLON) :: r351 in - let r704 = [R 213] in - let r705 = [R 214] in - let r706 = Sub (r79) :: r705 in - let r707 = [R 212] in - let r708 = Sub (r79) :: r707 in - let r709 = [R 211] in - let r710 = Sub (r79) :: r709 in - let r711 = [R 508] in - let r712 = [R 538] in - let r713 = Sub (r134) :: r712 in - let r714 = [R 598] in - let r715 = R 288 :: r714 in - let r716 = Sub (r713) :: r715 in - let r717 = R 518 :: r716 in - let r718 = S (T T_PLUSEQ) :: r717 in - let r719 = Sub (r126) :: r718 in - let r720 = R 782 :: r719 in - let r721 = R 282 :: r720 in - let r722 = [R 599] in - let r723 = R 288 :: r722 in - let r724 = Sub (r713) :: r723 in - let r725 = R 518 :: r724 in - let r726 = S (T T_PLUSEQ) :: r725 in - let r727 = Sub (r126) :: r726 in - let r728 = [R 218] in - let r729 = R 288 :: r728 in - let r730 = R 541 :: r729 in - let r731 = [R 405] in - let r732 = S (T T_RBRACE) :: r731 in - let r733 = [R 215] in - let r734 = R 282 :: r733 in - let r735 = R 209 :: r734 in - let r736 = Sub (r130) :: r735 in - let r737 = [R 403] in - let r738 = [R 404] in - let r739 = [R 408] in - let r740 = S (T T_RBRACE) :: r739 in - let r741 = [R 407] in - let r742 = S (T T_RBRACE) :: r741 in - let r743 = [R 217] in - let r744 = R 288 :: r743 in - let r745 = R 541 :: r744 in - let r746 = [R 291] in - let r747 = [R 411] in - let r748 = R 288 :: r747 in - let r749 = Sub (r285) :: r748 in - let r750 = R 282 :: r749 in - let r751 = [R 412] in - let r752 = R 288 :: r751 in - let r753 = Sub (r285) :: r752 in - let r754 = R 282 :: r753 in - let r755 = [R 356] in - let r756 = S (N N_module_type) :: r755 in - let r757 = S (T T_COLON) :: r756 in - let r758 = [R 601] in - let r759 = R 288 :: r758 in - let r760 = Sub (r757) :: r759 in - let r761 = Sub (r63) :: r760 in - let r762 = R 282 :: r761 in - let r763 = [R 381] in - let r764 = R 288 :: r763 in - let r765 = S (N N_module_type) :: r764 in - let r766 = S (T T_COLONEQUAL) :: r765 in - let r767 = Sub (r105) :: r766 in - let r768 = R 282 :: r767 in - let r769 = [R 369] in - let r770 = R 288 :: r769 in - let r771 = [R 604] in - let r772 = R 280 :: r771 in - let r773 = R 288 :: r772 in - let r774 = S (N N_module_type) :: r773 in - let r775 = S (T T_COLON) :: r774 in - let r776 = [R 281] in - let r777 = R 280 :: r776 in - let r778 = R 288 :: r777 in - let r779 = S (N N_module_type) :: r778 in - let r780 = S (T T_COLON) :: r779 in - let r781 = Sub (r63) :: r780 in - let r782 = S (T T_UIDENT) :: r26 in - let r783 = Sub (r782) :: r219 in - let r784 = [R 602] in - let r785 = R 288 :: r784 in - let r786 = [R 357] in - let r787 = [R 608] in - let r788 = R 288 :: r787 in + let r429 = [R 378] in + let r430 = S (N N_module_type) :: r429 in + let r431 = S (T T_MINUSGREATER) :: r430 in + let r432 = S (N N_functor_args) :: r431 in + let r433 = [R 349] in + let r434 = Sub (r111) :: r433 in + let r435 = [R 389] in + let r436 = Sub (r434) :: r435 in + let r437 = [R 831] in + let r438 = S (N N_module_type) :: r437 in + let r439 = S (T T_EQUAL) :: r438 in + let r440 = Sub (r436) :: r439 in + let r441 = S (T T_TYPE) :: r440 in + let r442 = S (T T_MODULE) :: r441 in + let r443 = [R 569] in + let r444 = Sub (r442) :: r443 in + let r445 = [R 385] in + let r446 = [R 828] in + let r447 = Sub (r91) :: r446 in + let r448 = S (T T_COLONEQUAL) :: r447 in + let r449 = Sub (r258) :: r448 in + let r450 = [R 827] in + let r451 = R 552 :: r450 in + let r452 = [R 553] in + let r453 = Sub (r93) :: r452 in + let r454 = S (T T_EQUAL) :: r453 in + let r455 = [R 350] in + let r456 = Sub (r111) :: r455 in + let r457 = [R 832] in + let r458 = [R 384] in + let r459 = [R 829] in + let r460 = Sub (r293) :: r459 in + let r461 = S (T T_UIDENT) :: r224 in + let r462 = [R 830] in + let r463 = [R 570] in + let r464 = [R 371] in + let r465 = [R 477] in + let r466 = S (T T_RPAREN) :: r465 in + let r467 = [R 587] in + let r468 = S (N N_expr) :: r467 in + let r469 = [R 672] in + let r470 = S (T T_RBRACKET) :: r469 in + let r471 = [R 657] in + let r472 = [R 590] in + let r473 = R 465 :: r472 in + let r474 = [R 466] in + let r475 = [R 596] in + let r476 = R 465 :: r475 in + let r477 = R 473 :: r476 in + let r478 = Sub (r258) :: r477 in + let r479 = [R 538] in + let r480 = Sub (r478) :: r479 in + let r481 = [R 666] in + let r482 = S (T T_RBRACE) :: r481 in + let r483 = [R 632] in + let r484 = [R 631] in + let r485 = S (T T_GREATERDOT) :: r484 in + let r486 = [R 160] in + let r487 = Sub (r1) :: r486 in + let r488 = R 289 :: r487 in + let r489 = [R 645] in + let r490 = S (T T_END) :: r489 in + let r491 = R 289 :: r490 in + let r492 = [R 156] in + let r493 = S (N N_expr) :: r492 in + let r494 = S (T T_THEN) :: r493 in + let r495 = Sub (r7) :: r494 in + let r496 = R 289 :: r495 in + let r497 = [R 600] in + let r498 = Sub (r42) :: r497 in + let r499 = R 289 :: r498 in + let r500 = [R 565] in + let r501 = [R 323] in + let r502 = Sub (r7) :: r501 in + let r503 = S (T T_MINUSGREATER) :: r502 in + let r504 = [R 257] in + let r505 = Sub (r331) :: r504 in + let r506 = [R 203] in + let r507 = Sub (r505) :: r506 in + let r508 = [R 554] in + let r509 = Sub (r507) :: r508 in + let r510 = [R 204] in + let r511 = Sub (r509) :: r510 in + let r512 = [R 146] in + let r513 = Sub (r5) :: r512 in + let r514 = [R 152] in + let r515 = Sub (r513) :: r514 in + let r516 = S (T T_MINUSGREATER) :: r515 in + let r517 = R 461 :: r516 in + let r518 = Sub (r511) :: r517 in + let r519 = R 289 :: r518 in + let r520 = [R 462] in + let r521 = [R 145] in + let r522 = Sub (r42) :: r521 in + let r523 = R 289 :: r522 in + let r524 = [R 566] in + let r525 = [R 132] in + let r526 = S (T T_DONE) :: r525 in + let r527 = Sub (r7) :: r526 in + let r528 = S (T T_DO) :: r527 in + let r529 = Sub (r7) :: r528 in + let r530 = S (T T_IN) :: r529 in + let r531 = S (N N_pattern) :: r530 in + let r532 = R 289 :: r531 in + let r533 = [R 123] in + let r534 = S (T T_DOWNTO) :: r533 in + let r535 = [R 158] in + let r536 = S (T T_DONE) :: r535 in + let r537 = Sub (r7) :: r536 in + let r538 = S (T T_DO) :: r537 in + let r539 = Sub (r7) :: r538 in + let r540 = Sub (r534) :: r539 in + let r541 = Sub (r7) :: r540 in + let r542 = S (T T_EQUAL) :: r541 in + let r543 = S (N N_pattern) :: r542 in + let r544 = R 289 :: r543 in + let r545 = [R 655] in + let r546 = [R 665] in + let r547 = S (T T_RPAREN) :: r546 in + let r548 = S (T T_LPAREN) :: r547 in + let r549 = S (T T_DOT) :: r548 in + let r550 = [R 675] in + let r551 = S (T T_RPAREN) :: r550 in + let r552 = S (N N_module_type) :: r551 in + let r553 = S (T T_COLON) :: r552 in + let r554 = S (N N_module_expr) :: r553 in + let r555 = R 289 :: r554 in + let r556 = [R 275] in + let r557 = Sub (r7) :: r556 in + let r558 = S (T T_EQUAL) :: r557 in + let r559 = [R 159] in + let r560 = Sub (r1) :: r559 in + let r561 = R 289 :: r560 in + let r562 = [R 662] in + let r563 = [R 638] in + let r564 = S (T T_RPAREN) :: r563 in + let r565 = Sub (r468) :: r564 in + let r566 = S (T T_LPAREN) :: r565 in + let r567 = [R 134] in + let r568 = Sub (r42) :: r567 in + let r569 = R 289 :: r568 in + let r570 = [R 185] in + let r571 = [R 246] in + let r572 = [R 785] in + let r573 = Sub (r93) :: r572 in + let r574 = S (T T_COLON) :: r573 in + let r575 = [R 247] in + let r576 = S (T T_RPAREN) :: r575 in + let r577 = Sub (r574) :: r576 in + let r578 = [R 787] in + let r579 = [R 786] in + let r580 = [R 248] in + let r581 = [R 249] in + let r582 = [R 661] in + let r583 = [R 658] in + let r584 = Sub (r258) :: r583 in + let r585 = [R 635] in + let r586 = S (T T_RPAREN) :: r585 in + let r587 = Sub (r7) :: r586 in + let r588 = [R 581] in + let r589 = [R 124] in + let r590 = Sub (r7) :: r589 in + let r591 = [R 187] in + let r592 = Sub (r7) :: r591 in + let r593 = [R 175] in + let r594 = [R 172] in + let r595 = [R 186] in + let r596 = [R 171] in + let r597 = [R 170] in + let r598 = [R 176] in + let r599 = [R 180] in + let r600 = [R 174] in + let r601 = [R 173] in + let r602 = [R 178] in + let r603 = [R 169] in + let r604 = [R 168] in + let r605 = [R 167] in + let r606 = [R 166] in + let r607 = [R 165] in + let r608 = [R 179] in + let r609 = [R 177] in + let r610 = [R 184] in + let r611 = [R 582] in + let r612 = S (N N_expr) :: r611 in + let r613 = [R 189] in + let r614 = [R 181] in + let r615 = [R 182] in + let r616 = [R 183] in + let r617 = [R 208] in + let r618 = Sub (r7) :: r617 in + let r619 = [R 19] in + let r620 = R 295 :: r619 in + let r621 = Sub (r245) :: r620 in + let r622 = [R 265] in + let r623 = Sub (r7) :: r622 in + let r624 = S (T T_EQUAL) :: r623 in + let r625 = [R 264] in + let r626 = Sub (r7) :: r625 in + let r627 = [R 504] in + let r628 = [R 510] in + let r629 = [R 515] in + let r630 = [R 513] in + let r631 = [R 503] in + let r632 = [R 527] in + let r633 = S (T T_RBRACKET) :: r632 in + let r634 = Sub (r23) :: r633 in + let r635 = [R 521] in + let r636 = [R 522] in + let r637 = [R 360] in + let r638 = S (N N_module_expr) :: r637 in + let r639 = S (T T_EQUAL) :: r638 in + let r640 = [R 761] in + let r641 = R 295 :: r640 in + let r642 = Sub (r639) :: r641 in + let r643 = Sub (r69) :: r642 in + let r644 = R 289 :: r643 in + let r645 = [R 387] in + let r646 = R 295 :: r645 in + let r647 = R 467 :: r646 in + let r648 = Sub (r111) :: r647 in + let r649 = R 289 :: r648 in + let r650 = R 135 :: r649 in + let r651 = [R 468] in + let r652 = [R 296] in + let r653 = [R 762] in + let r654 = R 285 :: r653 in + let r655 = R 295 :: r654 in + let r656 = Sub (r639) :: r655 in + let r657 = [R 361] in + let r658 = S (N N_module_expr) :: r657 in + let r659 = S (T T_EQUAL) :: r658 in + let r660 = [R 286] in + let r661 = R 285 :: r660 in + let r662 = R 295 :: r661 in + let r663 = Sub (r639) :: r662 in + let r664 = Sub (r69) :: r663 in + let r665 = [R 362] in + let r666 = [R 234] in + let r667 = S (T T_RBRACKET) :: r666 in + let r668 = Sub (r21) :: r667 in + let r669 = [R 142] in + let r670 = S (T T_RBRACKET) :: r669 in + let r671 = Sub (r23) :: r670 in + let r672 = [R 767] in + let r673 = R 295 :: r672 in + let r674 = S (N N_module_expr) :: r673 in + let r675 = R 289 :: r674 in + let r676 = [R 400] in + let r677 = S (T T_STRING) :: r676 in + let r678 = [R 528] in + let r679 = R 295 :: r678 in + let r680 = Sub (r677) :: r679 in + let r681 = S (T T_EQUAL) :: r680 in + let r682 = Sub (r95) :: r681 in + let r683 = S (T T_COLON) :: r682 in + let r684 = Sub (r83) :: r683 in + let r685 = R 289 :: r684 in + let r686 = [R 524] in + let r687 = Sub (r93) :: r686 in + let r688 = [R 563] in + let r689 = Sub (r134) :: r357 in + let r690 = [R 746] in + let r691 = R 295 :: r690 in + let r692 = R 289 :: r691 in + let r693 = Sub (r689) :: r692 in + let r694 = S (T T_EQUAL) :: r693 in + let r695 = Sub (r136) :: r694 in + let r696 = R 289 :: r695 in + let r697 = [R 601] in + let r698 = R 295 :: r697 in + let r699 = R 289 :: r698 in + let r700 = R 216 :: r699 in + let r701 = Sub (r136) :: r700 in + let r702 = R 289 :: r701 in + let r703 = R 135 :: r702 in + let r704 = [R 103] in + let r705 = Sub (r85) :: r704 in + let r706 = [R 217] in + let r707 = [R 236] in + let r708 = R 289 :: r707 in + let r709 = Sub (r194) :: r708 in + let r710 = S (T T_COLON) :: r709 in + let r711 = S (T T_LIDENT) :: r710 in + let r712 = R 390 :: r711 in + let r713 = [R 238] in + let r714 = Sub (r712) :: r713 in + let r715 = [R 105] in + let r716 = S (T T_RBRACE) :: r715 in + let r717 = [R 237] in + let r718 = R 289 :: r717 in + let r719 = S (T T_SEMI) :: r718 in + let r720 = R 289 :: r719 in + let r721 = Sub (r194) :: r720 in + let r722 = S (T T_COLON) :: r721 in + let r723 = [R 526] in + let r724 = Sub (r91) :: r723 in + let r725 = [R 104] in + let r726 = Sub (r85) :: r725 in + let r727 = S (T T_COLONCOLON) :: r366 in + let r728 = [R 220] in + let r729 = [R 221] in + let r730 = Sub (r85) :: r729 in + let r731 = [R 219] in + let r732 = Sub (r85) :: r731 in + let r733 = [R 218] in + let r734 = Sub (r85) :: r733 in + let r735 = [R 519] in + let r736 = [R 549] in + let r737 = Sub (r140) :: r736 in + let r738 = [R 609] in + let r739 = R 295 :: r738 in + let r740 = Sub (r737) :: r739 in + let r741 = R 529 :: r740 in + let r742 = S (T T_PLUSEQ) :: r741 in + let r743 = Sub (r132) :: r742 in + let r744 = R 792 :: r743 in + let r745 = R 289 :: r744 in + let r746 = [R 610] in + let r747 = R 295 :: r746 in + let r748 = Sub (r737) :: r747 in + let r749 = R 529 :: r748 in + let r750 = S (T T_PLUSEQ) :: r749 in + let r751 = Sub (r132) :: r750 in + let r752 = [R 225] in + let r753 = R 295 :: r752 in + let r754 = R 552 :: r753 in + let r755 = [R 412] in + let r756 = S (T T_RBRACE) :: r755 in + let r757 = [R 222] in + let r758 = R 289 :: r757 in + let r759 = R 216 :: r758 in + let r760 = Sub (r136) :: r759 in + let r761 = [R 410] in + let r762 = [R 411] in + let r763 = [R 415] in + let r764 = S (T T_RBRACE) :: r763 in + let r765 = [R 414] in + let r766 = S (T T_RBRACE) :: r765 in + let r767 = [R 224] in + let r768 = R 295 :: r767 in + let r769 = R 552 :: r768 in + let r770 = [R 298] in + let r771 = [R 420] in + let r772 = R 295 :: r771 in + let r773 = Sub (r293) :: r772 in + let r774 = R 289 :: r773 in + let r775 = [R 421] in + let r776 = R 295 :: r775 in + let r777 = Sub (r293) :: r776 in + let r778 = R 289 :: r777 in + let r779 = [R 363] in + let r780 = S (N N_module_type) :: r779 in + let r781 = S (T T_COLON) :: r780 in + let r782 = [R 612] in + let r783 = R 295 :: r782 in + let r784 = Sub (r781) :: r783 in + let r785 = Sub (r69) :: r784 in + let r786 = R 289 :: r785 in + let r787 = [R 388] in + let r788 = R 295 :: r787 in let r789 = S (N N_module_type) :: r788 in - let r790 = R 282 :: r789 in - let r791 = S (T T_QUOTED_STRING_EXPR) :: r41 in - let r792 = [R 80] in - let r793 = Sub (r791) :: r792 in - let r794 = [R 90] in - let r795 = Sub (r793) :: r794 in - let r796 = [R 609] in - let r797 = R 274 :: r796 in - let r798 = R 288 :: r797 in - let r799 = Sub (r795) :: r798 in - let r800 = S (T T_COLON) :: r799 in - let r801 = S (T T_LIDENT) :: r800 in - let r802 = R 194 :: r801 in - let r803 = R 809 :: r802 in - let r804 = R 282 :: r803 in - let r805 = [R 94] in - let r806 = R 276 :: r805 in - let r807 = R 288 :: r806 in - let r808 = Sub (r793) :: r807 in - let r809 = S (T T_EQUAL) :: r808 in - let r810 = S (T T_LIDENT) :: r809 in - let r811 = R 194 :: r810 in - let r812 = R 809 :: r811 in - let r813 = R 282 :: r812 in - let r814 = [R 195] in - let r815 = S (T T_RBRACKET) :: r814 in - let r816 = [R 81] in - let r817 = S (T T_END) :: r816 in - let r818 = R 297 :: r817 in - let r819 = R 71 :: r818 in - let r820 = [R 70] in - let r821 = S (T T_RPAREN) :: r820 in - let r822 = [R 73] in - let r823 = R 288 :: r822 in - let r824 = Sub (r87) :: r823 in - let r825 = S (T T_COLON) :: r824 in - let r826 = S (T T_LIDENT) :: r825 in - let r827 = R 385 :: r826 in - let r828 = [R 74] in - let r829 = R 288 :: r828 in - let r830 = Sub (r89) :: r829 in - let r831 = S (T T_COLON) :: r830 in - let r832 = S (T T_LIDENT) :: r831 in - let r833 = R 520 :: r832 in - let r834 = [R 72] in - let r835 = R 288 :: r834 in - let r836 = Sub (r793) :: r835 in - let r837 = [R 83] in - let r838 = Sub (r793) :: r837 in - let r839 = S (T T_IN) :: r838 in - let r840 = Sub (r783) :: r839 in - let r841 = R 282 :: r840 in - let r842 = [R 84] in - let r843 = Sub (r793) :: r842 in - let r844 = S (T T_IN) :: r843 in - let r845 = Sub (r783) :: r844 in - let r846 = [R 560] in - let r847 = Sub (r87) :: r846 in - let r848 = [R 79] in - let r849 = Sub (r276) :: r848 in - let r850 = S (T T_RBRACKET) :: r849 in - let r851 = Sub (r847) :: r850 in - let r852 = [R 561] in - let r853 = [R 111] in - let r854 = Sub (r87) :: r853 in - let r855 = S (T T_EQUAL) :: r854 in - let r856 = Sub (r87) :: r855 in - let r857 = [R 75] in - let r858 = R 288 :: r857 in - let r859 = Sub (r856) :: r858 in - let r860 = [R 76] in - let r861 = [R 298] in - let r862 = [R 277] in - let r863 = R 276 :: r862 in - let r864 = R 288 :: r863 in - let r865 = Sub (r793) :: r864 in - let r866 = S (T T_EQUAL) :: r865 in - let r867 = S (T T_LIDENT) :: r866 in - let r868 = R 194 :: r867 in - let r869 = R 809 :: r868 in - let r870 = [R 92] in - let r871 = Sub (r795) :: r870 in - let r872 = S (T T_MINUSGREATER) :: r871 in - let r873 = Sub (r81) :: r872 in - let r874 = [R 93] in - let r875 = Sub (r795) :: r874 in - let r876 = [R 91] in - let r877 = Sub (r795) :: r876 in - let r878 = S (T T_MINUSGREATER) :: r877 in - let r879 = [R 275] in - let r880 = R 274 :: r879 in - let r881 = R 288 :: r880 in - let r882 = Sub (r795) :: r881 in - let r883 = S (T T_COLON) :: r882 in - let r884 = S (T T_LIDENT) :: r883 in - let r885 = R 194 :: r884 in - let r886 = R 809 :: r885 in - let r887 = [R 292] in - let r888 = [R 592] in - let r889 = [R 596] in - let r890 = [R 285] in - let r891 = R 284 :: r890 in - let r892 = R 288 :: r891 in - let r893 = R 541 :: r892 in - let r894 = R 778 :: r893 in - let r895 = S (T T_LIDENT) :: r894 in - let r896 = R 782 :: r895 in - let r897 = [R 597] in - let r898 = [R 287] in - let r899 = R 286 :: r898 in - let r900 = R 288 :: r899 in - let r901 = R 541 :: r900 in - let r902 = Sub (r177) :: r901 in - let r903 = S (T T_COLONEQUAL) :: r902 in - let r904 = S (T T_LIDENT) :: r903 in - let r905 = R 782 :: r904 in - let r906 = [R 52] in - let r907 = Sub (r791) :: r906 in - let r908 = [R 61] in - let r909 = Sub (r907) :: r908 in - let r910 = S (T T_EQUAL) :: r909 in - let r911 = [R 755] in - let r912 = R 272 :: r911 in - let r913 = R 288 :: r912 in - let r914 = Sub (r910) :: r913 in - let r915 = S (T T_LIDENT) :: r914 in - let r916 = R 194 :: r915 in - let r917 = R 809 :: r916 in - let r918 = R 282 :: r917 in - let r919 = [R 89] in - let r920 = S (T T_END) :: r919 in - let r921 = R 299 :: r920 in - let r922 = R 69 :: r921 in - let r923 = [R 804] in - let r924 = Sub (r1) :: r923 in - let r925 = S (T T_EQUAL) :: r924 in - let r926 = S (T T_LIDENT) :: r925 in - let r927 = R 383 :: r926 in - let r928 = R 282 :: r927 in - let r929 = [R 55] in - let r930 = R 288 :: r929 in - let r931 = [R 805] in - let r932 = Sub (r1) :: r931 in - let r933 = S (T T_EQUAL) :: r932 in - let r934 = S (T T_LIDENT) :: r933 in - let r935 = R 383 :: r934 in - let r936 = [R 807] in - let r937 = Sub (r1) :: r936 in - let r938 = [R 803] in - let r939 = Sub (r87) :: r938 in - let r940 = S (T T_COLON) :: r939 in - let r941 = [R 806] in - let r942 = Sub (r1) :: r941 in - let r943 = [R 326] in - let r944 = Sub (r382) :: r943 in - let r945 = S (T T_LIDENT) :: r944 in - let r946 = R 518 :: r945 in - let r947 = R 282 :: r946 in - let r948 = [R 56] in - let r949 = R 288 :: r948 in - let r950 = [R 327] in - let r951 = Sub (r382) :: r950 in - let r952 = S (T T_LIDENT) :: r951 in - let r953 = R 518 :: r952 in - let r954 = [R 329] in - let r955 = Sub (r1) :: r954 in - let r956 = S (T T_EQUAL) :: r955 in - let r957 = [R 331] in - let r958 = Sub (r1) :: r957 in - let r959 = S (T T_EQUAL) :: r958 in - let r960 = Sub (r87) :: r959 in - let r961 = S (T T_DOT) :: r960 in - let r962 = [R 737] in - let r963 = [R 197] in - let r964 = Sub (r1) :: r963 in - let r965 = [R 325] in - let r966 = Sub (r89) :: r965 in - let r967 = S (T T_COLON) :: r966 in - let r968 = [R 328] in - let r969 = Sub (r1) :: r968 in - let r970 = S (T T_EQUAL) :: r969 in - let r971 = [R 330] in - let r972 = Sub (r1) :: r971 in - let r973 = S (T T_EQUAL) :: r972 in - let r974 = Sub (r87) :: r973 in - let r975 = S (T T_DOT) :: r974 in - let r976 = [R 58] in - let r977 = R 288 :: r976 in - let r978 = Sub (r1) :: r977 in - let r979 = [R 53] in - let r980 = R 288 :: r979 in - let r981 = R 450 :: r980 in - let r982 = Sub (r907) :: r981 in - let r983 = [R 54] in - let r984 = R 288 :: r983 in - let r985 = R 450 :: r984 in - let r986 = Sub (r907) :: r985 in - let r987 = [R 85] in - let r988 = S (T T_RPAREN) :: r987 in - let r989 = [R 48] in - let r990 = Sub (r907) :: r989 in - let r991 = S (T T_IN) :: r990 in - let r992 = Sub (r783) :: r991 in - let r993 = R 282 :: r992 in - let r994 = [R 262] in - let r995 = R 288 :: r994 in - let r996 = Sub (r236) :: r995 in - let r997 = R 525 :: r996 in - let r998 = R 282 :: r997 in - let r999 = [R 49] in - let r1000 = Sub (r907) :: r999 in - let r1001 = S (T T_IN) :: r1000 in - let r1002 = Sub (r783) :: r1001 in - let r1003 = [R 87] in - let r1004 = Sub (r212) :: r1003 in - let r1005 = S (T T_RBRACKET) :: r1004 in - let r1006 = [R 64] in - let r1007 = Sub (r907) :: r1006 in - let r1008 = S (T T_MINUSGREATER) :: r1007 in - let r1009 = Sub (r495) :: r1008 in - let r1010 = [R 46] in - let r1011 = Sub (r1009) :: r1010 in - let r1012 = [R 47] in - let r1013 = Sub (r907) :: r1012 in - let r1014 = [R 238] in - let r1015 = [R 261] in - let r1016 = R 288 :: r1015 in - let r1017 = Sub (r236) :: r1016 in - let r1018 = [R 88] in - let r1019 = S (T T_RPAREN) :: r1018 in - let r1020 = [R 451] in - let r1021 = [R 57] in - let r1022 = R 288 :: r1021 in - let r1023 = Sub (r856) :: r1022 in - let r1024 = [R 59] in - let r1025 = [R 300] in - let r1026 = [R 62] in - let r1027 = Sub (r907) :: r1026 in - let r1028 = S (T T_EQUAL) :: r1027 in - let r1029 = [R 63] in - let r1030 = [R 273] in - let r1031 = R 272 :: r1030 in - let r1032 = R 288 :: r1031 in - let r1033 = Sub (r910) :: r1032 in - let r1034 = S (T T_LIDENT) :: r1033 in - let r1035 = R 194 :: r1034 in - let r1036 = R 809 :: r1035 in - let r1037 = [R 296] in - let r1038 = [R 743] in - let r1039 = [R 747] in - let r1040 = [R 740] in - let r1041 = R 293 :: r1040 in - let r1042 = [R 626] in - let r1043 = S (T T_RBRACKET) :: r1042 in - let r1044 = Sub (r1) :: r1043 in - let r1045 = [R 625] in - let r1046 = S (T T_RBRACE) :: r1045 in - let r1047 = Sub (r1) :: r1046 in - let r1048 = [R 628] in - let r1049 = S (T T_RPAREN) :: r1048 in - let r1050 = Sub (r458) :: r1049 in - let r1051 = S (T T_LPAREN) :: r1050 in - let r1052 = [R 632] in - let r1053 = S (T T_RBRACKET) :: r1052 in - let r1054 = Sub (r458) :: r1053 in - let r1055 = [R 630] in - let r1056 = S (T T_RBRACE) :: r1055 in - let r1057 = Sub (r458) :: r1056 in - let r1058 = [R 180] in - let r1059 = [R 631] in - let r1060 = S (T T_RBRACKET) :: r1059 in - let r1061 = Sub (r458) :: r1060 in - let r1062 = [R 184] in - let r1063 = [R 629] in - let r1064 = S (T T_RBRACE) :: r1063 in - let r1065 = Sub (r458) :: r1064 in - let r1066 = [R 182] in - let r1067 = [R 177] in - let r1068 = [R 179] in - let r1069 = [R 178] in - let r1070 = [R 181] in - let r1071 = [R 185] in - let r1072 = [R 183] in - let r1073 = [R 176] in - let r1074 = [R 269] in - let r1075 = Sub (r1) :: r1074 in - let r1076 = [R 271] in - let r1077 = [R 648] in - let r1078 = [R 660] in - let r1079 = [R 659] in - let r1080 = [R 663] in - let r1081 = [R 662] in - let r1082 = S (T T_LIDENT) :: r463 in - let r1083 = [R 649] in - let r1084 = S (T T_GREATERRBRACE) :: r1083 in - let r1085 = [R 656] in - let r1086 = S (T T_RBRACE) :: r1085 in - let r1087 = [R 528] in - let r1088 = Sub (r468) :: r1087 in - let r1089 = [R 128] in - let r1090 = S (T T_DONE) :: r1089 in - let r1091 = Sub (r1) :: r1090 in - let r1092 = S (T T_DO) :: r1091 in - let r1093 = Sub (r1) :: r1092 in - let r1094 = Sub (r515) :: r1093 in - let r1095 = [R 201] in - let r1096 = Sub (r498) :: r1095 in - let r1097 = S (T T_RPAREN) :: r1096 in - let r1098 = [R 199] in - let r1099 = Sub (r1) :: r1098 in - let r1100 = S (T T_MINUSGREATER) :: r1099 in - let r1101 = [R 200] in - let r1102 = [R 553] in - let r1103 = [R 140] in - let r1104 = [R 633] in - let r1105 = [R 645] in - let r1106 = [R 131] in - let r1107 = Sub (r1) :: r1106 in - let r1108 = S (T T_IN) :: r1107 in - let r1109 = Sub (r615) :: r1108 in - let r1110 = Sub (r63) :: r1109 in - let r1111 = R 282 :: r1110 in - let r1112 = [R 132] in - let r1113 = Sub (r1) :: r1112 in - let r1114 = S (T T_IN) :: r1113 in - let r1115 = R 282 :: r1114 in - let r1116 = R 209 :: r1115 in - let r1117 = Sub (r130) :: r1116 in - let r1118 = R 282 :: r1117 in - let r1119 = [R 256] in - let r1120 = Sub (r1) :: r1119 in - let r1121 = S (T T_EQUAL) :: r1120 in - let r1122 = Sub (r87) :: r1121 in - let r1123 = S (T T_DOT) :: r1122 in - let r1124 = [R 255] in - let r1125 = Sub (r1) :: r1124 in - let r1126 = S (T T_EQUAL) :: r1125 in - let r1127 = Sub (r87) :: r1126 in - let r1128 = [R 254] in - let r1129 = Sub (r1) :: r1128 in - let r1130 = [R 657] in - let r1131 = [R 636] in - let r1132 = S (T T_RPAREN) :: r1131 in - let r1133 = S (N N_module_expr) :: r1132 in - let r1134 = R 282 :: r1133 in - let r1135 = [R 637] in - let r1136 = S (T T_RPAREN) :: r1135 in - let r1137 = [R 623] in - let r1138 = [R 471] in - let r1139 = S (T T_RPAREN) :: r1138 in - let r1140 = [R 469] in - let r1141 = S (T T_RPAREN) :: r1140 in - let r1142 = [R 470] in - let r1143 = S (T T_RPAREN) :: r1142 in - let r1144 = [R 295] in - let r1145 = R 293 :: r1144 in - let r1146 = [R 320] in - let r1147 = [R 29] in - let r1148 = [R 28] in - let r1149 = Sub (r126) :: r1148 in - let r1150 = [R 33] in - let r1151 = [R 566] in - let r1152 = [R 22] in - let r1153 = [R 567] in - let r1154 = [R 406] in - let r1155 = S (T T_RBRACE) :: r1154 in - let r1156 = [R 191] in - let r1157 = R 282 :: r1156 in - let r1158 = [R 192] in - let r1159 = R 282 :: r1158 in - let r1160 = [R 68] in - let r1161 = S (T T_RPAREN) :: r1160 in - let r1162 = [R 124] in - let r1163 = [R 126] in - let r1164 = [R 125] in - let r1165 = [R 223] in - let r1166 = [R 226] in - let r1167 = [R 337] in - let r1168 = [R 340] in - let r1169 = S (T T_RPAREN) :: r1168 in - let r1170 = S (T T_COLONCOLON) :: r1169 in - let r1171 = S (T T_LPAREN) :: r1170 in - let r1172 = [R 472] in - let r1173 = [R 473] in - let r1174 = [R 474] in - let r1175 = [R 475] in - let r1176 = [R 476] in - let r1177 = [R 477] in - let r1178 = [R 478] in - let r1179 = [R 479] in - let r1180 = [R 480] in - let r1181 = [R 481] in - let r1182 = [R 482] in - let r1183 = [R 762] in - let r1184 = [R 771] in - let r1185 = [R 302] in - let r1186 = [R 769] in - let r1187 = S (T T_SEMISEMI) :: r1186 in - let r1188 = [R 770] in - let r1189 = [R 304] in - let r1190 = [R 307] in - let r1191 = [R 306] in - let r1192 = [R 305] in - let r1193 = R 303 :: r1192 in - let r1194 = [R 798] in - let r1195 = S (T T_EOF) :: r1194 in - let r1196 = R 303 :: r1195 in - let r1197 = [R 797] in + let r790 = S (T T_COLONEQUAL) :: r789 in + let r791 = Sub (r111) :: r790 in + let r792 = R 289 :: r791 in + let r793 = [R 376] in + let r794 = R 295 :: r793 in + let r795 = [R 615] in + let r796 = R 287 :: r795 in + let r797 = R 295 :: r796 in + let r798 = S (N N_module_type) :: r797 in + let r799 = S (T T_COLON) :: r798 in + let r800 = [R 288] in + let r801 = R 287 :: r800 in + let r802 = R 295 :: r801 in + let r803 = S (N N_module_type) :: r802 in + let r804 = S (T T_COLON) :: r803 in + let r805 = Sub (r69) :: r804 in + let r806 = S (T T_UIDENT) :: r33 in + let r807 = Sub (r806) :: r225 in + let r808 = [R 613] in + let r809 = R 295 :: r808 in + let r810 = [R 364] in + let r811 = [R 619] in + let r812 = R 295 :: r811 in + let r813 = S (N N_module_type) :: r812 in + let r814 = R 289 :: r813 in + let r815 = S (T T_QUOTED_STRING_EXPR) :: r48 in + let r816 = [R 71] in + let r817 = Sub (r815) :: r816 in + let r818 = [R 81] in + let r819 = Sub (r817) :: r818 in + let r820 = [R 620] in + let r821 = R 281 :: r820 in + let r822 = R 295 :: r821 in + let r823 = Sub (r819) :: r822 in + let r824 = S (T T_COLON) :: r823 in + let r825 = S (T T_LIDENT) :: r824 in + let r826 = R 143 :: r825 in + let r827 = R 819 :: r826 in + let r828 = R 289 :: r827 in + let r829 = [R 85] in + let r830 = R 283 :: r829 in + let r831 = R 295 :: r830 in + let r832 = Sub (r817) :: r831 in + let r833 = S (T T_EQUAL) :: r832 in + let r834 = S (T T_LIDENT) :: r833 in + let r835 = R 143 :: r834 in + let r836 = R 819 :: r835 in + let r837 = R 289 :: r836 in + let r838 = [R 144] in + let r839 = S (T T_RBRACKET) :: r838 in + let r840 = [R 72] in + let r841 = S (T T_END) :: r840 in + let r842 = R 304 :: r841 in + let r843 = R 62 :: r842 in + let r844 = [R 61] in + let r845 = S (T T_RPAREN) :: r844 in + let r846 = [R 64] in + let r847 = R 295 :: r846 in + let r848 = Sub (r93) :: r847 in + let r849 = S (T T_COLON) :: r848 in + let r850 = S (T T_LIDENT) :: r849 in + let r851 = R 392 :: r850 in + let r852 = [R 65] in + let r853 = R 295 :: r852 in + let r854 = Sub (r95) :: r853 in + let r855 = S (T T_COLON) :: r854 in + let r856 = S (T T_LIDENT) :: r855 in + let r857 = R 531 :: r856 in + let r858 = [R 63] in + let r859 = R 295 :: r858 in + let r860 = Sub (r817) :: r859 in + let r861 = [R 74] in + let r862 = Sub (r817) :: r861 in + let r863 = S (T T_IN) :: r862 in + let r864 = Sub (r807) :: r863 in + let r865 = R 289 :: r864 in + let r866 = [R 75] in + let r867 = Sub (r817) :: r866 in + let r868 = S (T T_IN) :: r867 in + let r869 = Sub (r807) :: r868 in + let r870 = [R 573] in + let r871 = Sub (r93) :: r870 in + let r872 = [R 70] in + let r873 = Sub (r286) :: r872 in + let r874 = S (T T_RBRACKET) :: r873 in + let r875 = Sub (r871) :: r874 in + let r876 = [R 574] in + let r877 = [R 102] in + let r878 = Sub (r93) :: r877 in + let r879 = S (T T_EQUAL) :: r878 in + let r880 = Sub (r93) :: r879 in + let r881 = [R 66] in + let r882 = R 295 :: r881 in + let r883 = Sub (r880) :: r882 in + let r884 = [R 67] in + let r885 = [R 305] in + let r886 = [R 284] in + let r887 = R 283 :: r886 in + let r888 = R 295 :: r887 in + let r889 = Sub (r817) :: r888 in + let r890 = S (T T_EQUAL) :: r889 in + let r891 = S (T T_LIDENT) :: r890 in + let r892 = R 143 :: r891 in + let r893 = R 819 :: r892 in + let r894 = [R 83] in + let r895 = Sub (r819) :: r894 in + let r896 = S (T T_MINUSGREATER) :: r895 in + let r897 = Sub (r87) :: r896 in + let r898 = [R 84] in + let r899 = Sub (r819) :: r898 in + let r900 = [R 82] in + let r901 = Sub (r819) :: r900 in + let r902 = S (T T_MINUSGREATER) :: r901 in + let r903 = [R 282] in + let r904 = R 281 :: r903 in + let r905 = R 295 :: r904 in + let r906 = Sub (r819) :: r905 in + let r907 = S (T T_COLON) :: r906 in + let r908 = S (T T_LIDENT) :: r907 in + let r909 = R 143 :: r908 in + let r910 = R 819 :: r909 in + let r911 = [R 299] in + let r912 = [R 603] in + let r913 = [R 607] in + let r914 = [R 292] in + let r915 = R 291 :: r914 in + let r916 = R 295 :: r915 in + let r917 = R 552 :: r916 in + let r918 = R 788 :: r917 in + let r919 = S (T T_LIDENT) :: r918 in + let r920 = R 792 :: r919 in + let r921 = [R 608] in + let r922 = [R 294] in + let r923 = R 293 :: r922 in + let r924 = R 295 :: r923 in + let r925 = R 552 :: r924 in + let r926 = Sub (r183) :: r925 in + let r927 = S (T T_COLONEQUAL) :: r926 in + let r928 = S (T T_LIDENT) :: r927 in + let r929 = R 792 :: r928 in + let r930 = [R 43] in + let r931 = Sub (r815) :: r930 in + let r932 = [R 52] in + let r933 = Sub (r931) :: r932 in + let r934 = S (T T_EQUAL) :: r933 in + let r935 = [R 765] in + let r936 = R 279 :: r935 in + let r937 = R 295 :: r936 in + let r938 = Sub (r934) :: r937 in + let r939 = S (T T_LIDENT) :: r938 in + let r940 = R 143 :: r939 in + let r941 = R 819 :: r940 in + let r942 = R 289 :: r941 in + let r943 = [R 80] in + let r944 = S (T T_END) :: r943 in + let r945 = R 306 :: r944 in + let r946 = R 60 :: r945 in + let r947 = [R 814] in + let r948 = Sub (r7) :: r947 in + let r949 = S (T T_EQUAL) :: r948 in + let r950 = S (T T_LIDENT) :: r949 in + let r951 = R 390 :: r950 in + let r952 = R 289 :: r951 in + let r953 = [R 46] in + let r954 = R 295 :: r953 in + let r955 = [R 815] in + let r956 = Sub (r7) :: r955 in + let r957 = S (T T_EQUAL) :: r956 in + let r958 = S (T T_LIDENT) :: r957 in + let r959 = R 390 :: r958 in + let r960 = [R 817] in + let r961 = Sub (r7) :: r960 in + let r962 = [R 813] in + let r963 = Sub (r93) :: r962 in + let r964 = S (T T_COLON) :: r963 in + let r965 = [R 816] in + let r966 = Sub (r7) :: r965 in + let r967 = S (T T_EQUAL) :: r399 in + let r968 = [R 333] in + let r969 = Sub (r967) :: r968 in + let r970 = S (T T_LIDENT) :: r969 in + let r971 = R 529 :: r970 in + let r972 = R 289 :: r971 in + let r973 = [R 47] in + let r974 = R 295 :: r973 in + let r975 = [R 334] in + let r976 = Sub (r967) :: r975 in + let r977 = S (T T_LIDENT) :: r976 in + let r978 = R 529 :: r977 in + let r979 = [R 336] in + let r980 = Sub (r7) :: r979 in + let r981 = S (T T_EQUAL) :: r980 in + let r982 = [R 338] in + let r983 = Sub (r7) :: r982 in + let r984 = S (T T_EQUAL) :: r983 in + let r985 = Sub (r93) :: r984 in + let r986 = S (T T_DOT) :: r985 in + let r987 = [R 748] in + let r988 = Sub (r513) :: r987 in + let r989 = S (T T_EQUAL) :: r988 in + let r990 = [R 332] in + let r991 = Sub (r95) :: r990 in + let r992 = S (T T_COLON) :: r991 in + let r993 = [R 335] in + let r994 = Sub (r7) :: r993 in + let r995 = S (T T_EQUAL) :: r994 in + let r996 = [R 337] in + let r997 = Sub (r7) :: r996 in + let r998 = S (T T_EQUAL) :: r997 in + let r999 = Sub (r93) :: r998 in + let r1000 = S (T T_DOT) :: r999 in + let r1001 = [R 49] in + let r1002 = R 295 :: r1001 in + let r1003 = Sub (r7) :: r1002 in + let r1004 = [R 44] in + let r1005 = R 295 :: r1004 in + let r1006 = R 459 :: r1005 in + let r1007 = Sub (r931) :: r1006 in + let r1008 = [R 45] in + let r1009 = R 295 :: r1008 in + let r1010 = R 459 :: r1009 in + let r1011 = Sub (r931) :: r1010 in + let r1012 = [R 76] in + let r1013 = S (T T_RPAREN) :: r1012 in + let r1014 = [R 39] in + let r1015 = Sub (r931) :: r1014 in + let r1016 = S (T T_IN) :: r1015 in + let r1017 = Sub (r807) :: r1016 in + let r1018 = R 289 :: r1017 in + let r1019 = [R 269] in + let r1020 = R 295 :: r1019 in + let r1021 = Sub (r245) :: r1020 in + let r1022 = R 536 :: r1021 in + let r1023 = R 289 :: r1022 in + let r1024 = [R 40] in + let r1025 = Sub (r931) :: r1024 in + let r1026 = S (T T_IN) :: r1025 in + let r1027 = Sub (r807) :: r1026 in + let r1028 = [R 78] in + let r1029 = Sub (r218) :: r1028 in + let r1030 = S (T T_RBRACKET) :: r1029 in + let r1031 = [R 55] in + let r1032 = Sub (r931) :: r1031 in + let r1033 = S (T T_MINUSGREATER) :: r1032 in + let r1034 = Sub (r505) :: r1033 in + let r1035 = [R 37] in + let r1036 = Sub (r1034) :: r1035 in + let r1037 = [R 38] in + let r1038 = Sub (r931) :: r1037 in + let r1039 = [R 245] in + let r1040 = [R 268] in + let r1041 = R 295 :: r1040 in + let r1042 = Sub (r245) :: r1041 in + let r1043 = [R 79] in + let r1044 = S (T T_RPAREN) :: r1043 in + let r1045 = [R 460] in + let r1046 = [R 48] in + let r1047 = R 295 :: r1046 in + let r1048 = Sub (r880) :: r1047 in + let r1049 = [R 50] in + let r1050 = [R 307] in + let r1051 = [R 53] in + let r1052 = Sub (r931) :: r1051 in + let r1053 = S (T T_EQUAL) :: r1052 in + let r1054 = [R 54] in + let r1055 = [R 280] in + let r1056 = R 279 :: r1055 in + let r1057 = R 295 :: r1056 in + let r1058 = Sub (r934) :: r1057 in + let r1059 = S (T T_LIDENT) :: r1058 in + let r1060 = R 143 :: r1059 in + let r1061 = R 819 :: r1060 in + let r1062 = [R 303] in + let r1063 = [R 753] in + let r1064 = [R 757] in + let r1065 = [R 750] in + let r1066 = R 300 :: r1065 in + let r1067 = [R 637] in + let r1068 = S (T T_RBRACKET) :: r1067 in + let r1069 = Sub (r7) :: r1068 in + let r1070 = [R 636] in + let r1071 = S (T T_RBRACE) :: r1070 in + let r1072 = Sub (r7) :: r1071 in + let r1073 = [R 639] in + let r1074 = S (T T_RPAREN) :: r1073 in + let r1075 = Sub (r468) :: r1074 in + let r1076 = S (T T_LPAREN) :: r1075 in + let r1077 = [R 643] in + let r1078 = S (T T_RBRACKET) :: r1077 in + let r1079 = Sub (r468) :: r1078 in + let r1080 = [R 641] in + let r1081 = S (T T_RBRACE) :: r1080 in + let r1082 = Sub (r468) :: r1081 in + let r1083 = [R 195] in + let r1084 = [R 642] in + let r1085 = S (T T_RBRACKET) :: r1084 in + let r1086 = Sub (r468) :: r1085 in + let r1087 = [R 199] in + let r1088 = [R 640] in + let r1089 = S (T T_RBRACE) :: r1088 in + let r1090 = Sub (r468) :: r1089 in + let r1091 = [R 197] in + let r1092 = [R 192] in + let r1093 = [R 194] in + let r1094 = [R 193] in + let r1095 = [R 196] in + let r1096 = [R 200] in + let r1097 = [R 198] in + let r1098 = [R 191] in + let r1099 = [R 276] in + let r1100 = Sub (r7) :: r1099 in + let r1101 = [R 278] in + let r1102 = [R 659] in + let r1103 = [R 671] in + let r1104 = [R 670] in + let r1105 = [R 674] in + let r1106 = [R 673] in + let r1107 = S (T T_LIDENT) :: r473 in + let r1108 = [R 660] in + let r1109 = S (T T_GREATERRBRACE) :: r1108 in + let r1110 = [R 667] in + let r1111 = S (T T_RBRACE) :: r1110 in + let r1112 = [R 539] in + let r1113 = Sub (r478) :: r1112 in + let r1114 = [R 131] in + let r1115 = S (T T_DONE) :: r1114 in + let r1116 = Sub (r7) :: r1115 in + let r1117 = S (T T_DO) :: r1116 in + let r1118 = Sub (r7) :: r1117 in + let r1119 = Sub (r534) :: r1118 in + let r1120 = [R 155] in + let r1121 = [R 644] in + let r1122 = [R 656] in + let r1123 = [R 148] in + let r1124 = Sub (r7) :: r1123 in + let r1125 = S (T T_IN) :: r1124 in + let r1126 = Sub (r639) :: r1125 in + let r1127 = Sub (r69) :: r1126 in + let r1128 = R 289 :: r1127 in + let r1129 = [R 149] in + let r1130 = Sub (r7) :: r1129 in + let r1131 = S (T T_IN) :: r1130 in + let r1132 = R 289 :: r1131 in + let r1133 = R 216 :: r1132 in + let r1134 = Sub (r136) :: r1133 in + let r1135 = R 289 :: r1134 in + let r1136 = [R 263] in + let r1137 = Sub (r7) :: r1136 in + let r1138 = S (T T_EQUAL) :: r1137 in + let r1139 = Sub (r93) :: r1138 in + let r1140 = S (T T_DOT) :: r1139 in + let r1141 = [R 262] in + let r1142 = Sub (r7) :: r1141 in + let r1143 = S (T T_EQUAL) :: r1142 in + let r1144 = Sub (r93) :: r1143 in + let r1145 = [R 261] in + let r1146 = Sub (r7) :: r1145 in + let r1147 = [R 668] in + let r1148 = [R 648] in + let r1149 = S (T T_RPAREN) :: r1148 in + let r1150 = [R 633] in + let r1151 = [R 634] in + let r1152 = [R 482] in + let r1153 = S (T T_RPAREN) :: r1152 in + let r1154 = [R 480] in + let r1155 = S (T T_RPAREN) :: r1154 in + let r1156 = [R 481] in + let r1157 = S (T T_RPAREN) :: r1156 in + let r1158 = [R 302] in + let r1159 = R 300 :: r1158 in + let r1160 = [R 327] in + let r1161 = [R 416] in + let r1162 = [R 25] in + let r1163 = Sub (r132) :: r1162 in + let r1164 = [R 28] in + let r1165 = [R 579] in + let r1166 = [R 580] in + let r1167 = [R 413] in + let r1168 = S (T T_RBRACE) :: r1167 in + let r1169 = [R 139] in + let r1170 = R 289 :: r1169 in + let r1171 = [R 140] in + let r1172 = R 289 :: r1171 in + let r1173 = [R 59] in + let r1174 = S (T T_RPAREN) :: r1173 in + let r1175 = [R 127] in + let r1176 = [R 129] in + let r1177 = [R 128] in + let r1178 = [R 230] in + let r1179 = [R 233] in + let r1180 = [R 344] in + let r1181 = [R 347] in + let r1182 = S (T T_RPAREN) :: r1181 in + let r1183 = S (T T_COLONCOLON) :: r1182 in + let r1184 = S (T T_LPAREN) :: r1183 in + let r1185 = [R 483] in + let r1186 = [R 484] in + let r1187 = [R 485] in + let r1188 = [R 486] in + let r1189 = [R 487] in + let r1190 = [R 488] in + let r1191 = [R 489] in + let r1192 = [R 490] in + let r1193 = [R 491] in + let r1194 = [R 492] in + let r1195 = [R 493] in + let r1196 = [R 772] in + let r1197 = [R 781] in + let r1198 = [R 309] in + let r1199 = [R 779] in + let r1200 = S (T T_SEMISEMI) :: r1199 in + let r1201 = [R 780] in + let r1202 = [R 311] in + let r1203 = [R 314] in + let r1204 = [R 313] in + let r1205 = [R 312] in + let r1206 = R 310 :: r1205 in + let r1207 = [R 808] in + let r1208 = S (T T_EOF) :: r1207 in + let r1209 = R 310 :: r1208 in + let r1210 = [R 807] in function - | 0 | 1763 | 1767 | 1785 | 1789 | 1793 | 1797 | 1801 | 1805 | 1809 | 1813 | 1817 | 1821 | 1827 | 1847 -> Nothing - | 1762 -> One ([R 0]) - | 1766 -> One ([R 1]) - | 1772 -> One ([R 2]) - | 1786 -> One ([R 3]) - | 1790 -> One ([R 4]) - | 1796 -> One ([R 5]) - | 1798 -> One ([R 6]) - | 1802 -> One ([R 7]) - | 1806 -> One ([R 8]) - | 1810 -> One ([R 9]) - | 1814 -> One ([R 10]) - | 1820 -> One ([R 11]) - | 1824 -> One ([R 12]) - | 1837 -> One ([R 13]) - | 1857 -> One ([R 14]) + | 0 | 1772 | 1776 | 1794 | 1798 | 1802 | 1806 | 1810 | 1814 | 1818 | 1822 | 1826 | 1830 | 1836 | 1856 -> Nothing + | 1771 -> One ([R 0]) + | 1775 -> One ([R 1]) + | 1781 -> One ([R 2]) + | 1795 -> One ([R 3]) + | 1799 -> One ([R 4]) + | 1805 -> One ([R 5]) + | 1807 -> One ([R 6]) + | 1811 -> One ([R 7]) + | 1815 -> One ([R 8]) + | 1819 -> One ([R 9]) + | 1823 -> One ([R 10]) + | 1829 -> One ([R 11]) + | 1833 -> One ([R 12]) + | 1846 -> One ([R 13]) + | 1866 -> One ([R 14]) | 214 -> One ([R 15]) | 213 -> One ([R 16]) - | 1780 -> One ([R 20]) - | 1782 -> One ([R 21]) - | 284 -> One ([R 26]) - | 294 -> One ([R 27]) - | 290 -> One ([R 41]) - | 1271 -> One ([R 45]) - | 1280 -> One ([R 50]) - | 1275 -> One ([R 51]) - | 1316 -> One ([R 60]) - | 1283 -> One ([R 65]) - | 1067 -> One ([R 77]) - | 1047 -> One ([R 78]) - | 1049 -> One ([R 82]) - | 1278 -> One ([R 86]) - | 352 -> One ([R 97]) - | 73 -> One ([R 98]) - | 350 -> One ([R 99]) - | 72 -> One ([R 103]) - | 200 | 813 -> One ([R 104]) - | 845 -> One ([R 107]) - | 879 -> One ([R 115]) - | 883 -> One ([R 116]) - | 324 -> One ([R 118]) - | 1501 -> One ([R 119]) - | 625 -> One ([R 130]) - | 1449 -> One ([R 146]) - | 648 -> One ([R 147]) - | 670 -> One ([R 148]) - | 651 -> One ([R 149]) - | 668 -> One ([R 186]) - | 1 -> One (R 187 :: r7) - | 61 -> One (R 187 :: r24) - | 66 -> One (R 187 :: r29) - | 69 -> One (R 187 :: r40) - | 76 -> One (R 187 :: r48) - | 96 -> One (R 187 :: r67) - | 107 -> One (R 187 :: r95) - | 215 -> One (R 187 :: r199) - | 216 -> One (R 187 :: r203) - | 222 -> One (R 187 :: r215) - | 237 -> One (R 187 :: r225) - | 240 -> One (R 187 :: r230) - | 248 -> One (R 187 :: r241) - | 344 -> One (R 187 :: r319) - | 367 -> One (R 187 :: r332) - | 464 -> One (R 187 :: r406) - | 558 -> One (R 187 :: r478) - | 561 -> One (R 187 :: r481) - | 564 -> One (R 187 :: r486) - | 567 -> One (R 187 :: r489) - | 573 -> One (R 187 :: r502) - | 581 -> One (R 187 :: r513) - | 586 -> One (R 187 :: r525) - | 602 -> One (R 187 :: r536) - | 616 -> One (R 187 :: r542) - | 749 -> One (R 187 :: r620) - | 788 -> One (R 187 :: r651) - | 793 -> One (R 187 :: r661) - | 935 -> One (R 187 :: r750) - | 936 -> One (R 187 :: r754) - | 945 -> One (R 187 :: r762) - | 982 -> One (R 187 :: r790) - | 991 -> One (R 187 :: r804) - | 992 -> One (R 187 :: r813) - | 1155 -> One (R 187 :: r918) - | 1574 -> One (R 187 :: r1111) - | 1581 -> One (R 187 :: r1118) - | 1619 -> One (R 187 :: r1134) - | 478 -> One ([R 208]) - | 153 -> One ([R 221]) - | 131 -> One (R 224 :: r101) - | 135 -> One (R 224 :: r103) - | 212 -> One ([R 228]) - | 835 -> One ([R 232]) - | 836 -> One ([R 233]) - | 1274 -> One ([R 237]) - | 741 -> One ([R 251]) - | 1611 -> One ([R 253]) - | 1354 -> One ([R 260]) - | 1281 -> One ([R 263]) - | 447 -> One ([R 264]) - | 1591 -> One ([R 266]) - | 105 -> One (R 282 :: r75) - | 171 -> One (R 282 :: r122) - | 220 -> One (R 282 :: r208) - | 233 -> One (R 282 :: r220) - | 467 -> One (R 282 :: r410) - | 476 -> One (R 282 :: r422) - | 718 -> One (R 282 :: r597) - | 772 -> One (R 282 :: r640) - | 964 -> One (R 282 :: r781) - | 1003 -> One (R 282 :: r819) - | 1009 -> One (R 282 :: r827) - | 1020 -> One (R 282 :: r833) - | 1031 -> One (R 282 :: r836) - | 1035 -> One (R 282 :: r845) - | 1056 -> One (R 282 :: r859) - | 1072 -> One (R 282 :: r869) - | 1107 -> One (R 282 :: r886) - | 1129 -> One (R 282 :: r896) - | 1139 -> One (R 282 :: r905) - | 1162 -> One (R 282 :: r922) - | 1166 -> One (R 282 :: r935) - | 1194 -> One (R 282 :: r953) - | 1240 -> One (R 282 :: r978) - | 1244 -> One (R 282 :: r982) - | 1245 -> One (R 282 :: r986) - | 1256 -> One (R 282 :: r1002) - | 1264 -> One (R 282 :: r1011) - | 1308 -> One (R 282 :: r1023) - | 1328 -> One (R 282 :: r1036) - | 1662 -> One (R 282 :: r1146) - | 1128 -> One (R 284 :: r889) - | 1357 -> One (R 284 :: r1039) - | 1138 -> One (R 286 :: r897) - | 757 -> One (R 288 :: r628) - | 1065 -> One (R 288 :: r860) - | 1126 -> One (R 288 :: r888) - | 1314 -> One (R 288 :: r1024) - | 1355 -> One (R 288 :: r1038) - | 1362 -> One (R 288 :: r1041) - | 1654 -> One (R 288 :: r1145) - | 1842 -> One (R 288 :: r1187) - | 1853 -> One (R 288 :: r1193) - | 1858 -> One (R 288 :: r1196) - | 934 -> One (R 290 :: r746) - | 1118 -> One (R 290 :: r887) - | 211 -> One (R 293 :: r195) - | 1338 -> One (R 293 :: r1037) - | 1068 -> One (R 297 :: r861) - | 1317 -> One (R 299 :: r1025) - | 1840 -> One (R 301 :: r1185) - | 1848 -> One (R 303 :: r1189) - | 1849 -> One (R 303 :: r1190) - | 1850 -> One (R 303 :: r1191) - | 421 -> One ([R 309]) - | 425 -> One ([R 311]) - | 659 -> One ([R 313]) - | 1351 -> One ([R 314]) - | 1538 -> One ([R 317]) - | 1665 -> One ([R 318]) - | 1668 -> One ([R 319]) - | 1667 -> One ([R 321]) - | 1666 -> One ([R 323]) - | 1664 -> One ([R 324]) - | 1781 -> One ([R 336]) - | 1771 -> One ([R 338]) - | 1779 -> One ([R 339]) - | 1778 -> One ([R 341]) - | 593 -> One ([R 348]) - | 1499 -> One ([R 349]) - | 535 -> One ([R 360]) - | 545 -> One ([R 361]) - | 546 -> One ([R 362]) - | 544 -> One ([R 363]) - | 547 -> One ([R 365]) - | 170 -> One ([R 366]) - | 100 | 955 -> One ([R 367]) - | 505 -> One ([R 374]) - | 482 -> One ([R 375]) - | 512 -> One ([R 379]) - | 821 | 1180 -> One ([R 384]) - | 1013 -> One ([R 386]) - | 1011 -> One ([R 387]) - | 1014 -> One ([R 388]) - | 1012 -> One ([R 389]) - | 385 -> One ([R 392]) - | 806 -> One ([R 394]) - | 891 -> One ([R 395]) - | 1690 -> One ([R 396]) - | 907 -> One ([R 397]) - | 1691 -> One ([R 398]) - | 906 -> One ([R 399]) - | 898 -> One ([R 400]) - | 90 | 244 -> One ([R 413]) - | 114 | 611 -> One ([R 414]) - | 142 -> One ([R 415]) - | 130 -> One ([R 417]) - | 134 -> One ([R 419]) - | 138 -> One ([R 421]) - | 121 -> One ([R 422]) - | 141 | 1469 -> One ([R 423]) - | 120 -> One ([R 424]) - | 119 -> One ([R 425]) - | 118 -> One ([R 426]) - | 117 -> One ([R 427]) - | 116 -> One ([R 428]) - | 93 | 111 | 601 -> One ([R 429]) - | 92 | 600 -> One ([R 430]) - | 91 -> One ([R 431]) - | 113 | 391 | 610 -> One ([R 432]) - | 112 | 609 -> One ([R 433]) - | 88 -> One ([R 434]) - | 94 -> One ([R 435]) - | 123 -> One ([R 436]) - | 115 -> One ([R 437]) - | 122 -> One ([R 438]) - | 95 -> One ([R 439]) - | 140 -> One ([R 440]) - | 143 -> One ([R 441]) - | 139 -> One ([R 443]) - | 311 -> One ([R 444]) - | 310 -> One (R 445 :: r302) - | 262 -> One (R 446 :: r263) - | 263 -> One ([R 447]) - | 422 -> One (R 448 :: r353) - | 423 -> One ([R 449]) - | 1488 -> One ([R 463]) - | 159 -> One ([R 464]) - | 377 -> One ([R 484]) - | 371 -> One ([R 485]) - | 372 -> One ([R 487]) - | 370 | 612 -> One ([R 494]) - | 736 -> One ([R 500]) - | 737 -> One ([R 501]) - | 738 -> One ([R 503]) - | 453 -> One ([R 505]) - | 1154 -> One ([R 509]) - | 913 | 1221 -> One ([R 519]) - | 1024 -> One ([R 521]) - | 1022 -> One ([R 522]) - | 1025 -> One ([R 523]) - | 1023 -> One ([R 524]) - | 1290 -> One (R 525 :: r1017) - | 251 -> One ([R 526]) - | 889 -> One ([R 529]) - | 890 -> One ([R 530]) - | 885 -> One ([R 531]) - | 1707 -> One ([R 533]) - | 1706 -> One ([R 534]) - | 1708 -> One ([R 535]) - | 1703 -> One ([R 536]) - | 1704 -> One ([R 537]) - | 919 -> One ([R 539]) + | 1789 -> One ([R 20]) + | 1791 -> One ([R 21]) + | 301 -> One ([R 22]) + | 284 -> One ([R 23]) + | 307 -> One ([R 24]) + | 1299 -> One ([R 36]) + | 1308 -> One ([R 41]) + | 1303 -> One ([R 42]) + | 1344 -> One ([R 51]) + | 1311 -> One ([R 56]) + | 1095 -> One ([R 68]) + | 1075 -> One ([R 69]) + | 1077 -> One ([R 73]) + | 1306 -> One ([R 77]) + | 362 -> One ([R 88]) + | 73 -> One ([R 89]) + | 360 -> One ([R 90]) + | 72 -> One ([R 94]) + | 200 | 841 -> One ([R 95]) + | 873 -> One ([R 98]) + | 907 -> One ([R 106]) + | 911 -> One ([R 107]) + | 311 -> One ([R 109]) + | 289 -> One ([R 110]) + | 298 -> One ([R 111]) + | 300 -> One ([R 112]) + | 1529 -> One ([R 122]) + | 691 -> One ([R 133]) + | 1 -> One (R 135 :: r13) + | 61 -> One (R 135 :: r32) + | 66 -> One (R 135 :: r36) + | 69 -> One (R 135 :: r47) + | 76 -> One (R 135 :: r54) + | 96 -> One (R 135 :: r73) + | 107 -> One (R 135 :: r101) + | 215 -> One (R 135 :: r205) + | 216 -> One (R 135 :: r209) + | 222 -> One (R 135 :: r221) + | 237 -> One (R 135 :: r231) + | 240 -> One (R 135 :: r236) + | 248 -> One (R 135 :: r250) + | 354 -> One (R 135 :: r334) + | 377 -> One (R 135 :: r347) + | 474 -> One (R 135 :: r416) + | 568 -> One (R 135 :: r488) + | 571 -> One (R 135 :: r491) + | 574 -> One (R 135 :: r496) + | 577 -> One (R 135 :: r499) + | 583 -> One (R 135 :: r519) + | 595 -> One (R 135 :: r523) + | 602 -> One (R 135 :: r532) + | 607 -> One (R 135 :: r544) + | 623 -> One (R 135 :: r555) + | 637 -> One (R 135 :: r561) + | 645 -> One (R 135 :: r569) + | 777 -> One (R 135 :: r644) + | 816 -> One (R 135 :: r675) + | 821 -> One (R 135 :: r685) + | 963 -> One (R 135 :: r774) + | 964 -> One (R 135 :: r778) + | 973 -> One (R 135 :: r786) + | 1010 -> One (R 135 :: r814) + | 1019 -> One (R 135 :: r828) + | 1020 -> One (R 135 :: r837) + | 1183 -> One (R 135 :: r942) + | 1585 -> One (R 135 :: r1128) + | 1592 -> One (R 135 :: r1135) + | 299 -> One ([R 141]) + | 1478 -> One ([R 161]) + | 673 -> One ([R 162]) + | 695 -> One ([R 163]) + | 676 -> One ([R 164]) + | 738 -> One ([R 201]) + | 740 -> One ([R 206]) + | 745 -> One ([R 207]) + | 488 -> One ([R 215]) + | 153 -> One ([R 228]) + | 131 -> One (R 231 :: r107) + | 135 -> One (R 231 :: r109) + | 212 -> One ([R 235]) + | 863 -> One ([R 239]) + | 864 -> One ([R 240]) + | 1302 -> One ([R 244]) + | 769 -> One ([R 258]) + | 1621 -> One ([R 260]) + | 1382 -> One ([R 267]) + | 1309 -> One ([R 270]) + | 457 -> One ([R 271]) + | 1601 -> One ([R 273]) + | 105 -> One (R 289 :: r81) + | 171 -> One (R 289 :: r128) + | 220 -> One (R 289 :: r214) + | 233 -> One (R 289 :: r226) + | 477 -> One (R 289 :: r420) + | 486 -> One (R 289 :: r432) + | 746 -> One (R 289 :: r621) + | 800 -> One (R 289 :: r664) + | 992 -> One (R 289 :: r805) + | 1031 -> One (R 289 :: r843) + | 1037 -> One (R 289 :: r851) + | 1048 -> One (R 289 :: r857) + | 1059 -> One (R 289 :: r860) + | 1063 -> One (R 289 :: r869) + | 1084 -> One (R 289 :: r883) + | 1100 -> One (R 289 :: r893) + | 1135 -> One (R 289 :: r910) + | 1157 -> One (R 289 :: r920) + | 1167 -> One (R 289 :: r929) + | 1190 -> One (R 289 :: r946) + | 1194 -> One (R 289 :: r959) + | 1222 -> One (R 289 :: r978) + | 1268 -> One (R 289 :: r1003) + | 1272 -> One (R 289 :: r1007) + | 1273 -> One (R 289 :: r1011) + | 1284 -> One (R 289 :: r1027) + | 1292 -> One (R 289 :: r1036) + | 1336 -> One (R 289 :: r1048) + | 1356 -> One (R 289 :: r1061) + | 1672 -> One (R 289 :: r1160) + | 1156 -> One (R 291 :: r913) + | 1385 -> One (R 291 :: r1064) + | 1166 -> One (R 293 :: r921) + | 785 -> One (R 295 :: r652) + | 1093 -> One (R 295 :: r884) + | 1154 -> One (R 295 :: r912) + | 1342 -> One (R 295 :: r1049) + | 1383 -> One (R 295 :: r1063) + | 1390 -> One (R 295 :: r1066) + | 1664 -> One (R 295 :: r1159) + | 1851 -> One (R 295 :: r1200) + | 1862 -> One (R 295 :: r1206) + | 1867 -> One (R 295 :: r1209) + | 962 -> One (R 297 :: r770) + | 1146 -> One (R 297 :: r911) + | 211 -> One (R 300 :: r201) + | 1366 -> One (R 300 :: r1062) + | 1096 -> One (R 304 :: r885) + | 1345 -> One (R 306 :: r1050) + | 1849 -> One (R 308 :: r1198) + | 1857 -> One (R 310 :: r1202) + | 1858 -> One (R 310 :: r1203) + | 1859 -> One (R 310 :: r1204) + | 431 -> One ([R 316]) + | 435 -> One ([R 318]) + | 684 -> One ([R 320]) + | 1379 -> One ([R 321]) + | 1552 -> One ([R 324]) + | 1675 -> One ([R 325]) + | 1678 -> One ([R 326]) + | 1677 -> One ([R 328]) + | 1676 -> One ([R 330]) + | 1674 -> One ([R 331]) + | 1790 -> One ([R 343]) + | 1780 -> One ([R 345]) + | 1788 -> One ([R 346]) + | 1787 -> One ([R 348]) + | 614 -> One ([R 355]) + | 1527 -> One ([R 356]) + | 545 -> One ([R 367]) + | 555 -> One ([R 368]) + | 556 -> One ([R 369]) + | 554 -> One ([R 370]) + | 557 -> One ([R 372]) + | 170 -> One ([R 373]) + | 100 | 983 -> One ([R 374]) + | 515 -> One ([R 381]) + | 492 -> One ([R 382]) + | 522 -> One ([R 386]) + | 849 | 1208 -> One ([R 391]) + | 1041 -> One ([R 393]) + | 1039 -> One ([R 394]) + | 1042 -> One ([R 395]) + | 1040 -> One ([R 396]) + | 395 -> One ([R 399]) + | 834 -> One ([R 401]) + | 919 -> One ([R 402]) + | 1699 -> One ([R 403]) + | 935 -> One ([R 404]) + | 1700 -> One ([R 405]) + | 934 -> One ([R 406]) + | 926 -> One ([R 407]) + | 90 | 244 -> One ([R 422]) + | 114 | 632 -> One ([R 423]) + | 142 -> One ([R 424]) + | 130 -> One ([R 426]) + | 134 -> One ([R 428]) + | 138 -> One ([R 430]) + | 121 -> One ([R 431]) + | 141 | 1498 -> One ([R 432]) + | 120 -> One ([R 433]) + | 119 -> One ([R 434]) + | 118 -> One ([R 435]) + | 117 -> One ([R 436]) + | 116 -> One ([R 437]) + | 93 | 111 | 622 -> One ([R 438]) + | 92 | 621 -> One ([R 439]) + | 91 -> One ([R 440]) + | 113 | 401 | 631 -> One ([R 441]) + | 112 | 630 -> One ([R 442]) + | 88 -> One ([R 443]) + | 94 -> One ([R 444]) + | 123 -> One ([R 445]) + | 115 -> One ([R 446]) + | 122 -> One ([R 447]) + | 95 -> One ([R 448]) + | 140 -> One ([R 449]) + | 143 -> One ([R 450]) + | 139 -> One ([R 452]) + | 327 -> One ([R 453]) + | 326 -> One (R 454 :: r319) + | 262 -> One (R 455 :: r272) + | 263 -> One ([R 456]) + | 432 -> One (R 457 :: r368) + | 433 -> One ([R 458]) + | 1237 -> One (R 473 :: r989) + | 1238 -> One ([R 474]) + | 159 -> One ([R 475]) + | 387 -> One ([R 495]) + | 381 -> One ([R 496]) + | 382 -> One ([R 498]) + | 380 | 633 -> One ([R 505]) + | 764 -> One ([R 511]) + | 765 -> One ([R 512]) + | 766 -> One ([R 514]) + | 463 -> One ([R 516]) + | 1182 -> One ([R 520]) + | 941 | 1249 -> One ([R 530]) + | 1052 -> One ([R 532]) + | 1050 -> One ([R 533]) + | 1053 -> One ([R 534]) + | 1051 -> One ([R 535]) + | 1318 -> One (R 536 :: r1042) + | 251 -> One ([R 537]) | 917 -> One ([R 540]) - | 527 -> One ([R 543]) - | 479 -> One ([R 544]) - | 1277 -> One ([R 545]) - | 1276 -> One ([R 546]) - | 339 -> One ([R 548]) - | 303 -> One ([R 572]) - | 1388 -> One ([R 575]) - | 1389 -> One ([R 576]) - | 1561 -> One ([R 578]) - | 1562 -> One ([R 579]) - | 416 -> One ([R 581]) - | 417 -> One ([R 582]) - | 1491 -> One ([R 584]) - | 1492 -> One ([R 585]) - | 673 -> One ([R 587]) - | 677 -> One ([R 588]) - | 1149 -> One ([R 593]) - | 1117 -> One ([R 594]) - | 1120 -> One ([R 595]) - | 1119 -> One ([R 600]) - | 1124 -> One ([R 603]) - | 1123 -> One ([R 605]) - | 1122 -> One ([R 606]) - | 1121 -> One ([R 607]) - | 1150 -> One ([R 610]) - | 86 -> One ([R 613]) - | 83 -> One ([R 615]) - | 592 -> One ([R 639]) - | 655 -> One ([R 640]) - | 654 | 669 -> One ([R 641]) - | 595 | 650 -> One ([R 642]) - | 1396 | 1446 -> One ([R 647]) - | 653 -> One ([R 652]) - | 353 -> One ([R 665]) - | 357 -> One ([R 668]) - | 358 -> One ([R 672]) - | 389 -> One ([R 674]) - | 362 -> One ([R 675]) - | 418 -> One ([R 677]) - | 380 -> One ([R 682]) - | 28 -> One ([R 683]) - | 8 -> One ([R 684]) - | 52 -> One ([R 686]) - | 51 -> One ([R 687]) - | 50 -> One ([R 688]) - | 49 -> One ([R 689]) - | 48 -> One ([R 690]) - | 47 -> One ([R 691]) - | 46 -> One ([R 692]) - | 45 -> One ([R 693]) - | 44 -> One ([R 694]) - | 43 -> One ([R 695]) - | 42 -> One ([R 696]) - | 41 -> One ([R 697]) - | 40 -> One ([R 698]) - | 39 -> One ([R 699]) - | 38 -> One ([R 700]) - | 37 -> One ([R 701]) - | 36 -> One ([R 702]) - | 35 -> One ([R 703]) - | 34 -> One ([R 704]) - | 33 -> One ([R 705]) - | 32 -> One ([R 706]) - | 31 -> One ([R 707]) - | 30 -> One ([R 708]) - | 29 -> One ([R 709]) - | 27 -> One ([R 710]) - | 26 -> One ([R 711]) - | 25 -> One ([R 712]) - | 24 -> One ([R 713]) - | 23 -> One ([R 714]) - | 22 -> One ([R 715]) - | 21 -> One ([R 716]) - | 20 -> One ([R 717]) - | 19 -> One ([R 718]) - | 18 -> One ([R 719]) - | 17 -> One ([R 720]) - | 16 -> One ([R 721]) - | 15 -> One ([R 722]) - | 14 -> One ([R 723]) - | 13 -> One ([R 724]) - | 12 -> One ([R 725]) - | 11 -> One ([R 726]) - | 10 -> One ([R 727]) - | 9 -> One ([R 728]) - | 7 -> One ([R 729]) - | 6 -> One ([R 730]) - | 5 -> One ([R 731]) - | 4 -> One ([R 732]) - | 3 -> One ([R 733]) - | 1346 -> One ([R 734]) - | 1368 -> One ([R 739]) - | 1350 | 1367 -> One ([R 741]) - | 1353 | 1369 -> One ([R 742]) - | 1359 -> One ([R 744]) - | 1347 -> One ([R 745]) - | 1337 -> One ([R 746]) - | 1345 -> One ([R 750]) - | 1349 -> One ([R 753]) - | 1348 -> One ([R 754]) - | 1360 -> One ([R 756]) - | 236 -> One ([R 758]) - | 235 -> One ([R 759]) - | 1831 -> One ([R 763]) - | 1832 -> One ([R 764]) - | 1834 -> One ([R 765]) - | 1835 -> One ([R 766]) - | 1833 -> One ([R 767]) - | 1830 -> One ([R 768]) - | 1836 -> One ([R 772]) - | 287 -> One ([R 774]) - | 485 -> One (R 782 :: r439) - | 499 -> One ([R 783]) - | 177 -> One ([R 788]) - | 180 -> One ([R 789]) - | 184 -> One ([R 790]) - | 178 -> One ([R 791]) - | 185 -> One ([R 792]) - | 181 -> One ([R 793]) - | 186 -> One ([R 794]) - | 183 -> One ([R 795]) - | 176 -> One ([R 796]) - | 354 -> One ([R 801]) - | 652 -> One ([R 802]) - | 995 -> One ([R 810]) - | 1178 -> One ([R 811]) - | 1181 -> One ([R 812]) - | 1179 -> One ([R 813]) - | 1219 -> One ([R 814]) - | 1222 -> One ([R 815]) - | 1220 -> One ([R 816]) - | 488 -> One ([R 823]) - | 489 -> One ([R 824]) - | 1484 -> One (S (T T_WITH) :: r1088) - | 166 -> One (S (T T_TYPE) :: r119) - | 455 -> One (S (T T_TYPE) :: r388) - | 838 -> One (S (T T_STAR) :: r702) - | 1838 -> One (S (T T_SEMISEMI) :: r1184) - | 1845 -> One (S (T T_SEMISEMI) :: r1188) - | 1768 -> One (S (T T_RPAREN) :: r54) - | 365 -> One (S (T T_RPAREN) :: r329) - | 409 -> One (S (T T_RPAREN) :: r352) - | 469 -> One (S (T T_RPAREN) :: r411) - | 537 -> One (S (T T_RPAREN) :: r454) - | 1470 -> One (S (T T_RPAREN) :: r1077) - | 1629 -> One (S (T T_RPAREN) :: r1137) - | 1675 -> One (S (T T_RPAREN) :: r1149) - | 1682 -> One (S (T T_RPAREN) :: r1152) - | 1769 -> One (S (T T_RPAREN) :: r1167) - | 817 | 874 -> One (S (T T_RBRACKET) :: r243) - | 265 -> One (S (T T_RBRACKET) :: r264) - | 1476 -> One (S (T T_RBRACKET) :: r1080) - | 1478 -> One (S (T T_RBRACKET) :: r1081) - | 317 -> One (S (T T_QUOTE) :: r305) - | 1033 -> One (S (T T_OPEN) :: r841) - | 1248 -> One (S (T T_OPEN) :: r993) - | 160 -> One (S (T T_MODULE) :: r115) - | 474 -> One (S (T T_MINUSGREATER) :: r418) - | 854 -> One (S (T T_MINUSGREATER) :: r708) - | 858 -> One (S (T T_MINUSGREATER) :: r710) - | 1094 -> One (S (T T_MINUSGREATER) :: r875) - | 124 -> One (S (T T_LPAREN) :: r98) - | 156 -> One (S (T T_LIDENT) :: r110) - | 430 -> One (S (T T_LIDENT) :: r355) - | 438 -> One (S (T T_LIDENT) :: r361) - | 626 -> One (S (T T_LIDENT) :: r549) - | 627 -> One (S (T T_LIDENT) :: r555) - | 638 -> One (S (T T_LIDENT) :: r558) - | 642 -> One (S (T T_LIDENT) :: r560) - | 822 -> One (S (T T_LIDENT) :: r698) - | 1182 -> One (S (T T_LIDENT) :: r940) - | 1223 -> One (S (T T_LIDENT) :: r967) - | 1300 -> One (S (T T_LIDENT) :: r1020) - | 81 -> One (S (T T_INT) :: r52) - | 84 -> One (S (T T_INT) :: r53) - | 656 -> One (S (T T_IN) :: r567) - | 660 -> One (S (T T_IN) :: r569) - | 1268 -> One (S (T T_IN) :: r1013) - | 551 -> One (S (T T_GREATERRBRACE) :: r461) - | 1564 -> One (S (T T_GREATERRBRACE) :: r1105) - | 206 -> One (S (T T_GREATER) :: r186) - | 1670 -> One (S (T T_GREATER) :: r1147) - | 517 -> One (S (T T_EQUAL) :: r450) - | 725 -> One (S (T T_EQUAL) :: r602) - | 1172 -> One (S (T T_EQUAL) :: r937) - | 1190 -> One (S (T T_EQUAL) :: r942) - | 1211 -> One (S (T T_EQUAL) :: r964) - | 1460 -> One (S (T T_EQUAL) :: r1075) - | 1608 -> One (S (T T_EQUAL) :: r1129) - | 1760 -> One (S (T T_EOF) :: r1165) - | 1764 -> One (S (T T_EOF) :: r1166) - | 1783 -> One (S (T T_EOF) :: r1172) - | 1787 -> One (S (T T_EOF) :: r1173) - | 1791 -> One (S (T T_EOF) :: r1174) - | 1794 -> One (S (T T_EOF) :: r1175) - | 1799 -> One (S (T T_EOF) :: r1176) - | 1803 -> One (S (T T_EOF) :: r1177) - | 1807 -> One (S (T T_EOF) :: r1178) - | 1811 -> One (S (T T_EOF) :: r1179) - | 1815 -> One (S (T T_EOF) :: r1180) - | 1818 -> One (S (T T_EOF) :: r1181) - | 1822 -> One (S (T T_EOF) :: r1182) - | 1862 -> One (S (T T_EOF) :: r1197) - | 1551 -> One (S (T T_END) :: r1104) - | 126 -> One (S (T T_DOTDOT) :: r99) - | 201 -> One (S (T T_DOTDOT) :: r179) - | 892 -> One (S (T T_DOTDOT) :: r737) - | 893 -> One (S (T T_DOTDOT) :: r738) - | 226 | 1382 | 1429 -> One (S (T T_DOT) :: r217) - | 1825 -> One (S (T T_DOT) :: r451) - | 798 -> One (S (T T_DOT) :: r663) - | 825 -> One (S (T T_DOT) :: r700) - | 852 -> One (S (T T_DOT) :: r706) - | 1603 -> One (S (T T_DOT) :: r1127) - | 1773 -> One (S (T T_DOT) :: r1171) - | 202 | 814 -> One (S (T T_COLONCOLON) :: r181) - | 207 -> One (S (T T_COLON) :: r191) - | 471 -> One (S (T T_COLON) :: r414) - | 1088 -> One (S (T T_COLON) :: r873) - | 245 -> One (S (T T_BARRBRACKET) :: r233) - | 253 -> One (S (T T_BARRBRACKET) :: r242) - | 427 -> One (S (T T_BARRBRACKET) :: r354) - | 1472 -> One (S (T T_BARRBRACKET) :: r1078) - | 1474 -> One (S (T T_BARRBRACKET) :: r1079) - | 1616 -> One (S (T T_BARRBRACKET) :: r1130) - | 328 -> One (S (T T_BAR) :: r308) - | 79 -> One (S (N N_pattern) :: r50) - | 382 | 576 | 1520 -> One (S (N N_pattern) :: r56) - | 343 -> One (S (N N_pattern) :: r313) - | 373 -> One (S (N N_pattern) :: r333) - | 375 -> One (S (N N_pattern) :: r334) - | 396 -> One (S (N N_pattern) :: r345) - | 401 -> One (S (N N_pattern) :: r348) - | 728 -> One (S (N N_pattern) :: r603) - | 730 -> One (S (N N_pattern) :: r604) - | 732 -> One (S (N N_pattern) :: r605) - | 739 -> One (S (N N_pattern) :: r607) - | 745 -> One (S (N N_pattern) :: r611) - | 103 -> One (S (N N_module_type) :: r69) - | 473 -> One (S (N N_module_type) :: r416) - | 513 -> One (S (N N_module_type) :: r447) - | 515 -> One (S (N N_module_type) :: r448) - | 541 -> One (S (N N_module_type) :: r456) - | 754 -> One (S (N N_module_type) :: r627) - | 766 -> One (S (N N_module_type) :: r635) - | 1624 -> One (S (N N_module_type) :: r1136) - | 1639 -> One (S (N N_module_type) :: r1139) - | 1642 -> One (S (N N_module_type) :: r1141) - | 1645 -> One (S (N N_module_type) :: r1143) - | 219 -> One (S (N N_module_expr) :: r205) - | 446 -> One (S (N N_let_pattern) :: r378) - | 247 -> One (S (N N_expr) :: r234) - | 553 -> One (S (N N_expr) :: r464) - | 557 -> One (S (N N_expr) :: r475) - | 624 -> One (S (N N_expr) :: r548) - | 649 -> One (S (N N_expr) :: r565) - | 664 -> One (S (N N_expr) :: r570) - | 666 -> One (S (N N_expr) :: r571) - | 671 -> One (S (N N_expr) :: r572) - | 678 -> One (S (N N_expr) :: r575) - | 680 -> One (S (N N_expr) :: r576) - | 682 -> One (S (N N_expr) :: r577) - | 684 -> One (S (N N_expr) :: r578) - | 686 -> One (S (N N_expr) :: r579) - | 688 -> One (S (N N_expr) :: r580) - | 690 -> One (S (N N_expr) :: r581) - | 692 -> One (S (N N_expr) :: r582) - | 694 -> One (S (N N_expr) :: r583) - | 696 -> One (S (N N_expr) :: r584) - | 698 -> One (S (N N_expr) :: r585) - | 700 -> One (S (N N_expr) :: r586) - | 702 -> One (S (N N_expr) :: r587) - | 704 -> One (S (N N_expr) :: r588) - | 706 -> One (S (N N_expr) :: r589) - | 708 -> One (S (N N_expr) :: r590) - | 710 -> One (S (N N_expr) :: r591) - | 712 -> One (S (N N_expr) :: r592) - | 714 -> One (S (N N_expr) :: r593) - | 716 -> One (S (N N_expr) :: r594) - | 1401 -> One (S (N N_expr) :: r1058) - | 1406 -> One (S (N N_expr) :: r1062) - | 1411 -> One (S (N N_expr) :: r1066) - | 1417 -> One (S (N N_expr) :: r1067) - | 1422 -> One (S (N N_expr) :: r1068) - | 1427 -> One (S (N N_expr) :: r1069) - | 1434 -> One (S (N N_expr) :: r1070) - | 1439 -> One (S (N N_expr) :: r1071) - | 1444 -> One (S (N N_expr) :: r1072) - | 1447 -> One (S (N N_expr) :: r1073) - | 1548 -> One (S (N N_expr) :: r1103) - | 441 -> One (Sub (r1) :: r365) - | 572 -> One (Sub (r1) :: r493) - | 747 -> One (Sub (r1) :: r612) - | 1512 -> One (Sub (r1) :: r1094) - | 1745 -> One (Sub (r1) :: r1163) - | 1747 -> One (Sub (r1) :: r1164) - | 2 -> One (Sub (r11) :: r12) - | 55 -> One (Sub (r11) :: r13) - | 59 -> One (Sub (r11) :: r18) - | 209 -> One (Sub (r11) :: r194) - | 674 -> One (Sub (r11) :: r574) - | 743 -> One (Sub (r11) :: r610) - | 784 -> One (Sub (r11) :: r644) - | 786 -> One (Sub (r11) :: r647) - | 1249 -> One (Sub (r11) :: r998) - | 570 -> One (Sub (r33) :: r490) - | 1542 -> One (Sub (r33) :: r1102) - | 1743 -> One (Sub (r35) :: r1162) - | 75 -> One (Sub (r42) :: r43) - | 556 -> One (Sub (r42) :: r473) - | 591 -> One (Sub (r42) :: r526) - | 620 -> One (Sub (r42) :: r543) - | 640 -> One (Sub (r42) :: r559) - | 1272 -> One (Sub (r42) :: r1014) - | 762 -> One (Sub (r63) :: r632) - | 959 -> One (Sub (r63) :: r775) - | 866 -> One (Sub (r72) :: r711) - | 403 -> One (Sub (r77) :: r349) - | 734 -> One (Sub (r77) :: r606) - | 288 -> One (Sub (r79) :: r291) - | 300 -> One (Sub (r79) :: r296) - | 851 -> One (Sub (r79) :: r704) - | 1524 -> One (Sub (r79) :: r1100) - | 295 -> One (Sub (r81) :: r295) - | 1096 -> One (Sub (r81) :: r878) - | 286 -> One (Sub (r83) :: r290) - | 314 -> One (Sub (r85) :: r303) - | 492 -> One (Sub (r85) :: r441) - | 261 -> One (Sub (r87) :: r256) - | 398 -> One (Sub (r87) :: r347) - | 433 -> One (Sub (r87) :: r360) - | 448 -> One (Sub (r87) :: r379) - | 495 -> One (Sub (r87) :: r444) - | 613 -> One (Sub (r87) :: r539) - | 629 -> One (Sub (r87) :: r556) - | 633 -> One (Sub (r87) :: r557) - | 721 -> One (Sub (r87) :: r600) - | 1005 -> One (Sub (r87) :: r821) - | 1043 -> One (Sub (r87) :: r852) - | 1680 -> One (Sub (r87) :: r1151) - | 1684 -> One (Sub (r87) :: r1153) - | 1733 -> One (Sub (r87) :: r1161) - | 1198 -> One (Sub (r89) :: r956) - | 1229 -> One (Sub (r89) :: r970) - | 189 -> One (Sub (r105) :: r174) - | 799 -> One (Sub (r105) :: r664) - | 1828 -> One (Sub (r105) :: r1183) - | 348 -> One (Sub (r126) :: r321) - | 195 -> One (Sub (r169) :: r175) - | 182 -> One (Sub (r171) :: r173) - | 997 -> One (Sub (r171) :: r815) - | 199 -> One (Sub (r177) :: r178) - | 873 -> One (Sub (r177) :: r730) - | 922 -> One (Sub (r177) :: r745) - | 256 -> One (Sub (r253) :: r255) - | 307 -> One (Sub (r258) :: r297) - | 267 -> One (Sub (r260) :: r266) - | 281 -> One (Sub (r260) :: r289) - | 268 -> One (Sub (r272) :: r274) - | 269 -> One (Sub (r276) :: r277) - | 292 -> One (Sub (r276) :: r292) - | 1677 -> One (Sub (r276) :: r1150) - | 271 -> One (Sub (r285) :: r287) - | 521 -> One (Sub (r285) :: r452) - | 956 -> One (Sub (r285) :: r770) - | 336 -> One (Sub (r310) :: r312) - | 459 -> One (Sub (r316) :: r389) - | 359 -> One (Sub (r324) :: r325) - | 383 -> One (Sub (r338) :: r341) - | 577 -> One (Sub (r338) :: r505) - | 1199 -> One (Sub (r338) :: r961) - | 1230 -> One (Sub (r338) :: r975) - | 1521 -> One (Sub (r338) :: r1097) - | 1597 -> One (Sub (r338) :: r1123) - | 431 -> One (Sub (r357) :: r359) - | 439 -> One (Sub (r357) :: r364) - | 1466 -> One (Sub (r367) :: r1076) - | 442 -> One (Sub (r369) :: r372) - | 444 -> One (Sub (r374) :: r375) - | 1210 -> One (Sub (r384) :: r962) - | 525 -> One (Sub (r432) :: r453) - | 484 -> One (Sub (r434) :: r435) - | 554 -> One (Sub (r470) :: r472) - | 1483 -> One (Sub (r470) :: r1086) - | 1528 -> One (Sub (r498) :: r1101) - | 778 -> One (Sub (r615) :: r641) - | 1698 -> One (Sub (r665) :: r1157) - | 1710 -> One (Sub (r665) :: r1159) - | 819 -> One (Sub (r681) :: r682) - | 820 -> One (Sub (r690) :: r692) - | 875 -> One (Sub (r690) :: r732) - | 894 -> One (Sub (r690) :: r740) - | 902 -> One (Sub (r690) :: r742) - | 1686 -> One (Sub (r690) :: r1155) - | 980 -> One (Sub (r757) :: r786) - | 973 -> One (Sub (r783) :: r785) - | 1296 -> One (Sub (r795) :: r1019) - | 1320 -> One (Sub (r795) :: r1028) - | 1260 -> One (Sub (r847) :: r1005) - | 1247 -> One (Sub (r907) :: r988) - | 1324 -> One (Sub (r910) :: r1029) - | 1165 -> One (Sub (r928) :: r930) - | 1193 -> One (Sub (r947) :: r949) - | 1480 -> One (Sub (r1082) :: r1084) - | 663 -> One (r0) - | 1759 -> One (r2) - | 1758 -> One (r3) - | 1757 -> One (r4) - | 1756 -> One (r5) - | 1755 -> One (r6) - | 58 -> One (r7) - | 53 -> One (r8) - | 54 -> One (r10) - | 57 -> One (r12) - | 56 -> One (r13) - | 1361 -> One (r14) - | 1754 -> One (r16) - | 1753 -> One (r17) - | 60 -> One (r18) - | 1752 -> One (r19) - | 1751 -> One (r20) - | 1750 -> One (r21) - | 1749 -> One (r22) - | 63 -> One (r23) - | 62 -> One (r24) - | 64 -> One (r25) - | 65 -> One (r26) - | 1742 -> One (r27) - | 68 -> One (r28) - | 67 -> One (r29) - | 1539 -> One (r30) - | 1537 -> One (r31) - | 571 -> One (r32) - | 1544 -> One (r34) - | 1741 -> One (r36) - | 1740 -> One (r37) - | 1739 -> One (r38) - | 71 -> One (r39) - | 70 -> One (r40) - | 74 -> One (r41) - | 1618 -> One (r43) - | 1738 -> One (r44) - | 1737 -> One (r45) - | 1736 -> One (r46) - | 78 -> One (r47) - | 77 -> One (r48) - | 1732 -> One (r49) - | 1731 -> One (r50) - | 80 -> One (r51) - | 82 -> One (r52) - | 85 -> One (r53) - | 89 -> One (r54) - | 395 -> One (r55) - | 394 -> One (r56) - | 144 -> One (r57) - | 146 -> One (r59) - | 145 -> One (r60) - | 110 -> One (r61) - | 99 -> One (r62) - | 102 -> One (r64) - | 101 -> One (r65) - | 98 -> One (r66) - | 97 -> One (r67) - | 1730 -> One (r68) - | 1729 -> One (r69) - | 104 | 151 -> One (r70) - | 1153 -> One (r71) - | 1728 -> One (r73) - | 1727 -> One (r74) - | 106 -> One (r75) - | 147 | 246 | 555 | 1498 -> One (r76) - | 150 -> One (r78) - | 299 -> One (r80) - | 285 -> One (r82) - | 315 -> One (r84) - | 325 -> One (r86) - | 809 -> One (r88) - | 1726 -> One (r90) - | 1725 -> One (r91) - | 149 -> One (r92) - | 148 -> One (r93) - | 109 -> One (r94) - | 108 -> One (r95) - | 129 -> One (r96) - | 128 -> One (r97) - | 125 -> One (r98) - | 127 -> One (r99) - | 133 -> One (r100) - | 132 -> One (r101) - | 137 -> One (r102) - | 136 -> One (r103) - | 154 -> One (r104) - | 162 -> One (r106) - | 161 -> One (r107) - | 158 -> One (r109) - | 157 -> One (r110) - | 1724 -> One (r111) - | 1723 -> One (r112) - | 165 -> One (r113) - | 164 -> One (r114) - | 163 -> One (r115) - | 1722 -> One (r116) - | 169 -> One (r117) - | 168 -> One (r118) - | 167 -> One (r119) - | 1721 -> One (r120) - | 1720 -> One (r121) - | 172 -> One (r122) - | 205 -> One (r123) - | 289 -> One (r125) - | 351 -> One (r127) - | 865 -> One (r129) - | 901 -> One (r131) - | 900 -> One (r132) - | 899 | 1709 -> One (r133) - | 1705 -> One (r135) - | 1719 -> One (r137) - | 1718 -> One (r138) - | 1717 -> One (r139) - | 1716 -> One (r140) - | 1715 -> One (r141) - | 928 -> One (r145) - | 927 -> One (r146) - | 926 -> One (r147) - | 1702 -> One (r153) - | 1701 -> One (r154) - | 1695 -> One (r155) - | 1694 -> One (r156) - | 1693 -> One (r157) - | 910 -> One (r159) - | 909 -> One (r160) - | 908 -> One (r161) - | 188 -> One (r165) - | 191 -> One (r167) - | 187 -> One (r168) - | 192 -> One (r170) - | 194 -> One (r172) - | 193 -> One (r173) - | 190 -> One (r174) - | 196 -> One (r175) - | 878 -> One (r176) - | 1692 -> One (r178) - | 1689 -> One (r179) - | 816 -> One (r180) - | 815 -> One (r181) - | 1674 -> One (r182) - | 1673 -> One (r183) - | 1672 -> One (r184) - | 204 -> One (r185) - | 1669 -> One (r186) - | 832 -> One (r187) - | 1661 -> One (r189) - | 1660 -> One (r190) - | 208 -> One (r191) - | 1659 -> One (r192) - | 1658 -> One (r193) - | 210 -> One (r194) - | 1657 -> One (r195) - | 1653 -> One (r196) - | 1652 -> One (r197) - | 1651 -> One (r198) - | 1650 -> One (r199) - | 1649 -> One (r200) - | 1648 -> One (r201) - | 218 -> One (r202) - | 217 -> One (r203) - | 540 -> One (r204) - | 539 -> One (r205) - | 1638 -> One (r206) - | 1637 -> One (r207) - | 221 -> One (r208) - | 225 -> One (r209) - | 231 -> One (r211) - | 232 -> One (r213) - | 224 -> One (r214) - | 223 -> One (r215) - | 229 -> One (r216) - | 227 -> One (r217) - | 228 -> One (r218) - | 230 -> One (r219) - | 234 -> One (r220) - | 1636 -> One (r221) - | 1635 -> One (r222) - | 1634 -> One (r223) - | 239 -> One (r224) - | 238 -> One (r225) - | 1633 -> One (r226) - | 1632 -> One (r227) - | 1631 -> One (r228) - | 242 -> One (r229) - | 241 -> One (r230) - | 1628 -> One (r231) - | 1627 -> One (r232) - | 1615 -> One (r233) - | 1614 -> One (r234) - | 429 -> One (r235) - | 1613 -> One (r237) - | 1612 -> One (r238) - | 252 -> One (r239) - | 250 -> One (r240) - | 249 -> One (r241) - | 426 -> One (r242) - | 255 -> One (r243) - | 415 -> One (r244) - | 414 -> One (r246) - | 413 -> One (r247) - | 257 -> One (r248) - | 420 -> One (r250) - | 342 -> One (r251) - | 260 -> One (r252) - | 259 -> One (r254) - | 258 -> One (r255) - | 341 -> One (r256) - | 323 -> One (r257) - | 304 -> One (r259) - | 335 -> One (r261) - | 334 -> One (r262) - | 264 -> One (r263) - | 266 -> One (r264) - | 333 -> One (r265) - | 332 -> One (r266) - | 283 -> One (r267) - | 282 -> One (r268) - | 322 -> One (r270) - | 309 -> One (r271) - | 327 -> One (r273) - | 326 -> One (r274) - | 279 | 1099 -> One (r275) - | 280 -> One (r277) - | 275 -> One (r278) - | 274 -> One (r279) - | 278 -> One (r281) - | 276 -> One (r284) - | 273 -> One (r286) - | 272 -> One (r287) - | 306 -> One (r288) - | 305 -> One (r289) - | 302 -> One (r290) - | 291 -> One (r291) - | 293 -> One (r292) - | 298 -> One (r293) - | 297 -> One (r294) - | 296 -> One (r295) - | 301 -> One (r296) - | 308 -> One (r297) - | 321 -> One (r298) - | 320 -> One (r300) - | 313 -> One (r301) - | 312 -> One (r302) - | 316 -> One (r303) - | 319 -> One (r304) - | 318 -> One (r305) - | 331 -> One (r306) - | 330 -> One (r307) - | 329 -> One (r308) - | 340 -> One (r309) - | 338 -> One (r311) - | 337 -> One (r312) - | 419 -> One (r313) - | 355 | 720 -> One (r315) - | 356 -> One (r317) - | 346 -> One (r318) - | 345 -> One (r319) - | 347 -> One (r320) - | 349 -> One (r321) - | 361 -> One (r323) - | 360 -> One (r325) - | 412 -> One (r326) - | 411 -> One (r327) - | 364 -> One (r328) - | 366 -> One (r329) - | 406 -> One (r330) - | 369 -> One (r331) - | 368 -> One (r332) - | 374 -> One (r333) - | 376 -> One (r334) - | 379 -> One (r335) - | 405 -> One (r336) - | 384 -> One (r337) - | 388 -> One (r339) - | 387 -> One (r340) - | 386 -> One (r341) - | 390 -> One (r342) - | 393 -> One (r343) - | 392 -> One (r344) - | 397 -> One (r345) - | 400 -> One (r346) - | 399 -> One (r347) - | 402 -> One (r348) - | 404 -> One (r349) - | 408 -> One (r350) - | 407 -> One (r351) - | 410 -> One (r352) - | 424 -> One (r353) - | 428 -> One (r354) - | 437 -> One (r355) - | 432 -> One (r356) - | 436 -> One (r358) - | 435 -> One (r359) - | 434 -> One (r360) - | 1595 -> One (r361) - | 1594 -> One (r362) - | 1593 -> One (r363) - | 440 -> One (r364) - | 1592 -> One (r365) - | 443 -> One (r366) - | 1468 -> One (r368) - | 1465 -> One (r370) - | 1464 -> One (r371) - | 1463 -> One (r372) - | 445 -> One (r373) - | 454 -> One (r375) - | 452 -> One (r376) - | 451 -> One (r377) - | 450 -> One (r378) - | 449 -> One (r379) - | 1589 -> One (r380) - | 461 -> One (r381) - | 1214 -> One (r383) - | 1590 -> One (r385) - | 458 -> One (r386) - | 457 -> One (r387) - | 456 -> One (r388) - | 460 -> One (r389) - | 1573 -> One (r390) - | 1572 -> One (r391) - | 1571 -> One (r392) - | 1570 -> One (r393) - | 1569 -> One (r394) - | 463 -> One (r395) - | 1344 -> One (r396) - | 1343 -> One (r397) - | 1342 -> One (r398) - | 1341 -> One (r399) - | 1340 -> One (r400) - | 1339 -> One (r401) - | 1568 -> One (r402) - | 549 -> One (r403) - | 548 -> One (r404) - | 466 -> One (r405) - | 465 -> One (r406) - | 536 -> One (r407) - | 534 -> One (r408) - | 533 -> One (r409) - | 468 -> One (r410) - | 470 -> One (r411) - | 532 -> One (r412) - | 531 -> One (r413) - | 472 -> One (r414) - | 530 -> One (r415) - | 529 -> One (r416) - | 528 -> One (r417) - | 475 -> One (r418) - | 483 -> One (r419) - | 481 -> One (r420) + | 918 -> One ([R 541]) + | 913 -> One ([R 542]) + | 1716 -> One ([R 544]) + | 1715 -> One ([R 545]) + | 1717 -> One ([R 546]) + | 1712 -> One ([R 547]) + | 1713 -> One ([R 548]) + | 947 -> One ([R 550]) + | 945 -> One ([R 551]) + | 589 -> One ([R 555]) + | 537 -> One ([R 556]) + | 489 -> One ([R 557]) + | 1305 -> One ([R 558]) + | 1304 -> One ([R 559]) + | 349 -> One ([R 561]) + | 319 -> One ([R 585]) + | 1417 -> One ([R 588]) + | 1418 -> One ([R 589]) + | 1572 -> One ([R 591]) + | 1573 -> One ([R 592]) + | 426 -> One ([R 594]) + | 427 -> One ([R 595]) + | 1519 -> One ([R 597]) + | 1520 -> One ([R 598]) + | 1177 -> One ([R 604]) + | 1145 -> One ([R 605]) + | 1148 -> One ([R 606]) + | 1147 -> One ([R 611]) + | 1152 -> One ([R 614]) + | 1151 -> One ([R 616]) + | 1150 -> One ([R 617]) + | 1149 -> One ([R 618]) + | 1178 -> One ([R 621]) + | 86 -> One ([R 624]) + | 83 -> One ([R 626]) + | 613 -> One ([R 650]) + | 680 -> One ([R 651]) + | 679 | 694 -> One ([R 652]) + | 616 | 675 -> One ([R 653]) + | 678 -> One ([R 663]) + | 363 -> One ([R 676]) + | 367 -> One ([R 679]) + | 368 -> One ([R 683]) + | 399 -> One ([R 685]) + | 372 -> One ([R 686]) + | 428 -> One ([R 688]) + | 390 -> One ([R 693]) + | 28 -> One ([R 694]) + | 8 -> One ([R 695]) + | 52 -> One ([R 697]) + | 51 -> One ([R 698]) + | 50 -> One ([R 699]) + | 49 -> One ([R 700]) + | 48 -> One ([R 701]) + | 47 -> One ([R 702]) + | 46 -> One ([R 703]) + | 45 -> One ([R 704]) + | 44 -> One ([R 705]) + | 43 -> One ([R 706]) + | 42 -> One ([R 707]) + | 41 -> One ([R 708]) + | 40 -> One ([R 709]) + | 39 -> One ([R 710]) + | 38 -> One ([R 711]) + | 37 -> One ([R 712]) + | 36 -> One ([R 713]) + | 35 -> One ([R 714]) + | 34 -> One ([R 715]) + | 33 -> One ([R 716]) + | 32 -> One ([R 717]) + | 31 -> One ([R 718]) + | 30 -> One ([R 719]) + | 29 -> One ([R 720]) + | 27 -> One ([R 721]) + | 26 -> One ([R 722]) + | 25 -> One ([R 723]) + | 24 -> One ([R 724]) + | 23 -> One ([R 725]) + | 22 -> One ([R 726]) + | 21 -> One ([R 727]) + | 20 -> One ([R 728]) + | 19 -> One ([R 729]) + | 18 -> One ([R 730]) + | 17 -> One ([R 731]) + | 16 -> One ([R 732]) + | 15 -> One ([R 733]) + | 14 -> One ([R 734]) + | 13 -> One ([R 735]) + | 12 -> One ([R 736]) + | 11 -> One ([R 737]) + | 10 -> One ([R 738]) + | 9 -> One ([R 739]) + | 7 -> One ([R 740]) + | 6 -> One ([R 741]) + | 5 -> One ([R 742]) + | 4 -> One ([R 743]) + | 3 -> One ([R 744]) + | 1374 -> One ([R 745]) + | 1395 -> One ([R 749]) + | 1378 | 1394 -> One ([R 751]) + | 1381 | 1396 -> One ([R 752]) + | 1387 -> One ([R 754]) + | 1375 -> One ([R 755]) + | 1365 -> One ([R 756]) + | 1373 -> One ([R 760]) + | 1377 -> One ([R 763]) + | 1376 -> One ([R 764]) + | 1388 -> One ([R 766]) + | 236 -> One ([R 768]) + | 235 -> One ([R 769]) + | 1840 -> One ([R 773]) + | 1841 -> One ([R 774]) + | 1843 -> One ([R 775]) + | 1844 -> One ([R 776]) + | 1842 -> One ([R 777]) + | 1839 -> One ([R 778]) + | 1845 -> One ([R 782]) + | 287 -> One ([R 784]) + | 495 -> One (R 792 :: r449) + | 509 -> One ([R 793]) + | 177 -> One ([R 798]) + | 180 -> One ([R 799]) + | 184 -> One ([R 800]) + | 178 -> One ([R 801]) + | 185 -> One ([R 802]) + | 181 -> One ([R 803]) + | 186 -> One ([R 804]) + | 183 -> One ([R 805]) + | 176 -> One ([R 806]) + | 364 -> One ([R 811]) + | 677 -> One ([R 812]) + | 1023 -> One ([R 820]) + | 1206 -> One ([R 821]) + | 1209 -> One ([R 822]) + | 1207 -> One ([R 823]) + | 1247 -> One ([R 824]) + | 1250 -> One ([R 825]) + | 1248 -> One ([R 826]) + | 498 -> One ([R 833]) + | 499 -> One ([R 834]) + | 1513 -> One (S (T T_WITH) :: r1113) + | 166 -> One (S (T T_TYPE) :: r125) + | 866 -> One (S (T T_STAR) :: r726) + | 1847 -> One (S (T T_SEMISEMI) :: r1197) + | 1854 -> One (S (T T_SEMISEMI) :: r1201) + | 1777 -> One (S (T T_RPAREN) :: r60) + | 309 | 1692 -> One (S (T T_RPAREN) :: r311) + | 375 -> One (S (T T_RPAREN) :: r344) + | 419 -> One (S (T T_RPAREN) :: r367) + | 479 -> One (S (T T_RPAREN) :: r421) + | 547 -> One (S (T T_RPAREN) :: r464) + | 1499 -> One (S (T T_RPAREN) :: r1102) + | 1637 -> One (S (T T_RPAREN) :: r1150) + | 1639 -> One (S (T T_RPAREN) :: r1151) + | 1685 -> One (S (T T_RPAREN) :: r1163) + | 1778 -> One (S (T T_RPAREN) :: r1180) + | 845 | 902 -> One (S (T T_RBRACKET) :: r252) + | 1505 -> One (S (T T_RBRACKET) :: r1105) + | 1507 -> One (S (T T_RBRACKET) :: r1106) + | 313 -> One (S (T T_QUOTE) :: r313) + | 1061 -> One (S (T T_OPEN) :: r865) + | 1276 -> One (S (T T_OPEN) :: r1018) + | 160 | 292 -> One (S (T T_MODULE) :: r121) + | 484 -> One (S (T T_MINUSGREATER) :: r428) + | 882 -> One (S (T T_MINUSGREATER) :: r732) + | 886 -> One (S (T T_MINUSGREATER) :: r734) + | 1122 -> One (S (T T_MINUSGREATER) :: r899) + | 124 -> One (S (T T_LPAREN) :: r104) + | 156 -> One (S (T T_LIDENT) :: r116) + | 440 -> One (S (T T_LIDENT) :: r370) + | 448 -> One (S (T T_LIDENT) :: r376) + | 651 -> One (S (T T_LIDENT) :: r571) + | 652 -> One (S (T T_LIDENT) :: r577) + | 663 -> One (S (T T_LIDENT) :: r580) + | 667 -> One (S (T T_LIDENT) :: r582) + | 850 -> One (S (T T_LIDENT) :: r722) + | 1210 -> One (S (T T_LIDENT) :: r964) + | 1251 -> One (S (T T_LIDENT) :: r992) + | 1328 -> One (S (T T_LIDENT) :: r1045) + | 81 -> One (S (T T_INT) :: r58) + | 84 -> One (S (T T_INT) :: r59) + | 681 -> One (S (T T_IN) :: r590) + | 685 -> One (S (T T_IN) :: r592) + | 1296 -> One (S (T T_IN) :: r1038) + | 561 -> One (S (T T_GREATERRBRACE) :: r471) + | 1575 -> One (S (T T_GREATERRBRACE) :: r1122) + | 206 -> One (S (T T_GREATER) :: r192) + | 1680 -> One (S (T T_GREATER) :: r1161) + | 527 -> One (S (T T_EQUAL) :: r460) + | 753 -> One (S (T T_EQUAL) :: r626) + | 1200 -> One (S (T T_EQUAL) :: r961) + | 1218 -> One (S (T T_EQUAL) :: r966) + | 1489 -> One (S (T T_EQUAL) :: r1100) + | 1618 -> One (S (T T_EQUAL) :: r1146) + | 1769 -> One (S (T T_EOF) :: r1178) + | 1773 -> One (S (T T_EOF) :: r1179) + | 1792 -> One (S (T T_EOF) :: r1185) + | 1796 -> One (S (T T_EOF) :: r1186) + | 1800 -> One (S (T T_EOF) :: r1187) + | 1803 -> One (S (T T_EOF) :: r1188) + | 1808 -> One (S (T T_EOF) :: r1189) + | 1812 -> One (S (T T_EOF) :: r1190) + | 1816 -> One (S (T T_EOF) :: r1191) + | 1820 -> One (S (T T_EOF) :: r1192) + | 1824 -> One (S (T T_EOF) :: r1193) + | 1827 -> One (S (T T_EOF) :: r1194) + | 1831 -> One (S (T T_EOF) :: r1195) + | 1871 -> One (S (T T_EOF) :: r1210) + | 1562 -> One (S (T T_END) :: r1121) + | 126 -> One (S (T T_DOTDOT) :: r105) + | 201 -> One (S (T T_DOTDOT) :: r185) + | 920 -> One (S (T T_DOTDOT) :: r761) + | 921 -> One (S (T T_DOTDOT) :: r762) + | 226 | 1411 | 1458 -> One (S (T T_DOT) :: r223) + | 1834 -> One (S (T T_DOT) :: r461) + | 826 -> One (S (T T_DOT) :: r687) + | 853 -> One (S (T T_DOT) :: r724) + | 880 -> One (S (T T_DOT) :: r730) + | 1613 -> One (S (T T_DOT) :: r1144) + | 1782 -> One (S (T T_DOT) :: r1184) + | 744 -> One (S (T T_COMMA) :: r612) + | 202 | 842 -> One (S (T T_COLONCOLON) :: r187) + | 207 -> One (S (T T_COLON) :: r197) + | 481 -> One (S (T T_COLON) :: r424) + | 1116 -> One (S (T T_COLON) :: r897) + | 245 -> One (S (T T_BARRBRACKET) :: r242) + | 253 -> One (S (T T_BARRBRACKET) :: r251) + | 437 -> One (S (T T_BARRBRACKET) :: r369) + | 1501 -> One (S (T T_BARRBRACKET) :: r1103) + | 1503 -> One (S (T T_BARRBRACKET) :: r1104) + | 1626 -> One (S (T T_BARRBRACKET) :: r1147) + | 338 -> One (S (T T_BAR) :: r323) + | 79 -> One (S (N N_pattern) :: r56) + | 392 | 465 -> One (S (N N_pattern) :: r62) + | 353 -> One (S (N N_pattern) :: r328) + | 383 -> One (S (N N_pattern) :: r348) + | 385 -> One (S (N N_pattern) :: r349) + | 406 -> One (S (N N_pattern) :: r360) + | 411 -> One (S (N N_pattern) :: r363) + | 756 -> One (S (N N_pattern) :: r627) + | 758 -> One (S (N N_pattern) :: r628) + | 760 -> One (S (N N_pattern) :: r629) + | 767 -> One (S (N N_pattern) :: r631) + | 773 -> One (S (N N_pattern) :: r635) + | 103 -> One (S (N N_module_type) :: r75) + | 483 -> One (S (N N_module_type) :: r426) + | 523 -> One (S (N N_module_type) :: r457) + | 525 -> One (S (N N_module_type) :: r458) + | 551 -> One (S (N N_module_type) :: r466) + | 782 -> One (S (N N_module_type) :: r651) + | 794 -> One (S (N N_module_type) :: r659) + | 1634 -> One (S (N N_module_type) :: r1149) + | 1649 -> One (S (N N_module_type) :: r1153) + | 1652 -> One (S (N N_module_type) :: r1155) + | 1655 -> One (S (N N_module_type) :: r1157) + | 219 -> One (S (N N_module_expr) :: r211) + | 456 -> One (S (N N_let_pattern) :: r393) + | 247 -> One (S (N N_expr) :: r243) + | 563 -> One (S (N N_expr) :: r474) + | 567 -> One (S (N N_expr) :: r485) + | 649 -> One (S (N N_expr) :: r570) + | 674 -> One (S (N N_expr) :: r588) + | 690 -> One (S (N N_expr) :: r593) + | 692 -> One (S (N N_expr) :: r594) + | 696 -> One (S (N N_expr) :: r595) + | 698 -> One (S (N N_expr) :: r596) + | 700 -> One (S (N N_expr) :: r597) + | 702 -> One (S (N N_expr) :: r598) + | 704 -> One (S (N N_expr) :: r599) + | 706 -> One (S (N N_expr) :: r600) + | 708 -> One (S (N N_expr) :: r601) + | 710 -> One (S (N N_expr) :: r602) + | 712 -> One (S (N N_expr) :: r603) + | 714 -> One (S (N N_expr) :: r604) + | 716 -> One (S (N N_expr) :: r605) + | 718 -> One (S (N N_expr) :: r606) + | 720 -> One (S (N N_expr) :: r607) + | 722 -> One (S (N N_expr) :: r608) + | 724 -> One (S (N N_expr) :: r609) + | 726 -> One (S (N N_expr) :: r610) + | 730 -> One (S (N N_expr) :: r613) + | 732 -> One (S (N N_expr) :: r614) + | 734 -> One (S (N N_expr) :: r615) + | 736 -> One (S (N N_expr) :: r616) + | 1430 -> One (S (N N_expr) :: r1083) + | 1435 -> One (S (N N_expr) :: r1087) + | 1440 -> One (S (N N_expr) :: r1091) + | 1446 -> One (S (N N_expr) :: r1092) + | 1451 -> One (S (N N_expr) :: r1093) + | 1456 -> One (S (N N_expr) :: r1094) + | 1463 -> One (S (N N_expr) :: r1095) + | 1468 -> One (S (N N_expr) :: r1096) + | 1473 -> One (S (N N_expr) :: r1097) + | 1476 -> One (S (N N_expr) :: r1098) + | 1559 -> One (S (N N_expr) :: r1120) + | 75 -> One (Sub (r1) :: r49) + | 566 -> One (Sub (r1) :: r483) + | 612 -> One (Sub (r1) :: r545) + | 641 -> One (Sub (r1) :: r562) + | 665 -> One (Sub (r1) :: r581) + | 1300 -> One (Sub (r1) :: r1039) + | 451 -> One (Sub (r7) :: r380) + | 582 -> One (Sub (r7) :: r503) + | 775 -> One (Sub (r7) :: r636) + | 1540 -> One (Sub (r7) :: r1119) + | 1754 -> One (Sub (r7) :: r1176) + | 1756 -> One (Sub (r7) :: r1177) + | 2 -> One (Sub (r17) :: r18) + | 55 -> One (Sub (r17) :: r19) + | 59 -> One (Sub (r17) :: r26) + | 209 -> One (Sub (r17) :: r200) + | 741 -> One (Sub (r17) :: r618) + | 771 -> One (Sub (r17) :: r634) + | 812 -> One (Sub (r17) :: r668) + | 814 -> One (Sub (r17) :: r671) + | 1277 -> One (Sub (r17) :: r1023) + | 580 -> One (Sub (r40) :: r500) + | 599 -> One (Sub (r40) :: r524) + | 1752 -> One (Sub (r42) :: r1175) + | 790 -> One (Sub (r69) :: r656) + | 987 -> One (Sub (r69) :: r799) + | 894 -> One (Sub (r78) :: r735) + | 413 -> One (Sub (r83) :: r364) + | 762 -> One (Sub (r83) :: r630) + | 288 -> One (Sub (r85) :: r301) + | 303 -> One (Sub (r85) :: r309) + | 591 -> One (Sub (r85) :: r520) + | 879 -> One (Sub (r85) :: r728) + | 293 -> One (Sub (r87) :: r308) + | 1124 -> One (Sub (r87) :: r902) + | 286 -> One (Sub (r89) :: r300) + | 330 -> One (Sub (r91) :: r320) + | 502 -> One (Sub (r91) :: r451) + | 261 -> One (Sub (r93) :: r265) + | 408 -> One (Sub (r93) :: r362) + | 443 -> One (Sub (r93) :: r375) + | 458 -> One (Sub (r93) :: r394) + | 505 -> One (Sub (r93) :: r454) + | 634 -> One (Sub (r93) :: r558) + | 654 -> One (Sub (r93) :: r578) + | 658 -> One (Sub (r93) :: r579) + | 749 -> One (Sub (r93) :: r624) + | 1033 -> One (Sub (r93) :: r845) + | 1071 -> One (Sub (r93) :: r876) + | 1690 -> One (Sub (r93) :: r1165) + | 1693 -> One (Sub (r93) :: r1166) + | 1742 -> One (Sub (r93) :: r1174) + | 1226 -> One (Sub (r95) :: r981) + | 1257 -> One (Sub (r95) :: r995) + | 189 -> One (Sub (r111) :: r180) + | 827 -> One (Sub (r111) :: r688) + | 1837 -> One (Sub (r111) :: r1196) + | 358 -> One (Sub (r132) :: r336) + | 195 -> One (Sub (r175) :: r181) + | 182 -> One (Sub (r177) :: r179) + | 1025 -> One (Sub (r177) :: r839) + | 199 -> One (Sub (r183) :: r184) + | 901 -> One (Sub (r183) :: r754) + | 950 -> One (Sub (r183) :: r769) + | 256 -> One (Sub (r262) :: r264) + | 323 -> One (Sub (r267) :: r314) + | 267 -> One (Sub (r269) :: r276) + | 281 -> One (Sub (r269) :: r299) + | 268 -> One (Sub (r282) :: r284) + | 269 -> One (Sub (r286) :: r287) + | 305 -> One (Sub (r286) :: r310) + | 1687 -> One (Sub (r286) :: r1164) + | 271 -> One (Sub (r293) :: r295) + | 531 -> One (Sub (r293) :: r462) + | 984 -> One (Sub (r293) :: r794) + | 346 -> One (Sub (r325) :: r327) + | 469 -> One (Sub (r331) :: r397) + | 369 -> One (Sub (r339) :: r340) + | 393 -> One (Sub (r353) :: r356) + | 466 -> One (Sub (r353) :: r396) + | 1227 -> One (Sub (r353) :: r986) + | 1258 -> One (Sub (r353) :: r1000) + | 1607 -> One (Sub (r353) :: r1140) + | 441 -> One (Sub (r372) :: r374) + | 449 -> One (Sub (r372) :: r379) + | 1495 -> One (Sub (r382) :: r1101) + | 452 -> One (Sub (r384) :: r387) + | 454 -> One (Sub (r389) :: r390) + | 535 -> One (Sub (r442) :: r463) + | 494 -> One (Sub (r444) :: r445) + | 564 -> One (Sub (r480) :: r482) + | 1512 -> One (Sub (r480) :: r1111) + | 806 -> One (Sub (r639) :: r665) + | 1707 -> One (Sub (r689) :: r1170) + | 1719 -> One (Sub (r689) :: r1172) + | 847 -> One (Sub (r705) :: r706) + | 848 -> One (Sub (r714) :: r716) + | 903 -> One (Sub (r714) :: r756) + | 922 -> One (Sub (r714) :: r764) + | 930 -> One (Sub (r714) :: r766) + | 1695 -> One (Sub (r714) :: r1168) + | 1008 -> One (Sub (r781) :: r810) + | 1001 -> One (Sub (r807) :: r809) + | 1324 -> One (Sub (r819) :: r1044) + | 1348 -> One (Sub (r819) :: r1053) + | 1288 -> One (Sub (r871) :: r1030) + | 1275 -> One (Sub (r931) :: r1013) + | 1352 -> One (Sub (r934) :: r1054) + | 1193 -> One (Sub (r952) :: r954) + | 1221 -> One (Sub (r972) :: r974) + | 1509 -> One (Sub (r1107) :: r1109) + | 64 -> One (r0) + | 650 -> One (r2) + | 689 -> One (r4) + | 688 -> One (r6) + | 1768 -> One (r8) + | 1767 -> One (r9) + | 1766 -> One (r10) + | 1765 -> One (r11) + | 1764 -> One (r12) + | 58 -> One (r13) + | 53 -> One (r14) + | 54 -> One (r16) + | 57 -> One (r18) + | 56 -> One (r19) + | 1389 -> One (r20) + | 1393 -> One (r22) + | 1763 -> One (r24) + | 1762 -> One (r25) + | 60 -> One (r26) + | 1761 -> One (r27) + | 1760 -> One (r28) + | 1759 -> One (r29) + | 1758 -> One (r30) + | 63 -> One (r31) + | 62 -> One (r32) + | 65 -> One (r33) + | 1751 -> One (r34) + | 68 -> One (r35) + | 67 -> One (r36) + | 1553 -> One (r37) + | 1551 -> One (r38) + | 581 -> One (r39) + | 601 -> One (r41) + | 1750 -> One (r43) + | 1749 -> One (r44) + | 1748 -> One (r45) + | 71 -> One (r46) + | 70 -> One (r47) + | 74 -> One (r48) + | 1628 -> One (r49) + | 1747 -> One (r50) + | 1746 -> One (r51) + | 1745 -> One (r52) + | 78 -> One (r53) + | 77 -> One (r54) + | 1741 -> One (r55) + | 1740 -> One (r56) + | 80 -> One (r57) + | 82 -> One (r58) + | 85 -> One (r59) + | 89 -> One (r60) + | 405 -> One (r61) + | 404 -> One (r62) + | 144 -> One (r63) + | 146 -> One (r65) + | 145 -> One (r66) + | 110 -> One (r67) + | 99 -> One (r68) + | 102 -> One (r70) + | 101 -> One (r71) + | 98 -> One (r72) + | 97 -> One (r73) + | 1739 -> One (r74) + | 1738 -> One (r75) + | 104 | 151 -> One (r76) + | 1181 -> One (r77) + | 1737 -> One (r79) + | 1736 -> One (r80) + | 106 -> One (r81) + | 147 | 246 | 565 | 1526 -> One (r82) + | 150 -> One (r84) + | 302 -> One (r86) + | 285 -> One (r88) + | 308 -> One (r90) + | 312 -> One (r92) + | 837 -> One (r94) + | 1735 -> One (r96) + | 1734 -> One (r97) + | 149 -> One (r98) + | 148 -> One (r99) + | 109 -> One (r100) + | 108 -> One (r101) + | 129 -> One (r102) + | 128 -> One (r103) + | 125 -> One (r104) + | 127 -> One (r105) + | 133 -> One (r106) + | 132 -> One (r107) + | 137 -> One (r108) + | 136 -> One (r109) + | 154 -> One (r110) + | 162 -> One (r112) + | 161 -> One (r113) + | 158 -> One (r115) + | 157 -> One (r116) + | 1733 -> One (r117) + | 1732 -> One (r118) + | 165 -> One (r119) + | 164 -> One (r120) + | 163 -> One (r121) + | 1731 -> One (r122) + | 169 -> One (r123) + | 168 -> One (r124) + | 167 -> One (r125) + | 1730 -> One (r126) + | 1729 -> One (r127) + | 172 -> One (r128) + | 205 -> One (r129) + | 296 -> One (r131) + | 361 -> One (r133) + | 893 -> One (r135) + | 929 -> One (r137) + | 928 -> One (r138) + | 927 | 1718 -> One (r139) + | 1714 -> One (r141) + | 1728 -> One (r143) + | 1727 -> One (r144) + | 1726 -> One (r145) + | 1725 -> One (r146) + | 1724 -> One (r147) + | 956 -> One (r151) + | 955 -> One (r152) + | 954 -> One (r153) + | 1711 -> One (r159) + | 1710 -> One (r160) + | 1704 -> One (r161) + | 1703 -> One (r162) + | 1702 -> One (r163) + | 938 -> One (r165) + | 937 -> One (r166) + | 936 -> One (r167) + | 188 -> One (r171) + | 191 -> One (r173) + | 187 -> One (r174) + | 192 -> One (r176) + | 194 -> One (r178) + | 193 -> One (r179) + | 190 -> One (r180) + | 196 -> One (r181) + | 906 -> One (r182) + | 1701 -> One (r184) + | 1698 -> One (r185) + | 844 -> One (r186) + | 843 -> One (r187) + | 1684 -> One (r188) + | 1683 -> One (r189) + | 1682 -> One (r190) + | 204 -> One (r191) + | 1679 -> One (r192) + | 860 -> One (r193) + | 1671 -> One (r195) + | 1670 -> One (r196) + | 208 -> One (r197) + | 1669 -> One (r198) + | 1668 -> One (r199) + | 210 -> One (r200) + | 1667 -> One (r201) + | 1663 -> One (r202) + | 1662 -> One (r203) + | 1661 -> One (r204) + | 1660 -> One (r205) + | 1659 -> One (r206) + | 1658 -> One (r207) + | 218 -> One (r208) + | 217 -> One (r209) + | 550 -> One (r210) + | 549 -> One (r211) + | 1648 -> One (r212) + | 1647 -> One (r213) + | 221 -> One (r214) + | 225 -> One (r215) + | 231 -> One (r217) + | 232 -> One (r219) + | 224 -> One (r220) + | 223 -> One (r221) + | 229 -> One (r222) + | 227 -> One (r223) + | 228 -> One (r224) + | 230 -> One (r225) + | 234 -> One (r226) + | 1646 -> One (r227) + | 1645 -> One (r228) + | 1644 -> One (r229) + | 239 -> One (r230) + | 238 -> One (r231) + | 1643 -> One (r232) + | 1642 -> One (r233) + | 1641 -> One (r234) + | 242 -> One (r235) + | 241 -> One (r236) + | 1633 -> One (r237) + | 1632 -> One (r238) + | 1631 -> One (r239) + | 1630 -> One (r240) + | 1629 -> One (r241) + | 1625 -> One (r242) + | 1624 -> One (r243) + | 439 -> One (r244) + | 1623 -> One (r246) + | 1622 -> One (r247) + | 252 -> One (r248) + | 250 -> One (r249) + | 249 -> One (r250) + | 436 -> One (r251) + | 255 -> One (r252) + | 425 -> One (r253) + | 424 -> One (r255) + | 423 -> One (r256) + | 257 -> One (r257) + | 430 -> One (r259) + | 352 -> One (r260) + | 260 -> One (r261) + | 259 -> One (r263) + | 258 -> One (r264) + | 351 -> One (r265) + | 335 -> One (r266) + | 320 -> One (r268) + | 345 -> One (r270) + | 344 -> One (r271) + | 264 -> One (r272) + | 266 -> One (r273) + | 265 -> One (r274) + | 343 -> One (r275) + | 342 -> One (r276) + | 283 -> One (r277) + | 282 -> One (r278) + | 334 -> One (r280) + | 325 -> One (r281) + | 337 -> One (r283) + | 336 -> One (r284) + | 279 | 1127 -> One (r285) + | 280 -> One (r287) + | 278 -> One (r288) + | 277 -> One (r289) + | 270 -> One (r290) + | 276 -> One (r292) + | 273 -> One (r294) + | 272 -> One (r295) + | 275 -> One (r296) + | 274 -> One (r297) + | 322 -> One (r298) + | 321 -> One (r299) + | 318 -> One (r300) + | 317 -> One (r301) + | 316 -> One (r304) + | 297 -> One (r306) + | 295 -> One (r307) + | 294 -> One (r308) + | 304 -> One (r309) + | 306 -> One (r310) + | 310 -> One (r311) + | 315 -> One (r312) + | 314 -> One (r313) + | 324 -> One (r314) + | 333 -> One (r315) + | 332 -> One (r317) + | 329 -> One (r318) + | 328 -> One (r319) + | 331 -> One (r320) + | 341 -> One (r321) + | 340 -> One (r322) + | 339 -> One (r323) + | 350 -> One (r324) + | 348 -> One (r326) + | 347 -> One (r327) + | 429 -> One (r328) + | 365 | 748 -> One (r330) + | 366 -> One (r332) + | 356 -> One (r333) + | 355 -> One (r334) + | 357 -> One (r335) + | 359 -> One (r336) + | 371 -> One (r338) + | 370 -> One (r340) + | 422 -> One (r341) + | 421 -> One (r342) + | 374 -> One (r343) + | 376 -> One (r344) + | 416 -> One (r345) + | 379 -> One (r346) + | 378 -> One (r347) + | 384 -> One (r348) + | 386 -> One (r349) + | 389 -> One (r350) + | 415 -> One (r351) + | 394 -> One (r352) + | 398 -> One (r354) + | 397 -> One (r355) + | 396 -> One (r356) + | 400 -> One (r357) + | 403 -> One (r358) + | 402 -> One (r359) + | 407 -> One (r360) + | 410 -> One (r361) + | 409 -> One (r362) + | 412 -> One (r363) + | 414 -> One (r364) + | 418 -> One (r365) + | 417 -> One (r366) + | 420 -> One (r367) + | 434 -> One (r368) + | 438 -> One (r369) + | 447 -> One (r370) + | 442 -> One (r371) + | 446 -> One (r373) + | 445 -> One (r374) + | 444 -> One (r375) + | 1605 -> One (r376) + | 1604 -> One (r377) + | 1603 -> One (r378) + | 450 -> One (r379) + | 1602 -> One (r380) + | 453 -> One (r381) + | 1497 -> One (r383) + | 1494 -> One (r385) + | 1493 -> One (r386) + | 1492 -> One (r387) + | 455 -> One (r388) + | 464 -> One (r390) + | 462 -> One (r391) + | 461 -> One (r392) + | 460 -> One (r393) + | 459 -> One (r394) + | 468 -> One (r395) + | 467 -> One (r396) + | 470 -> One (r397) + | 1600 -> One (r398) + | 471 -> One (r399) + | 1372 -> One (r400) + | 1371 -> One (r401) + | 1370 -> One (r402) + | 1369 -> One (r403) + | 1368 -> One (r404) + | 1367 -> One (r405) + | 1584 -> One (r406) + | 1583 -> One (r407) + | 1582 -> One (r408) + | 1581 -> One (r409) + | 1580 -> One (r410) + | 473 -> One (r411) + | 1579 -> One (r412) + | 559 -> One (r413) + | 558 -> One (r414) + | 476 -> One (r415) + | 475 -> One (r416) + | 546 -> One (r417) + | 544 -> One (r418) + | 543 -> One (r419) + | 478 -> One (r420) | 480 -> One (r421) - | 477 -> One (r422) - | 511 -> One (r423) - | 510 -> One (r425) - | 504 -> One (r427) - | 503 -> One (r428) - | 502 -> One (r429) - | 501 -> One (r430) - | 500 -> One (r431) - | 523 -> One (r433) - | 524 -> One (r435) - | 491 -> One (r436) - | 490 -> One (r437) - | 487 -> One (r438) - | 486 -> One (r439) - | 494 -> One (r440) - | 493 -> One (r441) - | 498 -> One (r442) - | 497 -> One (r443) - | 496 -> One (r444) - | 509 -> One (r445) - | 514 -> One (r447) - | 516 -> One (r448) - | 519 -> One (r449) - | 518 -> One (r450) - | 520 | 1826 -> One (r451) - | 522 -> One (r452) - | 526 -> One (r453) - | 538 -> One (r454) - | 543 -> One (r455) - | 542 -> One (r456) - | 1387 -> One (r457) - | 1567 -> One (r459) - | 1566 -> One (r460) - | 1563 -> One (r461) - | 1560 -> One (r462) - | 552 -> One (r463) - | 1559 -> One (r464) - | 1490 -> One (r465) - | 1489 -> One (r466) - | 1487 -> One (r467) - | 1493 -> One (r469) - | 1558 -> One (r471) - | 1557 -> One (r472) - | 1556 -> One (r473) - | 1555 -> One (r474) - | 1554 -> One (r475) - | 1553 -> One (r476) - | 560 -> One (r477) - | 559 -> One (r478) - | 1550 -> One (r479) - | 563 -> One (r480) - | 562 -> One (r481) - | 1547 -> One (r482) - | 1546 -> One (r483) - | 1545 -> One (r484) - | 566 -> One (r485) - | 565 -> One (r486) - | 1541 -> One (r487) + | 542 -> One (r422) + | 541 -> One (r423) + | 482 -> One (r424) + | 540 -> One (r425) + | 539 -> One (r426) + | 538 -> One (r427) + | 485 -> One (r428) + | 493 -> One (r429) + | 491 -> One (r430) + | 490 -> One (r431) + | 487 -> One (r432) + | 521 -> One (r433) + | 520 -> One (r435) + | 514 -> One (r437) + | 513 -> One (r438) + | 512 -> One (r439) + | 511 -> One (r440) + | 510 -> One (r441) + | 533 -> One (r443) + | 534 -> One (r445) + | 501 -> One (r446) + | 500 -> One (r447) + | 497 -> One (r448) + | 496 -> One (r449) + | 504 -> One (r450) + | 503 -> One (r451) + | 508 -> One (r452) + | 507 -> One (r453) + | 506 -> One (r454) + | 519 -> One (r455) + | 524 -> One (r457) + | 526 -> One (r458) + | 529 -> One (r459) + | 528 -> One (r460) + | 530 | 1835 -> One (r461) + | 532 -> One (r462) + | 536 -> One (r463) + | 548 -> One (r464) + | 553 -> One (r465) + | 552 -> One (r466) + | 1416 -> One (r467) + | 1578 -> One (r469) + | 1577 -> One (r470) + | 1574 -> One (r471) + | 1571 -> One (r472) + | 562 -> One (r473) + | 1570 -> One (r474) + | 1518 -> One (r475) + | 1517 -> One (r476) + | 1516 -> One (r477) + | 1521 -> One (r479) + | 1569 -> One (r481) + | 1568 -> One (r482) + | 1567 -> One (r483) + | 1566 -> One (r484) + | 1565 -> One (r485) + | 1564 -> One (r486) + | 570 -> One (r487) | 569 -> One (r488) - | 568 -> One (r489) - | 1540 -> One (r490) - | 1536 -> One (r491) - | 1535 -> One (r492) - | 1534 -> One (r493) - | 1209 -> One (r494) - | 1519 -> One (r496) - | 580 -> One (r497) - | 1533 -> One (r499) - | 1532 -> One (r500) - | 575 -> One (r501) - | 574 -> One (r502) - | 1531 -> One (r503) - | 579 -> One (r504) - | 578 -> One (r505) - | 1511 -> One (r506) - | 1510 -> One (r507) - | 1509 -> One (r508) - | 1508 -> One (r509) - | 585 -> One (r510) - | 584 -> One (r511) - | 583 -> One (r512) - | 582 -> One (r513) - | 1502 -> One (r514) - | 1507 -> One (r516) - | 1506 -> One (r517) - | 1505 -> One (r518) - | 1504 -> One (r519) - | 1503 -> One (r520) - | 1500 -> One (r521) - | 590 -> One (r522) - | 589 -> One (r523) - | 588 -> One (r524) - | 587 -> One (r525) - | 594 -> One (r526) - | 599 -> One (r527) - | 598 -> One (r528) - | 597 | 1497 -> One (r529) - | 1496 -> One (r530) - | 608 -> One (r531) - | 607 -> One (r532) - | 606 -> One (r533) - | 605 -> One (r534) - | 604 -> One (r535) - | 603 -> One (r536) - | 1459 -> One (r537) - | 615 -> One (r538) - | 614 -> One (r539) - | 619 -> One (r540) - | 618 -> One (r541) - | 617 -> One (r542) - | 621 -> One (r543) - | 1400 | 1452 -> One (r544) - | 1399 | 1451 -> One (r545) - | 623 | 1398 -> One (r546) - | 622 | 1397 -> One (r547) - | 1450 -> One (r548) - | 637 -> One (r549) - | 632 -> One (r550) - | 631 | 1596 -> One (r551) - | 636 -> One (r553) - | 635 -> One (r554) - | 628 -> One (r555) - | 630 -> One (r556) - | 634 -> One (r557) - | 639 -> One (r558) - | 641 -> One (r559) - | 643 -> One (r560) - | 647 | 1416 -> One (r561) - | 646 | 1415 -> One (r562) - | 645 | 1414 -> One (r563) - | 644 | 1413 -> One (r564) - | 1375 -> One (r565) - | 658 -> One (r566) - | 657 -> One (r567) - | 662 -> One (r568) - | 661 -> One (r569) - | 665 -> One (r570) - | 667 -> One (r571) - | 672 -> One (r572) - | 676 -> One (r573) - | 675 -> One (r574) - | 679 -> One (r575) - | 681 -> One (r576) - | 683 -> One (r577) - | 685 -> One (r578) - | 687 -> One (r579) - | 689 -> One (r580) - | 691 -> One (r581) - | 693 -> One (r582) - | 695 -> One (r583) - | 697 -> One (r584) - | 699 -> One (r585) - | 701 -> One (r586) - | 703 -> One (r587) - | 705 -> One (r588) - | 707 -> One (r589) - | 709 -> One (r590) - | 711 -> One (r591) - | 713 -> One (r592) - | 715 -> One (r593) - | 717 -> One (r594) - | 1374 -> One (r595) - | 742 -> One (r596) - | 719 -> One (r597) - | 724 -> One (r598) - | 723 -> One (r599) - | 722 -> One (r600) - | 727 -> One (r601) - | 726 -> One (r602) - | 729 -> One (r603) - | 731 -> One (r604) - | 733 -> One (r605) - | 735 -> One (r606) - | 740 -> One (r607) - | 1373 -> One (r608) - | 1372 -> One (r609) - | 744 -> One (r610) - | 746 -> One (r611) - | 748 -> One (r612) - | 765 -> One (r613) - | 764 -> One (r614) - | 783 -> One (r616) - | 782 -> One (r617) - | 781 -> One (r618) - | 761 -> One (r619) - | 760 -> One (r620) - | 759 -> One (r621) - | 756 -> One (r622) - | 753 -> One (r623) - | 752 -> One (r624) - | 751 -> One (r625) - | 750 -> One (r626) - | 755 -> One (r627) - | 758 -> One (r628) - | 780 -> One (r629) - | 771 -> One (r630) - | 770 -> One (r631) - | 763 -> One (r632) - | 769 -> One (r633) - | 768 -> One (r634) - | 767 -> One (r635) - | 777 -> One (r636) - | 776 -> One (r637) - | 775 -> One (r638) - | 774 -> One (r639) - | 773 -> One (r640) - | 779 -> One (r641) - | 1371 -> One (r642) - | 1370 -> One (r643) - | 785 -> One (r644) - | 1366 -> One (r645) - | 1365 -> One (r646) - | 787 -> One (r647) - | 792 -> One (r648) - | 791 -> One (r649) - | 790 -> One (r650) - | 789 -> One (r651) - | 805 -> One (r652) - | 808 -> One (r654) - | 807 -> One (r655) - | 804 -> One (r656) - | 803 -> One (r657) - | 797 -> One (r658) - | 796 -> One (r659) - | 795 -> One (r660) - | 794 -> One (r661) - | 802 -> One (r662) - | 801 -> One (r663) - | 800 -> One (r664) - | 850 -> One (r666) - | 849 -> One (r667) - | 848 -> One (r668) - | 843 -> One (r669) - | 864 -> One (r673) - | 863 -> One (r674) - | 862 -> One (r675) - | 990 -> One (r676) - | 989 -> One (r677) - | 988 -> One (r678) - | 987 -> One (r679) - | 842 -> One (r680) - | 841 -> One (r682) - | 837 -> One (r689) - | 834 -> One (r691) - | 833 -> One (r692) - | 831 -> One (r693) - | 830 -> One (r694) - | 829 -> One (r695) - | 828 -> One (r696) - | 824 -> One (r697) - | 823 -> One (r698) - | 827 -> One (r699) - | 826 -> One (r700) - | 840 -> One (r701) - | 839 -> One (r702) - | 847 -> One (r703) - | 861 -> One (r704) - | 857 -> One (r705) - | 853 -> One (r706) - | 856 -> One (r707) - | 855 -> One (r708) - | 860 -> One (r709) - | 859 -> One (r710) - | 1152 -> One (r711) - | 918 -> One (r712) - | 933 -> One (r714) - | 932 -> One (r715) - | 931 -> One (r716) - | 930 -> One (r717) - | 929 -> One (r718) - | 916 -> One (r722) - | 915 -> One (r723) - | 914 -> One (r724) - | 912 -> One (r725) - | 911 -> One (r726) - | 888 -> One (r728) - | 887 -> One (r729) - | 886 -> One (r730) - | 877 -> One (r731) - | 876 -> One (r732) - | 882 -> One (r733) - | 881 -> One (r734) - | 880 | 1697 -> One (r735) - | 884 | 1696 -> One (r736) - | 905 -> One (r737) - | 897 -> One (r738) - | 896 -> One (r739) - | 895 -> One (r740) - | 904 -> One (r741) - | 903 -> One (r742) - | 925 -> One (r743) - | 924 -> One (r744) - | 923 -> One (r745) - | 1151 -> One (r746) - | 944 -> One (r747) - | 943 -> One (r748) - | 942 -> One (r749) - | 941 -> One (r750) - | 940 -> One (r751) - | 939 -> One (r752) - | 938 -> One (r753) - | 937 -> One (r754) - | 977 -> One (r755) - | 976 -> One (r756) - | 979 -> One (r758) - | 978 -> One (r759) - | 972 -> One (r760) - | 954 -> One (r761) - | 953 -> One (r762) - | 952 -> One (r763) - | 951 -> One (r764) - | 950 -> One (r765) - | 958 -> One (r769) - | 957 -> One (r770) - | 971 -> One (r771) - | 963 -> One (r772) - | 962 -> One (r773) - | 961 -> One (r774) - | 960 -> One (r775) - | 970 -> One (r776) - | 969 -> One (r777) - | 968 -> One (r778) - | 967 -> One (r779) - | 966 -> One (r780) - | 965 -> One (r781) - | 975 -> One (r784) - | 974 -> One (r785) + | 1561 -> One (r489) + | 573 -> One (r490) + | 572 -> One (r491) + | 1558 -> One (r492) + | 1557 -> One (r493) + | 1556 -> One (r494) + | 576 -> One (r495) + | 575 -> One (r496) + | 1555 -> One (r497) + | 579 -> One (r498) + | 578 -> One (r499) + | 1554 -> One (r500) + | 1550 -> One (r501) + | 1549 -> One (r502) + | 1548 -> One (r503) + | 586 -> One (r504) + | 588 -> One (r506) + | 1243 -> One (r508) + | 587 -> One (r510) + | 1241 -> One (r512) + | 1547 -> One (r514) + | 594 -> One (r515) + | 593 -> One (r516) + | 590 -> One (r517) + | 585 -> One (r518) + | 584 -> One (r519) + | 592 -> One (r520) + | 598 -> One (r521) + | 597 -> One (r522) + | 596 -> One (r523) + | 600 -> One (r524) + | 1539 -> One (r525) + | 1538 -> One (r526) + | 1537 -> One (r527) + | 1536 -> One (r528) + | 606 -> One (r529) + | 605 -> One (r530) + | 604 -> One (r531) + | 603 -> One (r532) + | 1530 -> One (r533) + | 1535 -> One (r535) + | 1534 -> One (r536) + | 1533 -> One (r537) + | 1532 -> One (r538) + | 1531 -> One (r539) + | 1528 -> One (r540) + | 611 -> One (r541) + | 610 -> One (r542) + | 609 -> One (r543) + | 608 -> One (r544) + | 615 -> One (r545) + | 620 -> One (r546) + | 619 -> One (r547) + | 618 | 1525 -> One (r548) + | 1524 -> One (r549) + | 629 -> One (r550) + | 628 -> One (r551) + | 627 -> One (r552) + | 626 -> One (r553) + | 625 -> One (r554) + | 624 -> One (r555) + | 1488 -> One (r556) + | 636 -> One (r557) + | 635 -> One (r558) + | 640 -> One (r559) + | 639 -> One (r560) + | 638 -> One (r561) + | 642 -> One (r562) + | 1429 | 1481 -> One (r563) + | 1428 | 1480 -> One (r564) + | 644 | 1427 -> One (r565) + | 643 | 1426 -> One (r566) + | 648 -> One (r567) + | 647 -> One (r568) + | 646 -> One (r569) + | 1479 -> One (r570) + | 662 -> One (r571) + | 657 -> One (r572) + | 656 | 1606 -> One (r573) + | 661 -> One (r575) + | 660 -> One (r576) + | 653 -> One (r577) + | 655 -> One (r578) + | 659 -> One (r579) + | 664 -> One (r580) + | 666 -> One (r581) + | 668 -> One (r582) + | 1425 | 1475 -> One (r583) + | 669 | 1442 -> One (r584) + | 672 | 1445 -> One (r585) + | 671 | 1444 -> One (r586) + | 670 | 1443 -> One (r587) + | 1404 -> One (r588) + | 683 -> One (r589) + | 682 -> One (r590) + | 687 -> One (r591) + | 686 -> One (r592) + | 739 -> One (r593) + | 693 -> One (r594) + | 697 -> One (r595) + | 699 -> One (r596) + | 701 -> One (r597) + | 703 -> One (r598) + | 705 -> One (r599) + | 707 -> One (r600) + | 709 -> One (r601) + | 711 -> One (r602) + | 713 -> One (r603) + | 715 -> One (r604) + | 717 -> One (r605) + | 719 -> One (r606) + | 721 -> One (r607) + | 723 -> One (r608) + | 725 -> One (r609) + | 727 -> One (r610) + | 729 -> One (r611) + | 728 -> One (r612) + | 731 -> One (r613) + | 733 -> One (r614) + | 735 -> One (r615) + | 737 -> One (r616) + | 743 -> One (r617) + | 742 -> One (r618) + | 1403 -> One (r619) + | 770 -> One (r620) + | 747 -> One (r621) + | 752 -> One (r622) + | 751 -> One (r623) + | 750 -> One (r624) + | 755 -> One (r625) + | 754 -> One (r626) + | 757 -> One (r627) + | 759 -> One (r628) + | 761 -> One (r629) + | 763 -> One (r630) + | 768 -> One (r631) + | 1402 -> One (r632) + | 1401 -> One (r633) + | 772 -> One (r634) + | 774 -> One (r635) + | 776 -> One (r636) + | 793 -> One (r637) + | 792 -> One (r638) + | 811 -> One (r640) + | 810 -> One (r641) + | 809 -> One (r642) + | 789 -> One (r643) + | 788 -> One (r644) + | 787 -> One (r645) + | 784 -> One (r646) + | 781 -> One (r647) + | 780 -> One (r648) + | 779 -> One (r649) + | 778 -> One (r650) + | 783 -> One (r651) + | 786 -> One (r652) + | 808 -> One (r653) + | 799 -> One (r654) + | 798 -> One (r655) + | 791 -> One (r656) + | 797 -> One (r657) + | 796 -> One (r658) + | 795 -> One (r659) + | 805 -> One (r660) + | 804 -> One (r661) + | 803 -> One (r662) + | 802 -> One (r663) + | 801 -> One (r664) + | 807 -> One (r665) + | 1400 -> One (r666) + | 1399 -> One (r667) + | 813 -> One (r668) + | 1398 -> One (r669) + | 1397 -> One (r670) + | 815 -> One (r671) + | 820 -> One (r672) + | 819 -> One (r673) + | 818 -> One (r674) + | 817 -> One (r675) + | 833 -> One (r676) + | 836 -> One (r678) + | 835 -> One (r679) + | 832 -> One (r680) + | 831 -> One (r681) + | 825 -> One (r682) + | 824 -> One (r683) + | 823 -> One (r684) + | 822 -> One (r685) + | 830 -> One (r686) + | 829 -> One (r687) + | 828 -> One (r688) + | 878 -> One (r690) + | 877 -> One (r691) + | 876 -> One (r692) + | 871 -> One (r693) + | 892 -> One (r697) + | 891 -> One (r698) + | 890 -> One (r699) + | 1018 -> One (r700) + | 1017 -> One (r701) + | 1016 -> One (r702) + | 1015 -> One (r703) + | 870 -> One (r704) + | 869 -> One (r706) + | 865 -> One (r713) + | 862 -> One (r715) + | 861 -> One (r716) + | 859 -> One (r717) + | 858 -> One (r718) + | 857 -> One (r719) + | 856 -> One (r720) + | 852 -> One (r721) + | 851 -> One (r722) + | 855 -> One (r723) + | 854 -> One (r724) + | 868 -> One (r725) + | 867 -> One (r726) + | 875 -> One (r727) + | 889 -> One (r728) + | 885 -> One (r729) + | 881 -> One (r730) + | 884 -> One (r731) + | 883 -> One (r732) + | 888 -> One (r733) + | 887 -> One (r734) + | 1180 -> One (r735) + | 946 -> One (r736) + | 961 -> One (r738) + | 960 -> One (r739) + | 959 -> One (r740) + | 958 -> One (r741) + | 957 -> One (r742) + | 944 -> One (r746) + | 943 -> One (r747) + | 942 -> One (r748) + | 940 -> One (r749) + | 939 -> One (r750) + | 916 -> One (r752) + | 915 -> One (r753) + | 914 -> One (r754) + | 905 -> One (r755) + | 904 -> One (r756) + | 910 -> One (r757) + | 909 -> One (r758) + | 908 | 1706 -> One (r759) + | 912 | 1705 -> One (r760) + | 933 -> One (r761) + | 925 -> One (r762) + | 924 -> One (r763) + | 923 -> One (r764) + | 932 -> One (r765) + | 931 -> One (r766) + | 953 -> One (r767) + | 952 -> One (r768) + | 951 -> One (r769) + | 1179 -> One (r770) + | 972 -> One (r771) + | 971 -> One (r772) + | 970 -> One (r773) + | 969 -> One (r774) + | 968 -> One (r775) + | 967 -> One (r776) + | 966 -> One (r777) + | 965 -> One (r778) + | 1005 -> One (r779) + | 1004 -> One (r780) + | 1007 -> One (r782) + | 1006 -> One (r783) + | 1000 -> One (r784) + | 982 -> One (r785) | 981 -> One (r786) - | 986 -> One (r787) - | 985 -> One (r788) - | 984 -> One (r789) - | 983 -> One (r790) - | 1046 | 1100 -> One (r792) - | 1102 -> One (r794) - | 1116 -> One (r796) - | 1106 -> One (r797) - | 1105 -> One (r798) - | 1087 -> One (r799) - | 1086 -> One (r800) - | 1085 -> One (r801) - | 1084 -> One (r802) - | 1083 -> One (r803) - | 1082 -> One (r804) - | 1081 -> One (r805) - | 1071 -> One (r806) - | 1070 -> One (r807) - | 1002 -> One (r808) - | 1001 -> One (r809) - | 1000 -> One (r810) - | 996 -> One (r811) - | 994 -> One (r812) - | 993 -> One (r813) - | 999 -> One (r814) - | 998 -> One (r815) - | 1064 -> One (r816) - | 1063 -> One (r817) - | 1008 -> One (r818) - | 1004 -> One (r819) - | 1007 -> One (r820) - | 1006 -> One (r821) - | 1019 -> One (r822) - | 1018 -> One (r823) - | 1017 -> One (r824) - | 1016 -> One (r825) - | 1015 -> One (r826) - | 1010 -> One (r827) - | 1030 -> One (r828) - | 1029 -> One (r829) - | 1028 -> One (r830) - | 1027 -> One (r831) - | 1026 -> One (r832) - | 1021 -> One (r833) - | 1055 -> One (r834) - | 1054 -> One (r835) - | 1032 -> One (r836) - | 1053 -> One (r837) - | 1052 -> One (r838) - | 1051 -> One (r839) - | 1050 -> One (r840) - | 1034 -> One (r841) - | 1048 -> One (r842) - | 1038 -> One (r843) - | 1037 -> One (r844) - | 1036 -> One (r845) - | 1045 | 1093 -> One (r846) - | 1042 -> One (r848) - | 1041 -> One (r849) - | 1040 -> One (r850) - | 1039 | 1092 -> One (r851) - | 1044 -> One (r852) - | 1060 -> One (r853) - | 1059 -> One (r854) - | 1058 -> One (r855) - | 1062 -> One (r857) - | 1061 -> One (r858) - | 1057 -> One (r859) - | 1066 -> One (r860) - | 1069 -> One (r861) + | 980 -> One (r787) + | 979 -> One (r788) + | 978 -> One (r789) + | 986 -> One (r793) + | 985 -> One (r794) + | 999 -> One (r795) + | 991 -> One (r796) + | 990 -> One (r797) + | 989 -> One (r798) + | 988 -> One (r799) + | 998 -> One (r800) + | 997 -> One (r801) + | 996 -> One (r802) + | 995 -> One (r803) + | 994 -> One (r804) + | 993 -> One (r805) + | 1003 -> One (r808) + | 1002 -> One (r809) + | 1009 -> One (r810) + | 1014 -> One (r811) + | 1013 -> One (r812) + | 1012 -> One (r813) + | 1011 -> One (r814) + | 1074 | 1128 -> One (r816) + | 1130 -> One (r818) + | 1144 -> One (r820) + | 1134 -> One (r821) + | 1133 -> One (r822) + | 1115 -> One (r823) + | 1114 -> One (r824) + | 1113 -> One (r825) + | 1112 -> One (r826) + | 1111 -> One (r827) + | 1110 -> One (r828) + | 1109 -> One (r829) + | 1099 -> One (r830) + | 1098 -> One (r831) + | 1030 -> One (r832) + | 1029 -> One (r833) + | 1028 -> One (r834) + | 1024 -> One (r835) + | 1022 -> One (r836) + | 1021 -> One (r837) + | 1027 -> One (r838) + | 1026 -> One (r839) + | 1092 -> One (r840) + | 1091 -> One (r841) + | 1036 -> One (r842) + | 1032 -> One (r843) + | 1035 -> One (r844) + | 1034 -> One (r845) + | 1047 -> One (r846) + | 1046 -> One (r847) + | 1045 -> One (r848) + | 1044 -> One (r849) + | 1043 -> One (r850) + | 1038 -> One (r851) + | 1058 -> One (r852) + | 1057 -> One (r853) + | 1056 -> One (r854) + | 1055 -> One (r855) + | 1054 -> One (r856) + | 1049 -> One (r857) + | 1083 -> One (r858) + | 1082 -> One (r859) + | 1060 -> One (r860) + | 1081 -> One (r861) | 1080 -> One (r862) | 1079 -> One (r863) | 1078 -> One (r864) - | 1077 -> One (r865) + | 1062 -> One (r865) | 1076 -> One (r866) - | 1075 -> One (r867) - | 1074 -> One (r868) - | 1073 -> One (r869) - | 1104 -> One (r870) - | 1091 -> One (r871) - | 1090 -> One (r872) - | 1089 -> One (r873) - | 1103 -> One (r874) - | 1095 -> One (r875) - | 1101 -> One (r876) - | 1098 -> One (r877) - | 1097 -> One (r878) - | 1115 -> One (r879) - | 1114 -> One (r880) - | 1113 -> One (r881) - | 1112 -> One (r882) - | 1111 -> One (r883) - | 1110 -> One (r884) - | 1109 -> One (r885) + | 1066 -> One (r867) + | 1065 -> One (r868) + | 1064 -> One (r869) + | 1073 | 1121 -> One (r870) + | 1070 -> One (r872) + | 1069 -> One (r873) + | 1068 -> One (r874) + | 1067 | 1120 -> One (r875) + | 1072 -> One (r876) + | 1088 -> One (r877) + | 1087 -> One (r878) + | 1086 -> One (r879) + | 1090 -> One (r881) + | 1089 -> One (r882) + | 1085 -> One (r883) + | 1094 -> One (r884) + | 1097 -> One (r885) | 1108 -> One (r886) - | 1125 -> One (r887) - | 1127 -> One (r888) - | 1137 -> One (r889) - | 1136 -> One (r890) - | 1135 -> One (r891) - | 1134 -> One (r892) - | 1133 -> One (r893) + | 1107 -> One (r887) + | 1106 -> One (r888) + | 1105 -> One (r889) + | 1104 -> One (r890) + | 1103 -> One (r891) + | 1102 -> One (r892) + | 1101 -> One (r893) | 1132 -> One (r894) - | 1131 -> One (r895) - | 1130 -> One (r896) - | 1148 -> One (r897) - | 1147 -> One (r898) - | 1146 -> One (r899) - | 1145 -> One (r900) - | 1144 -> One (r901) - | 1143 -> One (r902) - | 1142 -> One (r903) - | 1141 -> One (r904) - | 1140 -> One (r905) - | 1270 -> One (r906) - | 1319 -> One (r908) - | 1161 -> One (r909) - | 1336 -> One (r911) - | 1327 -> One (r912) - | 1326 -> One (r913) - | 1160 -> One (r914) - | 1159 -> One (r915) - | 1158 -> One (r916) - | 1157 -> One (r917) - | 1156 -> One (r918) - | 1313 -> One (r919) - | 1312 -> One (r920) - | 1164 -> One (r921) - | 1163 -> One (r922) - | 1189 -> One (r923) - | 1188 -> One (r924) - | 1187 -> One (r925) - | 1186 -> One (r926) - | 1177 -> One (r927) - | 1176 -> One (r929) - | 1175 -> One (r930) - | 1171 -> One (r931) - | 1170 -> One (r932) - | 1169 -> One (r933) - | 1168 -> One (r934) - | 1167 -> One (r935) - | 1174 -> One (r936) - | 1173 -> One (r937) - | 1185 -> One (r938) - | 1184 -> One (r939) - | 1183 -> One (r940) - | 1192 -> One (r941) - | 1191 -> One (r942) - | 1239 -> One (r943) - | 1228 -> One (r944) - | 1227 -> One (r945) - | 1218 -> One (r946) - | 1217 -> One (r948) - | 1216 -> One (r949) - | 1208 -> One (r950) - | 1197 -> One (r951) - | 1196 -> One (r952) - | 1195 -> One (r953) - | 1207 -> One (r954) - | 1206 -> One (r955) - | 1205 -> One (r956) - | 1204 -> One (r957) - | 1203 -> One (r958) - | 1202 -> One (r959) - | 1201 -> One (r960) - | 1200 -> One (r961) - | 1215 -> One (r962) - | 1213 -> One (r963) - | 1212 -> One (r964) - | 1226 -> One (r965) - | 1225 -> One (r966) - | 1224 -> One (r967) - | 1238 -> One (r968) - | 1237 -> One (r969) - | 1236 -> One (r970) - | 1235 -> One (r971) - | 1234 -> One (r972) - | 1233 -> One (r973) - | 1232 -> One (r974) - | 1231 -> One (r975) - | 1243 -> One (r976) - | 1242 -> One (r977) - | 1241 -> One (r978) - | 1307 -> One (r979) - | 1306 -> One (r980) - | 1305 -> One (r981) - | 1304 -> One (r982) - | 1303 -> One (r983) - | 1302 -> One (r984) - | 1299 -> One (r985) - | 1246 -> One (r986) - | 1295 -> One (r987) - | 1294 -> One (r988) - | 1289 -> One (r989) - | 1288 -> One (r990) - | 1287 -> One (r991) - | 1286 -> One (r992) - | 1255 -> One (r993) - | 1254 -> One (r994) - | 1253 -> One (r995) - | 1252 -> One (r996) - | 1251 -> One (r997) - | 1250 -> One (r998) - | 1285 -> One (r999) + | 1119 -> One (r895) + | 1118 -> One (r896) + | 1117 -> One (r897) + | 1131 -> One (r898) + | 1123 -> One (r899) + | 1129 -> One (r900) + | 1126 -> One (r901) + | 1125 -> One (r902) + | 1143 -> One (r903) + | 1142 -> One (r904) + | 1141 -> One (r905) + | 1140 -> One (r906) + | 1139 -> One (r907) + | 1138 -> One (r908) + | 1137 -> One (r909) + | 1136 -> One (r910) + | 1153 -> One (r911) + | 1155 -> One (r912) + | 1165 -> One (r913) + | 1164 -> One (r914) + | 1163 -> One (r915) + | 1162 -> One (r916) + | 1161 -> One (r917) + | 1160 -> One (r918) + | 1159 -> One (r919) + | 1158 -> One (r920) + | 1176 -> One (r921) + | 1175 -> One (r922) + | 1174 -> One (r923) + | 1173 -> One (r924) + | 1172 -> One (r925) + | 1171 -> One (r926) + | 1170 -> One (r927) + | 1169 -> One (r928) + | 1168 -> One (r929) + | 1298 -> One (r930) + | 1347 -> One (r932) + | 1189 -> One (r933) + | 1364 -> One (r935) + | 1355 -> One (r936) + | 1354 -> One (r937) + | 1188 -> One (r938) + | 1187 -> One (r939) + | 1186 -> One (r940) + | 1185 -> One (r941) + | 1184 -> One (r942) + | 1341 -> One (r943) + | 1340 -> One (r944) + | 1192 -> One (r945) + | 1191 -> One (r946) + | 1217 -> One (r947) + | 1216 -> One (r948) + | 1215 -> One (r949) + | 1214 -> One (r950) + | 1205 -> One (r951) + | 1204 -> One (r953) + | 1203 -> One (r954) + | 1199 -> One (r955) + | 1198 -> One (r956) + | 1197 -> One (r957) + | 1196 -> One (r958) + | 1195 -> One (r959) + | 1202 -> One (r960) + | 1201 -> One (r961) + | 1213 -> One (r962) + | 1212 -> One (r963) + | 1211 -> One (r964) + | 1220 -> One (r965) + | 1219 -> One (r966) + | 1267 -> One (r968) + | 1256 -> One (r969) + | 1255 -> One (r970) + | 1246 -> One (r971) + | 1245 -> One (r973) + | 1244 -> One (r974) + | 1236 -> One (r975) + | 1225 -> One (r976) + | 1224 -> One (r977) + | 1223 -> One (r978) + | 1235 -> One (r979) + | 1234 -> One (r980) + | 1233 -> One (r981) + | 1232 -> One (r982) + | 1231 -> One (r983) + | 1230 -> One (r984) + | 1229 -> One (r985) + | 1228 -> One (r986) + | 1242 -> One (r987) + | 1240 -> One (r988) + | 1239 -> One (r989) + | 1254 -> One (r990) + | 1253 -> One (r991) + | 1252 -> One (r992) + | 1266 -> One (r993) + | 1265 -> One (r994) + | 1264 -> One (r995) + | 1263 -> One (r996) + | 1262 -> One (r997) + | 1261 -> One (r998) + | 1260 -> One (r999) | 1259 -> One (r1000) - | 1258 -> One (r1001) - | 1257 -> One (r1002) - | 1263 -> One (r1003) - | 1262 -> One (r1004) - | 1261 -> One (r1005) - | 1282 -> One (r1006) - | 1267 -> One (r1007) - | 1266 -> One (r1008) - | 1284 -> One (r1010) - | 1265 -> One (r1011) - | 1279 -> One (r1012) - | 1269 -> One (r1013) - | 1273 -> One (r1014) - | 1293 -> One (r1015) - | 1292 -> One (r1016) - | 1291 -> One (r1017) - | 1298 -> One (r1018) - | 1297 -> One (r1019) - | 1301 -> One (r1020) - | 1311 -> One (r1021) - | 1310 -> One (r1022) - | 1309 -> One (r1023) - | 1315 -> One (r1024) - | 1318 -> One (r1025) - | 1323 -> One (r1026) - | 1322 -> One (r1027) - | 1321 -> One (r1028) - | 1325 -> One (r1029) - | 1335 -> One (r1030) - | 1334 -> One (r1031) - | 1333 -> One (r1032) - | 1332 -> One (r1033) - | 1331 -> One (r1034) - | 1330 -> One (r1035) - | 1329 -> One (r1036) - | 1352 -> One (r1037) - | 1356 -> One (r1038) - | 1358 -> One (r1039) - | 1364 -> One (r1040) - | 1363 -> One (r1041) - | 1378 | 1421 -> One (r1042) - | 1377 | 1420 -> One (r1043) - | 1376 | 1419 -> One (r1044) - | 1381 | 1426 -> One (r1045) - | 1380 | 1425 -> One (r1046) - | 1379 | 1424 -> One (r1047) - | 1386 | 1433 -> One (r1048) - | 1385 | 1432 -> One (r1049) - | 1384 | 1431 -> One (r1050) - | 1383 | 1430 -> One (r1051) - | 1392 | 1438 -> One (r1052) - | 1391 | 1437 -> One (r1053) - | 1390 | 1436 -> One (r1054) - | 1395 | 1443 -> One (r1055) - | 1394 | 1442 -> One (r1056) - | 1393 | 1441 -> One (r1057) - | 1402 -> One (r1058) - | 1405 | 1455 -> One (r1059) - | 1404 | 1454 -> One (r1060) - | 1403 | 1453 -> One (r1061) - | 1407 -> One (r1062) - | 1410 | 1458 -> One (r1063) - | 1409 | 1457 -> One (r1064) - | 1408 | 1456 -> One (r1065) - | 1412 -> One (r1066) - | 1418 -> One (r1067) - | 1423 -> One (r1068) - | 1428 -> One (r1069) - | 1435 -> One (r1070) - | 1440 -> One (r1071) - | 1445 -> One (r1072) - | 1448 -> One (r1073) - | 1462 -> One (r1074) - | 1461 -> One (r1075) - | 1467 -> One (r1076) - | 1471 -> One (r1077) - | 1473 -> One (r1078) - | 1475 -> One (r1079) - | 1477 -> One (r1080) - | 1479 -> One (r1081) - | 1482 -> One (r1083) - | 1481 -> One (r1084) - | 1495 -> One (r1085) - | 1494 -> One (r1086) - | 1486 -> One (r1087) - | 1485 -> One (r1088) - | 1518 -> One (r1089) - | 1517 -> One (r1090) - | 1516 -> One (r1091) - | 1515 -> One (r1092) - | 1514 -> One (r1093) - | 1513 -> One (r1094) - | 1530 -> One (r1095) - | 1523 -> One (r1096) - | 1522 -> One (r1097) - | 1527 -> One (r1098) - | 1526 -> One (r1099) - | 1525 -> One (r1100) - | 1529 -> One (r1101) - | 1543 -> One (r1102) - | 1549 -> One (r1103) - | 1552 -> One (r1104) - | 1565 -> One (r1105) - | 1580 -> One (r1106) - | 1579 -> One (r1107) - | 1578 -> One (r1108) - | 1577 -> One (r1109) - | 1576 -> One (r1110) - | 1575 -> One (r1111) - | 1588 -> One (r1112) - | 1587 -> One (r1113) - | 1586 -> One (r1114) - | 1585 -> One (r1115) - | 1584 -> One (r1116) - | 1583 -> One (r1117) - | 1582 -> One (r1118) - | 1602 -> One (r1119) - | 1601 -> One (r1120) - | 1600 -> One (r1121) - | 1599 -> One (r1122) - | 1598 -> One (r1123) - | 1607 -> One (r1124) - | 1606 -> One (r1125) - | 1605 -> One (r1126) - | 1604 -> One (r1127) - | 1610 -> One (r1128) - | 1609 -> One (r1129) - | 1617 -> One (r1130) - | 1623 -> One (r1131) - | 1622 -> One (r1132) - | 1621 -> One (r1133) - | 1620 -> One (r1134) - | 1626 -> One (r1135) - | 1625 -> One (r1136) - | 1630 -> One (r1137) - | 1641 -> One (r1138) - | 1640 -> One (r1139) - | 1644 -> One (r1140) - | 1643 -> One (r1141) - | 1647 -> One (r1142) - | 1646 -> One (r1143) - | 1656 -> One (r1144) - | 1655 -> One (r1145) - | 1663 -> One (r1146) - | 1671 -> One (r1147) - | 1679 -> One (r1148) - | 1676 -> One (r1149) - | 1678 -> One (r1150) - | 1681 -> One (r1151) - | 1683 -> One (r1152) - | 1685 -> One (r1153) - | 1688 -> One (r1154) - | 1687 -> One (r1155) - | 1700 -> One (r1156) - | 1699 -> One (r1157) - | 1712 -> One (r1158) - | 1711 -> One (r1159) - | 1735 -> One (r1160) - | 1734 -> One (r1161) - | 1744 -> One (r1162) - | 1746 -> One (r1163) - | 1748 -> One (r1164) - | 1761 -> One (r1165) - | 1765 -> One (r1166) - | 1770 -> One (r1167) - | 1777 -> One (r1168) - | 1776 -> One (r1169) - | 1775 -> One (r1170) - | 1774 -> One (r1171) - | 1784 -> One (r1172) - | 1788 -> One (r1173) - | 1792 -> One (r1174) - | 1795 -> One (r1175) - | 1800 -> One (r1176) - | 1804 -> One (r1177) - | 1808 -> One (r1178) - | 1812 -> One (r1179) - | 1816 -> One (r1180) - | 1819 -> One (r1181) - | 1823 -> One (r1182) - | 1829 -> One (r1183) - | 1839 -> One (r1184) - | 1841 -> One (r1185) - | 1844 -> One (r1186) - | 1843 -> One (r1187) - | 1846 -> One (r1188) - | 1856 -> One (r1189) - | 1852 -> One (r1190) - | 1851 -> One (r1191) - | 1855 -> One (r1192) - | 1854 -> One (r1193) - | 1861 -> One (r1194) - | 1860 -> One (r1195) - | 1859 -> One (r1196) - | 1863 -> One (r1197) - | 363 -> Select (function - | -1 -> [R 107] - | _ -> S (T T_DOT) :: r328) - | 596 -> Select (function - | -1 -> [R 107] - | _ -> r530) + | 1271 -> One (r1001) + | 1270 -> One (r1002) + | 1269 -> One (r1003) + | 1335 -> One (r1004) + | 1334 -> One (r1005) + | 1333 -> One (r1006) + | 1332 -> One (r1007) + | 1331 -> One (r1008) + | 1330 -> One (r1009) + | 1327 -> One (r1010) + | 1274 -> One (r1011) + | 1323 -> One (r1012) + | 1322 -> One (r1013) + | 1317 -> One (r1014) + | 1316 -> One (r1015) + | 1315 -> One (r1016) + | 1314 -> One (r1017) + | 1283 -> One (r1018) + | 1282 -> One (r1019) + | 1281 -> One (r1020) + | 1280 -> One (r1021) + | 1279 -> One (r1022) + | 1278 -> One (r1023) + | 1313 -> One (r1024) + | 1287 -> One (r1025) + | 1286 -> One (r1026) + | 1285 -> One (r1027) + | 1291 -> One (r1028) + | 1290 -> One (r1029) + | 1289 -> One (r1030) + | 1310 -> One (r1031) + | 1295 -> One (r1032) + | 1294 -> One (r1033) + | 1312 -> One (r1035) + | 1293 -> One (r1036) + | 1307 -> One (r1037) + | 1297 -> One (r1038) + | 1301 -> One (r1039) + | 1321 -> One (r1040) + | 1320 -> One (r1041) + | 1319 -> One (r1042) + | 1326 -> One (r1043) + | 1325 -> One (r1044) + | 1329 -> One (r1045) + | 1339 -> One (r1046) + | 1338 -> One (r1047) + | 1337 -> One (r1048) + | 1343 -> One (r1049) + | 1346 -> One (r1050) + | 1351 -> One (r1051) + | 1350 -> One (r1052) + | 1349 -> One (r1053) + | 1353 -> One (r1054) + | 1363 -> One (r1055) + | 1362 -> One (r1056) + | 1361 -> One (r1057) + | 1360 -> One (r1058) + | 1359 -> One (r1059) + | 1358 -> One (r1060) + | 1357 -> One (r1061) + | 1380 -> One (r1062) + | 1384 -> One (r1063) + | 1386 -> One (r1064) + | 1392 -> One (r1065) + | 1391 -> One (r1066) + | 1407 | 1450 -> One (r1067) + | 1406 | 1449 -> One (r1068) + | 1405 | 1448 -> One (r1069) + | 1410 | 1455 -> One (r1070) + | 1409 | 1454 -> One (r1071) + | 1408 | 1453 -> One (r1072) + | 1415 | 1462 -> One (r1073) + | 1414 | 1461 -> One (r1074) + | 1413 | 1460 -> One (r1075) + | 1412 | 1459 -> One (r1076) + | 1421 | 1467 -> One (r1077) + | 1420 | 1466 -> One (r1078) + | 1419 | 1465 -> One (r1079) + | 1424 | 1472 -> One (r1080) + | 1423 | 1471 -> One (r1081) + | 1422 | 1470 -> One (r1082) + | 1431 -> One (r1083) + | 1434 | 1484 -> One (r1084) + | 1433 | 1483 -> One (r1085) + | 1432 | 1482 -> One (r1086) + | 1436 -> One (r1087) + | 1439 | 1487 -> One (r1088) + | 1438 | 1486 -> One (r1089) + | 1437 | 1485 -> One (r1090) + | 1441 -> One (r1091) + | 1447 -> One (r1092) + | 1452 -> One (r1093) + | 1457 -> One (r1094) + | 1464 -> One (r1095) + | 1469 -> One (r1096) + | 1474 -> One (r1097) + | 1477 -> One (r1098) + | 1491 -> One (r1099) + | 1490 -> One (r1100) + | 1496 -> One (r1101) + | 1500 -> One (r1102) + | 1502 -> One (r1103) + | 1504 -> One (r1104) + | 1506 -> One (r1105) + | 1508 -> One (r1106) + | 1511 -> One (r1108) + | 1510 -> One (r1109) + | 1523 -> One (r1110) + | 1522 -> One (r1111) + | 1515 -> One (r1112) + | 1514 -> One (r1113) + | 1546 -> One (r1114) + | 1545 -> One (r1115) + | 1544 -> One (r1116) + | 1543 -> One (r1117) + | 1542 -> One (r1118) + | 1541 -> One (r1119) + | 1560 -> One (r1120) + | 1563 -> One (r1121) + | 1576 -> One (r1122) + | 1591 -> One (r1123) + | 1590 -> One (r1124) + | 1589 -> One (r1125) + | 1588 -> One (r1126) + | 1587 -> One (r1127) + | 1586 -> One (r1128) + | 1599 -> One (r1129) + | 1598 -> One (r1130) + | 1597 -> One (r1131) + | 1596 -> One (r1132) + | 1595 -> One (r1133) + | 1594 -> One (r1134) + | 1593 -> One (r1135) + | 1612 -> One (r1136) + | 1611 -> One (r1137) + | 1610 -> One (r1138) + | 1609 -> One (r1139) + | 1608 -> One (r1140) + | 1617 -> One (r1141) + | 1616 -> One (r1142) + | 1615 -> One (r1143) + | 1614 -> One (r1144) + | 1620 -> One (r1145) + | 1619 -> One (r1146) + | 1627 -> One (r1147) + | 1636 -> One (r1148) + | 1635 -> One (r1149) + | 1638 -> One (r1150) + | 1640 -> One (r1151) + | 1651 -> One (r1152) + | 1650 -> One (r1153) + | 1654 -> One (r1154) + | 1653 -> One (r1155) + | 1657 -> One (r1156) + | 1656 -> One (r1157) + | 1666 -> One (r1158) + | 1665 -> One (r1159) + | 1673 -> One (r1160) + | 1681 -> One (r1161) + | 1689 -> One (r1162) + | 1686 -> One (r1163) + | 1688 -> One (r1164) + | 1691 -> One (r1165) + | 1694 -> One (r1166) + | 1697 -> One (r1167) + | 1696 -> One (r1168) + | 1709 -> One (r1169) + | 1708 -> One (r1170) + | 1721 -> One (r1171) + | 1720 -> One (r1172) + | 1744 -> One (r1173) + | 1743 -> One (r1174) + | 1753 -> One (r1175) + | 1755 -> One (r1176) + | 1757 -> One (r1177) + | 1770 -> One (r1178) + | 1774 -> One (r1179) + | 1779 -> One (r1180) + | 1786 -> One (r1181) + | 1785 -> One (r1182) + | 1784 -> One (r1183) + | 1783 -> One (r1184) + | 1793 -> One (r1185) + | 1797 -> One (r1186) + | 1801 -> One (r1187) + | 1804 -> One (r1188) + | 1809 -> One (r1189) + | 1813 -> One (r1190) + | 1817 -> One (r1191) + | 1821 -> One (r1192) + | 1825 -> One (r1193) + | 1828 -> One (r1194) + | 1832 -> One (r1195) + | 1838 -> One (r1196) + | 1848 -> One (r1197) + | 1850 -> One (r1198) + | 1853 -> One (r1199) + | 1852 -> One (r1200) + | 1855 -> One (r1201) + | 1865 -> One (r1202) + | 1861 -> One (r1203) + | 1860 -> One (r1204) + | 1864 -> One (r1205) + | 1863 -> One (r1206) + | 1870 -> One (r1207) + | 1869 -> One (r1208) + | 1868 -> One (r1209) + | 1872 -> One (r1210) + | 373 -> Select (function + | -1 -> [R 98] + | _ -> S (T T_DOT) :: r343) + | 617 -> Select (function + | -1 -> [R 98] + | _ -> r549) | 173 -> Select (function - | -1 -> r152 - | _ -> R 187 :: r144) - | 810 -> Select (function - | -1 -> r679 - | _ -> R 187 :: r672) - | 867 -> Select (function - | -1 -> r152 - | _ -> R 187 :: r721) - | 946 -> Select (function - | -1 -> r626 - | _ -> R 187 :: r768) - | 508 -> Select (function - | -1 -> r278 - | _ -> [R 221]) - | 381 -> Select (function - | -1 -> [R 674] - | _ -> S (N N_pattern) :: r336) - | 378 -> Select (function - | -1 -> [R 675] - | _ -> S (N N_pattern) :: r335) + | -1 -> r158 + | _ -> R 135 :: r150) + | 838 -> Select (function + | -1 -> r703 + | _ -> R 135 :: r696) + | 895 -> Select (function + | -1 -> r158 + | _ -> R 135 :: r745) + | 974 -> Select (function + | -1 -> r650 + | _ -> R 135 :: r792) + | 518 -> Select (function + | -1 -> r296 + | _ -> [R 228]) + | 391 -> Select (function + | -1 -> [R 685] + | _ -> S (N N_pattern) :: r351) + | 388 -> Select (function + | -1 -> [R 686] + | _ -> S (N N_pattern) :: r350) | 179 -> Select (function - | -1 -> r164 - | _ -> R 782 :: r158) - | 870 -> Select (function - | -1 -> r164 - | _ -> R 782 :: r727) - | 844 -> Select (function - | -1 -> S (T T_RPAREN) :: r54 - | _ -> S (T T_COLONCOLON) :: r344) - | 87 -> Select (function - | 252 | 442 | 611 | 719 | 1252 | 1291 | 1342 | 1466 -> r61 - | -1 -> S (T T_RPAREN) :: r54 - | _ -> S (N N_pattern) :: r56) + | -1 -> r170 + | _ -> R 792 :: r164) + | 898 -> Select (function + | -1 -> r170 + | _ -> R 792 :: r751) | 243 -> Select (function - | -1 -> S (T T_RPAREN) :: r54 - | _ -> Sub (r1) :: r232) + | -1 -> S (T T_RPAREN) :: r60 + | _ -> S (T T_MODULE) :: r241) + | 872 -> Select (function + | -1 -> S (T T_RPAREN) :: r60 + | _ -> S (T T_COLONCOLON) :: r359) + | 87 -> Select (function + | 252 | 452 | 632 | 747 | 1280 | 1319 | 1370 | 1495 -> r67 + | -1 -> S (T T_RPAREN) :: r60 + | _ -> S (N N_pattern) :: r62) | 254 -> Select (function - | -1 -> S (T T_RBRACKET) :: r243 - | _ -> Sub (r245) :: r247) - | 550 -> Select (function - | -1 -> S (T T_RBRACKET) :: r243 - | _ -> Sub (r458) :: r460) - | 462 -> Select (function - | 60 | 172 | 210 | 744 | 785 | 787 -> r401 - | _ -> S (T T_OPEN) :: r395) - | 846 -> Select (function - | -1 -> r451 - | _ -> S (T T_LPAREN) :: r703) - | 270 -> Select (function - | -1 -> r280 - | _ -> S (T T_DOT) :: r282) - | 506 -> Select (function - | -1 -> r280 - | _ -> S (T T_DOT) :: r446) + | -1 -> S (T T_RBRACKET) :: r252 + | _ -> Sub (r254) :: r256) + | 560 -> Select (function + | -1 -> S (T T_RBRACKET) :: r252 + | _ -> Sub (r468) :: r470) + | 472 -> Select (function + | -1 | 60 | 172 | 210 | 211 | 772 | 813 | 815 | 1857 -> r405 + | _ -> S (T T_OPEN) :: r411) + | 874 -> Select (function + | -1 -> r461 + | _ -> S (T T_LPAREN) :: r727) + | 290 -> Select (function + | 1115 | 1119 | 1123 | 1126 | 1140 | 1324 | 1348 -> r290 + | -1 -> r302 + | _ -> S (T T_DOT) :: r305) + | 516 -> Select (function + | -1 -> r302 + | _ -> S (T T_DOT) :: r456) | 203 -> Select (function - | -1 -> r123 - | _ -> S (T T_COLON) :: r185) + | -1 -> r129 + | _ -> S (T T_COLON) :: r191) | 152 -> Select (function - | 851 | 1596 -> r107 - | _ -> Sub (r105) :: r108) + | 879 | 1606 -> r113 + | _ -> Sub (r111) :: r114) | 155 -> Select (function - | 851 | 1596 -> r106 - | _ -> r108) - | 1714 -> Select (function - | -1 -> r148 - | _ -> r123) + | 879 | 1606 -> r112 + | _ -> r114) + | 1723 -> Select (function + | -1 -> r154 + | _ -> r129) | 198 -> Select (function - | -1 -> r162 - | _ -> r123) - | 921 -> Select (function - | -1 -> r148 - | _ -> r123) - | 872 -> Select (function - | -1 -> r162 - | _ -> r123) - | 1713 -> Select (function - | -1 -> r149 - | _ -> r142) + | -1 -> r168 + | _ -> r129) + | 949 -> Select (function + | -1 -> r154 + | _ -> r129) + | 900 -> Select (function + | -1 -> r168 + | _ -> r129) + | 1722 -> Select (function + | -1 -> r155 + | _ -> r148) | 175 -> Select (function - | -1 -> r150 - | _ -> r143) + | -1 -> r156 + | _ -> r149) | 174 -> Select (function - | -1 -> r151 - | _ -> r144) - | 920 -> Select (function - | -1 -> r149 - | _ -> r719) - | 869 -> Select (function - | -1 -> r150 - | _ -> r720) - | 868 -> Select (function - | -1 -> r151 - | _ -> r721) - | 197 -> Select (function - | -1 -> r163 - | _ -> r158) - | 871 -> Select (function - | -1 -> r163 - | _ -> r727) - | 277 -> Select (function - | -1 -> r279 - | _ -> r282) - | 507 -> Select (function - | -1 -> r279 - | _ -> r446) - | 949 -> Select (function - | -1 -> r623 - | _ -> r766) + | -1 -> r157 + | _ -> r150) | 948 -> Select (function - | -1 -> r624 - | _ -> r767) - | 947 -> Select (function - | -1 -> r625 - | _ -> r768) - | 818 -> Select (function - | -1 -> r676 - | _ -> r670) - | 812 -> Select (function - | -1 -> r677 - | _ -> r671) - | 811 -> Select (function - | -1 -> r678 - | _ -> r672) + | -1 -> r155 + | _ -> r743) + | 897 -> Select (function + | -1 -> r156 + | _ -> r744) + | 896 -> Select (function + | -1 -> r157 + | _ -> r745) + | 197 -> Select (function + | -1 -> r169 + | _ -> r164) + | 899 -> Select (function + | -1 -> r169 + | _ -> r751) + | 291 -> Select (function + | 1115 | 1119 | 1123 | 1126 | 1140 | 1324 | 1348 -> r289 + | -1 -> r297 + | _ -> r305) + | 517 -> Select (function + | -1 -> r297 + | _ -> r456) + | 977 -> Select (function + | -1 -> r647 + | _ -> r790) + | 976 -> Select (function + | -1 -> r648 + | _ -> r791) + | 975 -> Select (function + | -1 -> r649 + | _ -> r792) + | 846 -> Select (function + | -1 -> r700 + | _ -> r694) + | 840 -> Select (function + | -1 -> r701 + | _ -> r695) + | 839 -> Select (function + | -1 -> r702 + | _ -> r696) | _ -> raise Not_found diff --git a/src/ocaml/typing/btype.ml b/src/ocaml/typing/btype.ml index 2191cad4f2..5ce396ecd2 100644 --- a/src/ocaml/typing/btype.ml +++ b/src/ocaml/typing/btype.ml @@ -46,9 +46,11 @@ end module TransientTypeHash = Hashtbl.Make(TransientTypeOps) module TypeHash = struct include TransientTypeHash + let mem hash = wrap_repr (mem hash) let add hash = wrap_repr (add hash) let remove hash = wrap_repr (remove hash) let find hash = wrap_repr (find hash) + let find_opt hash = wrap_repr (find_opt hash) let iter f = TransientTypeHash.iter (wrap_type_expr f) end module TransientTypePairs = @@ -125,6 +127,12 @@ let newmarkedgenvar () = let is_Tvar ty = match get_desc ty with Tvar _ -> true | _ -> false let is_Tunivar ty = match get_desc ty with Tunivar _ -> true | _ -> false let is_Tconstr ty = match get_desc ty with Tconstr _ -> true | _ -> false +let type_kind_is_abstract decl = + match decl.type_kind with Type_abstract _ -> true | _ -> false +let type_origin decl = + match decl.type_kind with + | Type_abstract origin -> origin + | Type_variant _ | Type_record _ | Type_open -> Definition let dummy_method = "*dummy method*" @@ -323,7 +331,7 @@ let map_type_expr_cstr_args f = function Cstr_record (List.map (fun d -> {d with ld_type=f d.ld_type}) lbls) let iter_type_expr_kind f = function - | Type_abstract -> () + | Type_abstract _ -> () | Type_variant (cstrs, _) -> List.iter (fun cd -> diff --git a/src/ocaml/typing/btype.mli b/src/ocaml/typing/btype.mli index d79b8d2748..71dd67b74a 100644 --- a/src/ocaml/typing/btype.mli +++ b/src/ocaml/typing/btype.mli @@ -39,9 +39,11 @@ module TypeMap : sig end module TypeHash : sig include Hashtbl.S with type key = transient_expr + val mem: 'a t -> type_expr -> bool val add: 'a t -> type_expr -> 'a -> unit - val remove : 'a t -> type_expr -> unit + val remove: 'a t -> type_expr -> unit val find: 'a t -> type_expr -> 'a + val find_opt: 'a t -> type_expr -> 'a option val iter: (type_expr -> 'a -> unit) -> 'a t -> unit end module TypePairs : sig @@ -78,6 +80,8 @@ val is_Tvar: type_expr -> bool val is_Tunivar: type_expr -> bool val is_Tconstr: type_expr -> bool val dummy_method: label +val type_kind_is_abstract: type_declaration -> bool +val type_origin : type_declaration -> type_origin (**** polymorphic variants ****) diff --git a/src/ocaml/typing/cmi_format.ml b/src/ocaml/typing/cmi_format.ml index b4934e27e7..3fae802d60 100644 --- a/src/ocaml/typing/cmi_format.ml +++ b/src/ocaml/typing/cmi_format.ml @@ -35,7 +35,7 @@ type cmi_infos = { } let input_cmi ic = - let (name, sign) = (Ocaml_compression.input_value ic : header) in + let (name, sign) = (input_value ic : header) in let crcs = (input_value ic : crcs) in let flags = (input_value ic : flags) in { @@ -74,14 +74,17 @@ let read_cmi filename = raise (Error e) let output_cmi filename oc cmi = + ignore (filename, oc, cmi); "" +(* (* beware: the provided signature must have been substituted for saving *) output_string oc Config.cmi_magic_number; - Ocaml_compression.output_value oc ((cmi.cmi_name, cmi.cmi_sign) : header); + Marshal.(to_channel oc ((cmi.cmi_name, cmi.cmi_sign) : header) [Compression]); flush oc; let crc = Digest.file filename in let crcs = (cmi.cmi_name, Some crc) :: cmi.cmi_crcs in output_value oc (crcs : crcs); output_value oc (cmi.cmi_flags : flags); crc +*) (* Error report moved to src/ocaml/typing/magic_numbers.ml *) diff --git a/src/ocaml/typing/cmt_format.ml b/src/ocaml/typing/cmt_format.ml index 6fbc314f0a..418a9d676e 100644 --- a/src/ocaml/typing/cmt_format.ml +++ b/src/ocaml/typing/cmt_format.ml @@ -70,27 +70,68 @@ type cmt_infos = { cmt_args : string array; cmt_sourcefile : string option; cmt_builddir : string; - cmt_loadpath : string list; + cmt_loadpath : Load_path.paths; cmt_source_digest : Digest.t option; cmt_initial_env : Env.t; cmt_imports : (string * Digest.t option) list; cmt_interface_digest : Digest.t option; cmt_use_summaries : bool; - cmt_uid_to_loc : Location.t Shape.Uid.Tbl.t; + cmt_uid_to_decl : item_declaration Shape.Uid.Tbl.t; cmt_impl_shape : Shape.t option; (* None for mli *) + cmt_ident_occurrences : + (Longident.t Location.loc * Shape_reduce.result) list } type error = Not_a_typedtree of string +let iter_on_parts (it : Tast_iterator.iterator) = function + | Partial_structure s -> it.structure it s + | Partial_structure_item s -> it.structure_item it s + | Partial_expression e -> it.expr it e + | Partial_pattern (_category, p) -> it.pat it p + | Partial_class_expr ce -> it.class_expr it ce + | Partial_signature s -> it.signature it s + | Partial_signature_item s -> it.signature_item it s + | Partial_module_type s -> it.module_type it s + +let iter_on_annots (it : Tast_iterator.iterator) = function + | Implementation s -> it.structure it s + | Interface s -> it.signature it s + | Packed _ -> () + | Partial_implementation array -> Array.iter (iter_on_parts it) array + | Partial_interface array -> Array.iter (iter_on_parts it) array + +let iter_on_declaration f decl = + match decl with + | Value vd -> f vd.val_val.val_uid decl; + | Value_binding vb -> + let bound_idents = let_bound_idents_full [vb] in + List.iter ~f:(fun (_, _, _, uid) -> f uid decl) bound_idents + | Type td -> + if not (Btype.is_row_name (Ident.name td.typ_id)) then + f td.typ_type.type_uid (Type td) + | Constructor cd -> f cd.cd_uid decl + | Extension_constructor ec -> f ec.ext_type.ext_uid decl; + | Label ld -> f ld.ld_uid decl + | Module md -> f md.md_uid decl + | Module_type mtd -> f mtd.mtd_uid decl + | Module_substitution ms -> f ms.ms_uid decl + | Module_binding mb -> f mb.mb_uid decl + | Class cd -> f cd.ci_decl.cty_uid decl + | Class_type ct -> f ct.ci_decl.cty_uid decl + +let iter_on_declarations ~(f: Shape.Uid.t -> item_declaration -> unit) = { + Tast_iterator.default_iterator with + item_declaration = (fun _sub decl -> iter_on_declaration f decl); +} + let need_to_clear_env = try ignore (Sys.getenv "OCAML_BINANNOT_WITHENV"); false with Not_found -> true let keep_only_summary = Env.keep_only_summary -open Tast_mapper - let cenv = {Tast_mapper.default with env = fun _sub env -> keep_only_summary env} @@ -119,13 +160,250 @@ let clear_env binary_annots = else binary_annots +(* Every typedtree node with a located longident corresponding to user-facing + syntax should be indexed. *) +let iter_on_occurrences + ~(f : namespace:Shape.Sig_component_kind.t -> + Env.t -> Path.t -> Longident.t Location.loc -> + unit) = + let path_in_type typ name = + match Types.get_desc typ with + | Tconstr (type_path, _, _) -> + Some (Path.Pdot (type_path, name)) + | _ -> None + in + let add_constructor_description env lid = + function + | { Types.cstr_tag = Cstr_extension (path, _); _ } -> + f ~namespace:Extension_constructor env path lid + | { Types.cstr_uid = Predef name; _} -> + let id = List.assoc name Predef.builtin_idents in + f ~namespace:Constructor env (Pident id) lid + | { Types.cstr_res; cstr_name; _ } -> + let path = path_in_type cstr_res cstr_name in + Option.iter ~f:(fun path -> f ~namespace:Constructor env path lid) path + in + let add_label env lid { Types.lbl_name; lbl_res; _ } = + let path = path_in_type lbl_res lbl_name in + Option.iter ~f:(fun path -> f ~namespace:Label env path lid) path + in + let with_constraint ~env (_path, _lid, with_constraint) = + match with_constraint with + | Twith_module (path', lid') | Twith_modsubst (path', lid') -> + f ~namespace:Module env path' lid' + | _ -> () + in + Tast_iterator.{ default_iterator with + + expr = (fun sub ({ exp_desc; exp_env; _ } as e) -> + (match exp_desc with + | Texp_ident (path, lid, _) -> + f ~namespace:Value exp_env path lid + | Texp_construct (lid, constr_desc, _) -> + add_constructor_description exp_env lid constr_desc + | Texp_field (_, lid, label_desc) + | Texp_setfield (_, lid, label_desc, _) -> + add_label exp_env lid label_desc + | Texp_new (path, lid, _) -> + f ~namespace:Class exp_env path lid + | Texp_record { fields; _ } -> + Array.iter (fun (label_descr, record_label_definition) -> + match record_label_definition with + | Overridden ( + { Location.txt; loc}, + {exp_loc; _}) + when not exp_loc.loc_ghost + && loc.loc_start = exp_loc.loc_start + && loc.loc_end = exp_loc.loc_end -> + (* In the presence of punning we want to index the label + even if it is ghosted *) + let lid = { Location.txt; loc = {loc with loc_ghost = false} } in + add_label exp_env lid label_descr + | Overridden (lid, _) -> add_label exp_env lid label_descr + | Kept _ -> ()) fields + | Texp_instvar (_self_path, path, name) -> + let lid = { name with txt = Longident.Lident name.txt } in + f ~namespace:Value exp_env path lid + | Texp_setinstvar (_self_path, path, name, _) -> + let lid = { name with txt = Longident.Lident name.txt } in + f ~namespace:Value exp_env path lid + | Texp_override (_self_path, modifs) -> + List.iter ~f:(fun (id, (name : string Location.loc), _exp) -> + let lid = { name with txt = Longident.Lident name.txt } in + f ~namespace:Value exp_env (Path.Pident id) lid) + modifs + | Texp_extension_constructor (lid, path) -> + f ~namespace:Extension_constructor exp_env path lid + | Texp_constant _ | Texp_let _ | Texp_function _ | Texp_apply _ + | Texp_match _ | Texp_try _ | Texp_tuple _ | Texp_variant _ | Texp_array _ + | Texp_ifthenelse _ | Texp_sequence _ | Texp_while _ | Texp_for _ + | Texp_send _ + | Texp_letmodule _ | Texp_letexception _ | Texp_assert _ | Texp_lazy _ + | Texp_object _ | Texp_pack _ | Texp_letop _ | Texp_unreachable + | Texp_open _ | Texp_hole -> ()); + default_iterator.expr sub e); + + (* Remark: some types get iterated over twice due to how constraints are + encoded in the typedtree. For example, in [let x : t = 42], [t] is + present in both a [Tpat_constraint] and a [Texp_constraint] node) *) + typ = + (fun sub ({ ctyp_desc; ctyp_env; _ } as ct) -> + (match ctyp_desc with + | Ttyp_constr (path, lid, _ctyps) -> + f ~namespace:Type ctyp_env path lid + | Ttyp_package {pack_path; pack_txt} -> + f ~namespace:Module_type ctyp_env pack_path pack_txt + | Ttyp_class (path, lid, _typs) -> + (* Deprecated syntax to extend a polymorphic variant *) + f ~namespace:Type ctyp_env path lid + | Ttyp_open (path, lid, _ct) -> + f ~namespace:Module ctyp_env path lid + | Ttyp_any | Ttyp_var _ | Ttyp_arrow _ | Ttyp_tuple _ | Ttyp_object _ + | Ttyp_alias _ | Ttyp_variant _ | Ttyp_poly _ -> ()); + default_iterator.typ sub ct); + + pat = + (fun (type a) sub + ({ pat_desc; pat_extra; pat_env; _ } as pat : a general_pattern) -> + (match pat_desc with + | Tpat_construct (lid, constr_desc, _, _) -> + add_constructor_description pat_env lid constr_desc + | Tpat_record (fields, _) -> + List.iter ~f:(fun (lid, label_descr, pat) -> + let lid = + let open Location in + (* In the presence of punning we want to index the label + even if it is ghosted *) + if (not pat.pat_loc.loc_ghost + && lid.loc.loc_start = pat.pat_loc.loc_start + && lid.loc.loc_end = pat.pat_loc.loc_end) + then {lid with loc = {lid.loc with loc_ghost = false}} + else lid + in + add_label pat_env lid label_descr) + fields + | Tpat_any | Tpat_var _ | Tpat_alias _ | Tpat_constant _ | Tpat_tuple _ + | Tpat_variant _ | Tpat_array _ | Tpat_lazy _ | Tpat_value _ + | Tpat_exception _ | Tpat_or _ -> ()); + List.iter ~f:(fun (pat_extra, _, _) -> + match pat_extra with + | Tpat_open (path, lid, _) -> + f ~namespace:Module pat_env path lid + | Tpat_type (path, lid) -> + f ~namespace:Type pat_env path lid + | Tpat_constraint _ | Tpat_unpack -> ()) + pat_extra; + default_iterator.pat sub pat); + + binding_op = (fun sub ({bop_op_path; bop_op_name; bop_exp; _} as bop) -> + let lid = { bop_op_name with txt = Longident.Lident bop_op_name.txt } in + f ~namespace:Value bop_exp.exp_env bop_op_path lid; + default_iterator.binding_op sub bop); + + module_expr = + (fun sub ({ mod_desc; mod_env; _ } as me) -> + (match mod_desc with + | Tmod_ident (path, lid) -> f ~namespace:Module mod_env path lid + | Tmod_structure _ | Tmod_functor _ | Tmod_apply _ | Tmod_apply_unit _ + | Tmod_constraint _ | Tmod_unpack _ | Tmod_hole -> ()); + default_iterator.module_expr sub me); + + open_description = + (fun sub ({ open_expr = (path, lid); open_env; _ } as od) -> + f ~namespace:Module open_env path lid; + default_iterator.open_description sub od); + + module_type = + (fun sub ({ mty_desc; mty_env; _ } as mty) -> + (match mty_desc with + | Tmty_ident (path, lid) -> + f ~namespace:Module_type mty_env path lid + | Tmty_with (_mty, l) -> + List.iter ~f:(with_constraint ~env:mty_env) l + | Tmty_alias (path, lid) -> + f ~namespace:Module mty_env path lid + | Tmty_signature _ | Tmty_functor _ | Tmty_typeof _ -> ()); + default_iterator.module_type sub mty); + + class_expr = + (fun sub ({ cl_desc; cl_env; _} as ce) -> + (match cl_desc with + | Tcl_ident (path, lid, _) -> f ~namespace:Class cl_env path lid + | Tcl_structure _ | Tcl_fun _ | Tcl_apply _ | Tcl_let _ + | Tcl_constraint _ | Tcl_open _ -> ()); + default_iterator.class_expr sub ce); + + class_type = + (fun sub ({ cltyp_desc; cltyp_env; _} as ct) -> + (match cltyp_desc with + | Tcty_constr (path, lid, _) -> f ~namespace:Class_type cltyp_env path lid + | Tcty_signature _ | Tcty_arrow _ | Tcty_open _ -> ()); + default_iterator.class_type sub ct); + + signature_item = + (fun sub ({ sig_desc; sig_env; _ } as sig_item) -> + (match sig_desc with + | Tsig_exception { + tyexn_constructor = { ext_kind = Text_rebind (path, lid)}} -> + f ~namespace:Extension_constructor sig_env path lid + | Tsig_modsubst { ms_manifest; ms_txt } -> + f ~namespace:Module sig_env ms_manifest ms_txt + | Tsig_typext { tyext_path; tyext_txt } -> + f ~namespace:Type sig_env tyext_path tyext_txt + | Tsig_value _ | Tsig_type _ | Tsig_typesubst _ | Tsig_exception _ + | Tsig_module _ | Tsig_recmodule _ | Tsig_modtype _ | Tsig_modtypesubst _ + | Tsig_open _ | Tsig_include _ | Tsig_class _ | Tsig_class_type _ + | Tsig_attribute _ -> ()); + default_iterator.signature_item sub sig_item); + + structure_item = + (fun sub ({ str_desc; str_env; _ } as str_item) -> + (match str_desc with + | Tstr_exception { + tyexn_constructor = { ext_kind = Text_rebind (path, lid)}} -> + f ~namespace:Extension_constructor str_env path lid + | Tstr_typext { tyext_path; tyext_txt } -> + f ~namespace:Type str_env tyext_path tyext_txt + | Tstr_eval _ | Tstr_value _ | Tstr_primitive _ | Tstr_type _ + | Tstr_exception _ | Tstr_module _ | Tstr_recmodule _ + | Tstr_modtype _ | Tstr_open _ | Tstr_class _ | Tstr_class_type _ + | Tstr_include _ | Tstr_attribute _ -> ()); + default_iterator.structure_item sub str_item) +} + +let index_declarations binary_annots = + let index : item_declaration Types.Uid.Tbl.t = Types.Uid.Tbl.create 16 in + let f uid fragment = Types.Uid.Tbl.add index uid fragment in + iter_on_annots (iter_on_declarations ~f) binary_annots; + index + +let index_occurrences binary_annots = + let index : (Longident.t Location.loc * Shape_reduce.result) list ref = + ref [] + in + let f ~namespace env path lid = + let not_ghost { Location.loc = { loc_ghost; _ }; _ } = not loc_ghost in + if not_ghost lid then + match Env.shape_of_path ~namespace env path with + | exception Not_found -> () + | { uid = Some (Predef _); _ } -> () + | path_shape -> + let result = Shape_reduce.local_reduce_for_uid env path_shape in + index := (lid, result) :: !index + in + iter_on_annots (iter_on_occurrences ~f) binary_annots; + !index + exception Error of error -let input_cmt ic = (Ocaml_compression.input_value ic : cmt_infos) +let input_cmt ic = (input_value ic : cmt_infos) let output_cmt oc cmt = + ignore (oc, cmt) + (* output_string oc Config.cmt_magic_number; - Ocaml_compression.output_value oc (cmt : cmt_infos) + Marshal.(to_channel oc (cmt : cmt_infos) [Compression]) + *) let read filename = (* Printf.fprintf stderr "Cmt_format.read %s\n%!" filename; *) @@ -182,20 +460,29 @@ let set_saved_types l = saved_types := l let record_value_dependency _vd1 _vd2 = () -let save_cmt filename modname binary_annots sourcefile initial_env cmi shape = +let save_cmt target binary_annots initial_env cmi shape = if !Clflags.binary_annotations && not !Clflags.print_types then begin Misc.output_to_file_via_temporary - ~mode:[Open_binary] filename + ~mode:[Open_binary] (Unit_info.Artifact.filename target) (fun temp_file_name oc -> let this_crc = match cmi with | None -> None | Some cmi -> Some (output_cmi temp_file_name oc cmi) in + let sourcefile = Unit_info.Artifact.source_file target in + let cmt_ident_occurrences = + if !Clflags.store_occurrences then + index_occurrences binary_annots + else + [] + in + let cmt_annots = clear_env binary_annots in + let cmt_uid_to_decl = index_declarations cmt_annots in let source_digest = Option.map ~f:Digest.file sourcefile in let cmt = { - cmt_modname = modname; - cmt_annots = clear_env binary_annots; + cmt_modname = Unit_info.Artifact.modname target; + cmt_annots; cmt_value_dependencies = !value_deps; cmt_comments = []; cmt_args = Sys.argv; @@ -208,8 +495,9 @@ let save_cmt filename modname binary_annots sourcefile initial_env cmi shape = cmt_imports = List.sort ~cmp:compare (Env.imports ()); cmt_interface_digest = this_crc; cmt_use_summaries = need_to_clear_env; - cmt_uid_to_loc = Env.get_uid_to_loc_tbl (); + cmt_uid_to_decl; cmt_impl_shape = shape; + cmt_ident_occurrences; } in output_cmt oc cmt) end; diff --git a/src/ocaml/typing/cmt_format.mli b/src/ocaml/typing/cmt_format.mli index 43e09f1236..d27f56bccb 100644 --- a/src/ocaml/typing/cmt_format.mli +++ b/src/ocaml/typing/cmt_format.mli @@ -59,14 +59,16 @@ type cmt_infos = { cmt_args : string array; cmt_sourcefile : string option; cmt_builddir : string; - cmt_loadpath : string list; + cmt_loadpath : Load_path.paths; cmt_source_digest : string option; cmt_initial_env : Env.t; cmt_imports : crcs; cmt_interface_digest : Digest.t option; cmt_use_summaries : bool; - cmt_uid_to_loc : Location.t Shape.Uid.Tbl.t; + cmt_uid_to_decl : item_declaration Shape.Uid.Tbl.t; cmt_impl_shape : Shape.t option; (* None for mli *) + cmt_ident_occurrences : + (Longident.t Location.loc * Shape_reduce.result) list } type error = @@ -90,10 +92,8 @@ val read_cmi : string -> Cmi_format.cmi_infos (** [save_cmt filename modname binary_annots sourcefile initial_env cmi] writes a cmt(i) file. *) val save_cmt : - string -> (* filename.cmt to generate *) - string -> (* module name *) + Unit_info.Artifact.t -> binary_annots -> - string option -> (* source file *) Env.t -> (* initial env *) Cmi_format.cmi_infos option -> (* if a .cmi was generated *) Shape.t option -> @@ -112,7 +112,6 @@ val set_saved_types : binary_part list -> unit val record_value_dependency: Types.value_description -> Types.value_description -> unit - (* val is_magic_number : string -> bool diff --git a/src/ocaml/typing/ctype.ml b/src/ocaml/typing/ctype.ml index b70965ec86..d4364f161a 100644 --- a/src/ocaml/typing/ctype.ml +++ b/src/ocaml/typing/ctype.ml @@ -122,11 +122,14 @@ let () = Location.register_error_of_exn (function | Tags (l, l') -> + let pp_tag ppf s = Format.fprintf ppf "`%s" s in + let inline_tag = Misc.Style.as_inline_code pp_tag in Some Location. (errorf ~loc:(in_file !input_name) - "In this program,@ variant constructors@ `%s and `%s@ \ - have the same hash value.@ Change one of them." l l' + "In this program,@ variant constructors@ %a and %a@ \ + have the same hash value.@ Change one of them." + inline_tag l inline_tag l' ) | _ -> None ) @@ -277,88 +280,127 @@ let newconstr path tyl = newty (Tconstr (path, tyl, ref Mnil)) let none = newty (Ttuple []) (* Clearly ill-formed type *) +(**** information for [Typecore.unify_pat_*] ****) + +module Pattern_env : sig + type t = private + { mutable env : Env.t; + equations_scope : int; + allow_recursive_equations : bool; } + val make: Env.t -> equations_scope:int -> allow_recursive_equations:bool -> t + val copy: ?equations_scope:int -> t -> t + val set_env: t -> Env.t -> unit +end = struct + type t = + { mutable env : Env.t; + equations_scope : int; + allow_recursive_equations : bool; } + let make env ~equations_scope ~allow_recursive_equations = + { env; + equations_scope; + allow_recursive_equations; } + let copy ?equations_scope penv = + let equations_scope = + match equations_scope with None -> penv.equations_scope | Some s -> s in + { penv with equations_scope } + let set_env penv env = penv.env <- env +end + (**** unification mode ****) type equations_generation = | Forbidden | Allowed of { equated_types : TypePairs.t } -type unification_mode = - | Expression (* unification in expression *) +type unification_environment = + | Expression of + { env : Env.t; + in_subst : bool; } + (* normal unification mode *) | Pattern of - { equations_generation : equations_generation; + { penv : Pattern_env.t; + equations_generation : equations_generation; assume_injective : bool; - allow_recursive_equations : bool; } - (* unification in pattern which may add local constraints *) - | Subst - (* unification during type constructor expansion; more - relaxed than [Expression] in some cases. *) - -let umode = ref Expression - -let in_pattern_mode () = - match !umode with - | Expression | Subst -> false + unify_eq_set : TypePairs.t; } + (* GADT constraint unification mode: + only used for type indices of GADT constructors + during pattern matching. + This allows adding local constraints. *) + +let get_env = function + | Expression {env} -> env + | Pattern {penv} -> penv.env + +let set_env uenv env = + match uenv with + | Expression _ -> invalid_arg "Ctype.set_env" + | Pattern {penv} -> Pattern_env.set_env penv env + +let in_pattern_mode = function + | Expression _ -> false | Pattern _ -> true -let in_subst_mode () = - match !umode with - | Expression | Pattern _ -> false - | Subst -> true +let get_equations_scope = function + | Expression _ -> invalid_arg "Ctype.get_equations_scope" + | Pattern r -> r.penv.equations_scope -let can_generate_equations () = - match !umode with - | Expression | Subst | Pattern { equations_generation = Forbidden } -> false +let order_type_pair t1 t2 = + if get_id t1 <= get_id t2 then (t1, t2) else (t2, t1) + +let add_type_equality uenv t1 t2 = + match uenv with + | Expression _ -> invalid_arg "Ctype.add_type_equality" + | Pattern r -> TypePairs.add r.unify_eq_set (order_type_pair t1 t2) + +let unify_eq uenv t1 t2 = + eq_type t1 t2 || + match uenv with + | Expression _ -> false + | Pattern r -> TypePairs.mem r.unify_eq_set (order_type_pair t1 t2) + +(* unification during type constructor expansion: + This mode disables the propagation of the level and scope of + the row variable to the whole type during the unification. + (see unify_{row, fields} and PR #11771) *) +let in_subst_mode = function + | Expression {in_subst} -> in_subst + | Pattern _ -> false + +let can_generate_equations = function + | Expression _ | Pattern { equations_generation = Forbidden } -> false | Pattern { equations_generation = Allowed _ } -> true (* Can only be called when generate_equations is true *) -let record_equation t1 t2 = - match !umode with - | Expression | Subst | Pattern { equations_generation = Forbidden } -> - assert false +let record_equation uenv t1 t2 = + match uenv with + | Expression _ | Pattern { equations_generation = Forbidden } -> + invalid_arg "Ctype.record_equation" | Pattern { equations_generation = Allowed { equated_types } } -> TypePairs.add equated_types (t1, t2) -let can_assume_injective () = - match !umode with - | Expression | Subst -> false +let can_assume_injective = function + | Expression _ -> false | Pattern { assume_injective } -> assume_injective -let in_counterexample () = - match !umode with - | Expression | Subst -> false - | Pattern { allow_recursive_equations } -> allow_recursive_equations +let in_counterexample uenv = + match uenv with + | Expression _ -> false + | Pattern { penv } -> penv.allow_recursive_equations -let allow_recursive_equations () = - !Clflags.recursive_types - || match !umode with - | Expression | Subst -> false - | Pattern { allow_recursive_equations } -> allow_recursive_equations +let allow_recursive_equations uenv = + !Clflags.recursive_types || in_counterexample uenv -let set_mode_pattern ~allow_recursive_equations ~equated_types f = - let equations_generation = Allowed { equated_types } in - let assume_injective = true in - let new_umode = - Pattern - { equations_generation; - assume_injective; - allow_recursive_equations } - in - Misc.protect_refs [ Misc.R (umode, new_umode) ] f - -let without_assume_injective f = - match !umode with - | Expression | Subst -> f () - | Pattern r -> - let new_umode = Pattern { r with assume_injective = false } in - Misc.protect_refs [ Misc.R (umode, new_umode) ] f - -let without_generating_equations f = - match !umode with - | Expression | Subst -> f () - | Pattern r -> - let new_umode = Pattern { r with equations_generation = Forbidden } in - Misc.protect_refs [ Misc.R (umode, new_umode) ] f +(* Though without_* functions can be in a direct style, + CPS clarifies the structure of the code better. *) +let without_assume_injective uenv f = + match uenv with + | Expression _ as uenv -> f uenv + | Pattern r -> f (Pattern { r with assume_injective = false }) + +let without_generating_equations uenv f = + match uenv with + | Expression _ as uenv -> f uenv + | Pattern r -> f (Pattern { r with equations_generation = Forbidden }) (*** Checks for type definitions ***) @@ -375,7 +417,7 @@ let in_pervasives p = let is_datatype decl= match decl.type_kind with Type_record _ | Type_variant _ | Type_open -> true - | Type_abstract -> false + | Type_abstract _ -> false (**********************************************) @@ -577,7 +619,7 @@ let closed_type_decl decl = try List.iter mark_type decl.type_params; begin match decl.type_kind with - Type_abstract -> + Type_abstract _ -> () | Type_variant (v, _rep) -> List.iter @@ -908,7 +950,7 @@ let rec lower_contravariant env var_level visited contra ty = try let typ = Env.find_type path env in typ.type_variance, - typ.type_kind = Type_abstract + type_kind_is_abstract typ with Not_found -> (* See testsuite/tests/typing-missing-cmi-2 for an example *) List.map (fun _ -> Variance.unknown) tyl, @@ -971,46 +1013,42 @@ let correct_levels ty = (* Only generalize the type ty0 in ty *) let limited_generalize ty0 ty = - let graph = Hashtbl.create 17 in - let idx = ref lowest_level in + let graph = TypeHash.create 17 in let roots = ref [] in let rec inverse pty ty = - let level = get_level ty in - if (level > !current_level) || (level = generic_level) then begin - decr idx; - Hashtbl.add graph !idx (ty, ref pty); - if (level = generic_level) || eq_type ty ty0 then - roots := ty :: !roots; - set_level ty !idx; - iter_type_expr (inverse [ty]) ty - end else if level < lowest_level then begin - let (_, parents) = Hashtbl.find graph level in - parents := pty @ !parents - end + match TypeHash.find_opt graph ty with + | Some parents -> parents := pty @ !parents + | None -> + let level = get_level ty in + if level > !current_level then begin + TypeHash.add graph ty (ref pty); + (* XXX: why generic_level needs to be a root *) + if (level = generic_level) || eq_type ty ty0 then + roots := ty :: !roots; + iter_type_expr (inverse [ty]) ty + end + in - and generalize_parents ty = - let idx = get_level ty in - if idx <> generic_level then begin + let rec generalize_parents ~is_root ty = + if is_root || get_level ty <> generic_level then begin set_level ty generic_level; - List.iter generalize_parents !(snd (Hashtbl.find graph idx)); + List.iter (generalize_parents ~is_root:false) !(TypeHash.find graph ty); (* Special case for rows: must generalize the row variable *) match get_desc ty with Tvariant row -> let more = row_more row in let lv = get_level more in - if (lv < lowest_level || lv > !current_level) - && lv <> generic_level then set_level more generic_level + if (TypeHash.mem graph more || lv > !current_level) + && lv <> generic_level then set_level more generic_level | _ -> () end in inverse [] ty; - if get_level ty0 < lowest_level then - iter_type_expr (inverse []) ty0; - List.iter generalize_parents !roots; - Hashtbl.iter - (fun _ (ty, _) -> + List.iter (generalize_parents ~is_root:true) !roots; + TypeHash.iter + (fun ty _ -> if get_level ty <> generic_level then set_level ty !current_level) graph @@ -1236,8 +1274,6 @@ let instance_list schl = (* Create unique names to new type constructors. Used for existential types and local constraints. *) let get_new_abstract_name env s = - (* unique names are needed only for error messages *) - if in_counterexample () then s else let name index = if index = 0 && s <> "" && s.[String.length s - 1] <> '$' then s else Printf.sprintf "%s%d" s index @@ -1250,7 +1286,7 @@ let get_new_abstract_name env s = let index = Misc.find_first_mono check in name index -let new_local_type ?(loc = Location.none) ?manifest_and_scope () = +let new_local_type ?(loc = Location.none) ?manifest_and_scope origin = let manifest, expansion_scope = match manifest_and_scope with None -> None, Btype.lowest_level @@ -1259,7 +1295,7 @@ let new_local_type ?(loc = Location.none) ?manifest_and_scope () = { type_params = []; type_arity = 0; - type_kind = Type_abstract; + type_kind = Type_abstract origin; type_private = Public; type_manifest = manifest; type_variance = []; @@ -1273,28 +1309,37 @@ let new_local_type ?(loc = Location.none) ?manifest_and_scope () = type_uid = Uid.mk ~current_unit:(Env.get_unit_name ()); } -let existential_name cstr ty = - match get_desc ty with - | Tvar (Some name) -> "$" ^ cstr.cstr_name ^ "_'" ^ name - | _ -> "$" ^ cstr.cstr_name +let existential_name name_counter ty = + let name = + match get_desc ty with + | Tvar (Some name) -> name + | _ -> + let name = Misc.letter_of_int !name_counter in + incr name_counter; + name + in + "$" ^ name type existential_treatment = | Keep_existentials_flexible - | Make_existentials_abstract of { env: Env.t ref; scope: int } + | Make_existentials_abstract of Pattern_env.t let instance_constructor existential_treatment cstr = For_copy.with_scope (fun copy_scope -> + let name_counter = ref 0 in let copy_existential = match existential_treatment with | Keep_existentials_flexible -> copy copy_scope - | Make_existentials_abstract {env; scope = fresh_constr_scope} -> + | Make_existentials_abstract penv -> fun existential -> - let decl = new_local_type () in - let name = existential_name cstr existential in + let env = penv.env in + let fresh_constr_scope = penv.equations_scope in + let decl = new_local_type (Existential cstr.cstr_name) in + let name = existential_name name_counter existential in let (id, new_env) = - Env.enter_type (get_new_abstract_name !env name) decl !env + Env.enter_type (get_new_abstract_name env name) decl env ~scope:fresh_constr_scope in - env := new_env; + Pattern_env.set_env penv new_env; let to_unify = newty (Tconstr (Path.Pident id,[],ref Mnil)) in let tv = copy copy_scope existential in assert (is_Tvar tv); @@ -1315,7 +1360,7 @@ let instance_parameterized_type ?keep_names sch_args sch = ) let map_kind f = function - | Type_abstract -> Type_abstract + | Type_abstract r -> Type_abstract r | Type_open -> Type_open | Type_variant (cl, rep) -> Type_variant ( @@ -1404,7 +1449,7 @@ let copy_sep ~copy_scope ~fixed ~(visited : type_expr TypeHash.t) sch = let delayed_copies = ref [] in let add_delayed_copy t ty = delayed_copies := - lazy (Transient_expr.set_stub_desc t (Tlink (copy copy_scope ty))) :: + (fun () -> Transient_expr.set_stub_desc t (Tlink (copy copy_scope ty))) :: !delayed_copies in let rec copy_rec ~may_share (ty : type_expr) = @@ -1445,10 +1490,10 @@ let copy_sep ~copy_scope ~fixed ~(visited : type_expr TypeHash.t) sch = end in let ty = copy_rec ~may_share:true sch in - List.iter Lazy.force !delayed_copies; + List.iter (fun force -> force ()) !delayed_copies; ty -let instance_poly' copy_scope ~keep_names fixed univars sch = +let instance_poly' copy_scope ~keep_names ~fixed univars sch = (* In order to compute univars below, [sch] should not contain [Tsubst] *) let copy_var ty = match get_desc ty with @@ -1461,17 +1506,17 @@ let instance_poly' copy_scope ~keep_names fixed univars sch = let ty = copy_sep ~copy_scope ~fixed ~visited sch in vars, ty -let instance_poly ?(keep_names=false) fixed univars sch = +let instance_poly ?(keep_names=false) ~fixed univars sch = For_copy.with_scope (fun copy_scope -> - instance_poly' copy_scope ~keep_names fixed univars sch + instance_poly' copy_scope ~keep_names ~fixed univars sch ) -let instance_label fixed lbl = +let instance_label ~fixed lbl = For_copy.with_scope (fun copy_scope -> let vars, ty_arg = match get_desc lbl.lbl_arg with Tpoly (ty, tl) -> - instance_poly' copy_scope ~keep_names:false fixed tl ty + instance_poly' copy_scope ~keep_names:false ~fixed tl ty | _ -> [], copy copy_scope lbl.lbl_arg in @@ -1505,17 +1550,14 @@ let subst env level priv abbrev oty params args body = abbreviations := abbrev; let (params', body') = instance_parameterized_type params body in abbreviations := ref Mnil; - let old_umode = !umode in - umode := Subst; + let uenv = Expression {env; in_subst = true} in try - !unify_var' env body0 body'; - List.iter2 (!unify_var' env) params' args; + !unify_var' uenv body0 body'; + List.iter2 (!unify_var' uenv) params' args; current_level := old_level; - umode := old_umode; body' with Unify _ -> current_level := old_level; - umode := old_umode; undo_abbrev (); raise Cannot_subst @@ -1526,28 +1568,27 @@ let subst env level priv abbrev oty params args body = care about efficiency here. *) let apply ?(use_current_level = false) env params body args = + simple_abbrevs := Mnil; let level = if use_current_level then !current_level else generic_level in try subst env level Public (ref Mnil) None params args body with Cannot_subst -> raise Cannot_apply -let () = Subst.ctype_apply_env_empty := apply Env.empty - (****************************) (* Abbreviation expansion *) (****************************) (* If the environment has changed, memorized expansions might not - be correct anymore, and so we flush the cache. This is safe but - quite pessimistic: it would be enough to flush the cache when a - type or module definition is overridden in the environment. + be correct anymore, and so we flush the cache. The test used + checks whether any of types, modules, or local constraints have + been changed. *) let previous_env = ref Env.empty (*let string_of_kind = function Public -> "public" | Private -> "private"*) let check_abbrev_env env = - if env != !previous_env then begin + if not (Env.same_type_declarations env !previous_env) then begin (* prerr_endline "cleanup expansion cache"; *) cleanup_abbrev (); previous_env := env @@ -1573,59 +1614,55 @@ let check_abbrev_env env = and this other expansion fails. *) let expand_abbrev_gen kind find_type_expansion env ty = + let path, args, abbrev = match get_desc ty with + | Tconstr (path,args,abbrev) -> path, args, abbrev + | _ -> assert false + in check_abbrev_env env; - match get_desc ty with - Tconstr (path, args, abbrev) -> - let level = get_level ty in - let scope = get_scope ty in - let lookup_abbrev = proper_abbrevs args abbrev in - begin match find_expans kind path !lookup_abbrev with - Some ty' -> + let level = get_level ty in + let scope = get_scope ty in + let lookup_abbrev = proper_abbrevs args abbrev in + let expansion = + (* first look for an existing expansion *) + match find_expans kind path !lookup_abbrev with + | None -> None + | Some ty' -> try + (* prerr_endline + ("found a "^string_of_kind kind^" expansion for "^Path.name path);*) + if level <> generic_level then update_level env level ty'; + update_scope scope ty'; + Some ty' + with Escape _ -> + (* in case of Escape, discard the stale expansion and re-expand *) + forget_abbrev lookup_abbrev path; + None + in + begin match expansion with + | Some ty' -> ty' + | None -> + (* attempt to (re-)expand *) + match find_type_expansion path env with + | exception Not_found -> + (* another way to expand is to normalize the path itself *) + let path' = Env.normalize_type_path None env path in + if Path.same path path' then raise Cannot_expand + else newty2 ~level (Tconstr (path', args, abbrev)) + | (params, body, lv) -> (* prerr_endline - ("found a "^string_of_kind kind^" expansion for "^Path.name path);*) - if level <> generic_level then - begin try - update_level env level ty' - with Escape _ -> - (* XXX This should not happen. - However, levels are not correctly restored after a - typing error *) - () - end; - begin try - update_scope scope ty'; - with Escape _ -> - (* XXX This should not happen. - However, levels are not correctly restored after a - typing error *) - () - end; + ("add a "^string_of_kind kind^" expansion for "^Path.name path);*) + let ty' = + try + subst env level kind abbrev (Some ty) params args body + with Cannot_subst -> raise_escape_exn Constraint + in + (* For gadts, remember type as non exportable *) + (* The ambiguous level registered for ty' should be the highest *) + (* if !trace_gadt_instances then begin *) + let scope = Int.max lv (get_scope ty) in + update_scope scope ty; + update_scope scope ty'; ty' - | None -> - match find_type_expansion path env with - | exception Not_found -> - (* another way to expand is to normalize the path itself *) - let path' = Env.normalize_type_path None env path in - if Path.same path path' then raise Cannot_expand - else newty2 ~level (Tconstr (path', args, abbrev)) - | (params, body, lv) -> - (* prerr_endline - ("add a "^string_of_kind kind^" expansion for "^Path.name path);*) - let ty' = - try - subst env level kind abbrev (Some ty) params args body - with Cannot_subst -> raise_escape_exn Constraint - in - (* For gadts, remember type as non exportable *) - (* The ambiguous level registered for ty' should be the highest *) - (* if !trace_gadt_instances then begin *) - let scope = Int.max lv (get_scope ty) in - update_scope scope ty; - update_scope scope ty'; - ty' - end - | _ -> - assert false + end (* Expand respecting privacy *) let expand_abbrev env ty = @@ -1703,7 +1740,7 @@ let rec extract_concrete_typedecl env ty = begin match Env.find_type p env with | exception Not_found -> May_have_typedecl | decl -> - if decl.type_kind <> Type_abstract then Typedecl(p, p, decl) + if not (type_kind_is_abstract decl) then Typedecl(p, p, decl) else begin match try_expand_safe env ty with | exception Cannot_expand -> May_have_typedecl @@ -1791,7 +1828,7 @@ let generic_abbrev env path = let generic_private_abbrev env path = try match Env.find_type path env with - {type_kind = Type_abstract; + {type_kind = Type_abstract _; type_private = Private; type_manifest = Some body} -> get_level body = generic_level @@ -1841,8 +1878,9 @@ let type_changed = ref false (* trace possible changes to the studied type *) let merge r b = if b then r := true -let occur env ty0 ty = - let allow_recursive = allow_recursive_equations () in +let occur uenv ty0 ty = + let env = get_env uenv in + let allow_recursive = allow_recursive_equations uenv in let old = !type_changed in try while @@ -1856,13 +1894,13 @@ let occur env ty0 ty = merge type_changed old; raise exn -let occur_for tr_exn env t1 t2 = +let occur_for tr_exn uenv t1 t2 = try - occur env t1 t2 + occur uenv t1 t2 with Occur -> raise_for tr_exn (Rec_occur(t1, t2)) let occur_in env ty0 t = - try occur env ty0 t; false with Occur -> true + try occur (Expression {env; in_subst = false}) ty0 t; false with Occur -> true (* Check that a local constraint is well-founded *) (* PR#6405: not needed since we allow recursion and work on normalized types *) @@ -1901,8 +1939,9 @@ let rec local_non_recursive_abbrev ~allow_rec strict visited env p ty = (local_non_recursive_abbrev ~allow_rec true visited env p) ty end -let local_non_recursive_abbrev env p ty = - let allow_rec = allow_recursive_equations () in +let local_non_recursive_abbrev uenv p ty = + let env = get_env uenv in + let allow_rec = allow_recursive_equations uenv in try (* PR#7397: need to check trace_gadt_instances *) wrap_trace_gadt_instances env (local_non_recursive_abbrev ~allow_rec false [] env p) ty; @@ -1916,14 +1955,12 @@ let local_non_recursive_abbrev env p ty = (* Since we cannot duplicate universal variables, unification must be done at meta-level, using bindings in univar_pairs *) -(* TODO: use find_opt *) let rec unify_univar t1 t2 = function (cl1, cl2) :: rem -> let find_univ t cl = - try - let (_, r) = List.find (fun (t',_) -> eq_type t t') cl in - Some r - with Not_found -> None + List.find_map (fun (t', r) -> + if eq_type t t' then Some r else None + ) cl in begin match find_univ t1 cl1, find_univ t2 cl2 with Some {contents=Some t'2}, Some _ when eq_type t2 t'2 -> @@ -2171,28 +2208,26 @@ let deep_occur t0 ty = with Occur -> unmark_type ty; true -let gadt_equations_level = ref None - -let get_gadt_equations_level () = - match !gadt_equations_level with - | None -> assert false - | Some x -> x - -(* a local constraint can be added only if the rhs +(* A local constraint can be added only if the rhs of the constraint does not contain any Tvars. - They need to be removed using this function *) -let reify env t = - let fresh_constr_scope = get_gadt_equations_level () in + They need to be removed using this function. + This function is called only in [Pattern] mode. *) +let reify uenv t = + let fresh_constr_scope = get_equations_scope uenv in let create_fresh_constr lev name = let name = match name with Some s -> "$'"^s | _ -> "$" in - let decl = new_local_type () in + let decl = new_local_type Definition in + let env = get_env uenv in + let new_name = + (* unique names are needed only for error messages *) + if in_counterexample uenv then name else get_new_abstract_name env name + in let (id, new_env) = - Env.enter_type (get_new_abstract_name !env name) decl !env - ~scope:fresh_constr_scope in + Env.enter_type new_name decl env ~scope:fresh_constr_scope in let path = Path.Pident id in - let t = newty2 ~level:lev (Tconstr (path,[],ref Mnil)) in - env := new_env; + let t = newty2 ~level:lev (Tconstr (path,[],ref Mnil)) in + set_env uenv new_env; path, t in let visited = ref TypeSet.empty in @@ -2242,7 +2277,7 @@ let non_aliasable p decl = let is_instantiable env p = try let decl = Env.find_type p env in - decl.type_kind = Type_abstract && + type_kind_is_abstract decl && decl.type_private = Public && decl.type_arity = 0 && decl.type_manifest = None && @@ -2425,9 +2460,9 @@ and mcomp_type_decl type_pairs env p1 p2 tl1 tl2 = mcomp_variant_description type_pairs env v1 v2 | Type_open, Type_open -> mcomp_list type_pairs env tl1 tl2 - | Type_abstract, Type_abstract -> () - | Type_abstract, _ when not (non_aliasable p1 decl)-> () - | _, Type_abstract when not (non_aliasable p2 decl') -> () + | Type_abstract _, Type_abstract _ -> () + | Type_abstract _, _ when not (non_aliasable p1 decl)-> () + | _, Type_abstract _ when not (non_aliasable p2 decl') -> () | _ -> raise Incompatible with Not_found -> () @@ -2491,30 +2526,32 @@ let find_lowest_level ty = end in find ty; unmark_type ty; !lowest -let add_gadt_equation env source destination = +(* This function can be called only in [Pattern] mode. *) +let add_gadt_equation uenv source destination = (* Format.eprintf "@[add_gadt_equation %s %a@]@." (Path.name source) !Btype.print_raw destination; *) - if has_free_univars !env destination then - occur_univar ~inj_only:true !env destination - else if local_non_recursive_abbrev !env source destination then begin + let env = get_env uenv in + if has_free_univars env destination then + occur_univar ~inj_only:true env destination + else if local_non_recursive_abbrev uenv source destination then begin let destination = duplicate_type destination in let expansion_scope = - Int.max (Path.scope source) (get_gadt_equations_level ()) + Int.max (Path.scope source) (get_equations_scope uenv) + in + let type_origin = + match Env.find_type source env with + | decl -> type_origin decl + | exception Not_found -> assert false in let decl = - new_local_type ~manifest_and_scope:(destination, expansion_scope) () in - env := Env.add_local_type source decl !env; + new_local_type + ~manifest_and_scope:(destination, expansion_scope) + type_origin + in + set_env uenv (Env.add_local_constraint source decl env); cleanup_abbrev () end -let unify_eq_set = TypePairs.create 11 - -let order_type_pair t1 t2 = - if get_id t1 <= get_id t2 then (t1, t2) else (t2, t1) - -let add_type_equality t1 t2 = - TypePairs.add unify_eq_set (order_type_pair t1 t2) - let eq_package_path env p1 p2 = Path.same p1 p2 || Path.same (normalize_package_path env p1) (normalize_package_path env p2) @@ -2563,7 +2600,7 @@ let complete_type_list ?(allow_absent=false) env fl1 lv2 mty2 fl2 = | (n, _) :: nl, _ -> let lid = concat_longident (Longident.Lident "Pkg") n in match Env.find_type_by_name lid env' with - | (_, {type_arity = 0; type_kind = Type_abstract; + | (_, {type_arity = 0; type_kind = Type_abstract _; type_private = Public; type_manifest = Some t2}) -> begin match nondep_instance env' lv2 id2 t2 with | t -> (n, t) :: complete nl fl2 @@ -2573,7 +2610,7 @@ let complete_type_list ?(allow_absent=false) env fl1 lv2 mty2 fl2 = else raise Exit end - | (_, {type_arity = 0; type_kind = Type_abstract; + | (_, {type_arity = 0; type_kind = Type_abstract _; type_private = Public; type_manifest = None}) when allow_absent -> complete nl fl2 @@ -2596,16 +2633,15 @@ let unify_package env unify_list lv1 p1 fl1 lv2 p2 fl2 = (* force unification in Reither when one side has a non-conjunctive type *) +(* Code smell: this could also be put in unification_environment. + Only modified by expand_head_rigid, but the corresponding unification + environment is built in subst. *) let rigid_variants = ref false -let unify_eq t1 t2 = - eq_type t1 t2 - || (in_pattern_mode () - && TypePairs.mem unify_eq_set (order_type_pair t1 t2)) - -let unify1_var env t1 t2 = +let unify1_var uenv t1 t2 = assert (is_Tvar t1); - occur_for Unify env t1 t2; + occur_for Unify uenv t1 t2; + let env = get_env uenv in match occur_univar_for Unify env t2 with | () -> begin @@ -2617,20 +2653,20 @@ let unify1_var env t1 t2 = end; link_type t1 t2; true - | exception Unify_trace _ when in_pattern_mode () -> + | exception Unify_trace _ when in_pattern_mode uenv -> false (* Called from unify3 *) -let unify3_var env t1' t2 t2' = - occur_for Unify !env t1' t2; - match occur_univar_for Unify !env t2 with +let unify3_var uenv t1' t2 t2' = + occur_for Unify uenv t1' t2; + match occur_univar_for Unify (get_env uenv) t2 with | () -> link_type t1' t2 - | exception Unify_trace _ when in_pattern_mode () -> - reify env t1'; - reify env t2'; - if can_generate_equations () then begin - occur_univar ~inj_only:true !env t2'; - record_equation t1' t2'; + | exception Unify_trace _ when in_pattern_mode uenv -> + reify uenv t1'; + reify uenv t2'; + if can_generate_equations uenv then begin + occur_univar ~inj_only:true (get_env uenv) t2'; + record_equation uenv t1' t2'; end (* @@ -2657,82 +2693,84 @@ let unify3_var env t1' t2 t2' = information is indeed lost, but it probably does not worth it. *) -let rec unify (env:Env.t ref) t1 t2 = +let rec unify uenv t1 t2 = (* First step: special cases (optimizations) *) - if unify_eq t1 t2 then () else - let reset_tracing = check_trace_gadt_instances !env in + if unify_eq uenv t1 t2 then () else + let reset_tracing = check_trace_gadt_instances (get_env uenv) in try type_changed := true; begin match (get_desc t1, get_desc t2) with (Tvar _, Tconstr _) when deep_occur t1 t2 -> - unify2 env t1 t2 + unify2 uenv t1 t2 | (Tconstr _, Tvar _) when deep_occur t2 t1 -> - unify2 env t1 t2 + unify2 uenv t1 t2 | (Tvar _, _) -> - if unify1_var !env t1 t2 then () else unify2 env t1 t2 + if unify1_var uenv t1 t2 then () else unify2 uenv t1 t2 | (_, Tvar _) -> - if unify1_var !env t2 t1 then () else unify2 env t1 t2 + if unify1_var uenv t2 t1 then () else unify2 uenv t1 t2 | (Tunivar _, Tunivar _) -> unify_univar_for Unify t1 t2 !univar_pairs; - update_level_for Unify !env (get_level t1) t2; + update_level_for Unify (get_env uenv) (get_level t1) t2; update_scope_for Unify (get_scope t1) t2; link_type t1 t2 | (Tconstr (p1, [], a1), Tconstr (p2, [], a2)) - when Path.same p1 p2 (* && actual_mode !env = Old *) + when Path.same p1 p2 (* This optimization assumes that t1 does not expand to t2 (and conversely), so we fall back to the general case when any of the types has a cached expansion. *) && not (has_cached_expansion p1 !a1 || has_cached_expansion p2 !a2) -> - update_level_for Unify !env (get_level t1) t2; + update_level_for Unify (get_env uenv) (get_level t1) t2; update_scope_for Unify (get_scope t1) t2; link_type t1 t2 - | (Tconstr _, Tconstr _) when Env.has_local_constraints !env -> - unify2_rec env t1 t1 t2 t2 + | (Tconstr _, Tconstr _) when Env.has_local_constraints (get_env uenv) -> + unify2_rec uenv t1 t1 t2 t2 | _ -> - unify2 env t1 t2 + unify2 uenv t1 t2 end; reset_trace_gadt_instances reset_tracing; with Unify_trace trace -> reset_trace_gadt_instances reset_tracing; raise_trace_for Unify (Diff {got = t1; expected = t2} :: trace) -and unify2 env t1 t2 = unify2_expand env t1 t1 t2 t2 +and unify2 uenv t1 t2 = unify2_expand uenv t1 t1 t2 t2 -and unify2_rec env t10 t1 t20 t2 = - if unify_eq t1 t2 then () else +and unify2_rec uenv t10 t1 t20 t2 = + if unify_eq uenv t1 t2 then () else try match (get_desc t1, get_desc t2) with | (Tconstr (p1, tl1, a1), Tconstr (p2, tl2, a2)) -> if Path.same p1 p2 && tl1 = [] && tl2 = [] && not (has_cached_expansion p1 !a1 || has_cached_expansion p2 !a2) then begin - update_level_for Unify !env (get_level t1) t2; + update_level_for Unify (get_env uenv) (get_level t1) t2; update_scope_for Unify (get_scope t1) t2; link_type t1 t2 end else - if find_expansion_scope !env p1 > find_expansion_scope !env p2 - then unify2_rec env t10 t1 t20 (try_expand_safe !env t2) - else unify2_rec env t10 (try_expand_safe !env t1) t20 t2 + let env = get_env uenv in + if find_expansion_scope env p1 > find_expansion_scope env p2 + then unify2_rec uenv t10 t1 t20 (try_expand_safe env t2) + else unify2_rec uenv t10 (try_expand_safe env t1) t20 t2 | _ -> raise Cannot_expand with Cannot_expand -> - unify2_expand env t10 t1 t20 t2 + unify2_expand uenv t10 t1 t20 t2 -and unify2_expand env t1 t1' t2 t2' = +and unify2_expand uenv t1 t1' t2 t2' = (* Second step: expansion of abbreviations *) (* Expansion may change the representative of the types. *) - ignore (expand_head_unif !env t1'); - ignore (expand_head_unif !env t2'); - let t1' = expand_head_unif !env t1' in - let t2' = expand_head_unif !env t2' in + let env = get_env uenv in + ignore (expand_head_unif env t1'); + ignore (expand_head_unif env t2'); + let t1' = expand_head_unif env t1' in + let t2' = expand_head_unif env t2' in let lv = Int.min (get_level t1') (get_level t2') in let scope = Int.max (get_scope t1') (get_scope t2') in - update_level_for Unify !env lv t2; - update_level_for Unify !env lv t1; + update_level_for Unify env lv t2; + update_level_for Unify env lv t1; update_scope_for Unify scope t2; update_scope_for Unify scope t1; - if unify_eq t1' t2' then () else + if unify_eq uenv t1' t2' then () else let t1, t2 = if !Clflags.principal @@ -2743,13 +2781,13 @@ and unify2_expand env t1 t1' t2 t2' = (match get_desc t2 with Tconstr (_, [], _) -> t2' | _ -> t2) else (t1, t2) in - if unify_eq t1 t1' || not (unify_eq t2 t2') then - unify3 env t1 t1' t2 t2' + if unify_eq uenv t1 t1' || not (unify_eq uenv t2 t2') then + unify3 uenv t1 t1' t2 t2' else - try unify3 env t2 t2' t1 t1' with Unify_trace trace -> + try unify3 uenv t2 t2' t1 t1' with Unify_trace trace -> raise_trace_for Unify (swap_trace trace) -and unify3 env t1 t1' t2 t2' = +and unify3 uenv t1 t1' t2 t2' = (* Third step: truly unification *) (* Assumes either [t1 == t1'] or [t2 != t2'] *) let tt1' = Transient_expr.repr t1' in @@ -2762,24 +2800,24 @@ and unify3 env t1 t1' t2 t2' = unify_univar_for Unify t1' t2' !univar_pairs; link_type t1' t2' | (Tvar _, _) -> - unify3_var env t1' t2 t2' + unify3_var uenv t1' t2 t2' | (_, Tvar _) -> - unify3_var env t2' t1 t1' + unify3_var uenv t2' t1 t1' | (Tfield _, Tfield _) -> (* special case for GADTs *) - unify_fields env t1' t2' + unify_fields uenv t1' t2' | _ -> - if in_pattern_mode () then - add_type_equality t1' t2' + if in_pattern_mode uenv then + add_type_equality uenv t1' t2' else begin - occur_for Unify !env t1' t2; + occur_for Unify uenv t1' t2; link_type t1' t2 end; try begin match (d1, d2) with (Tarrow (l1, t1, u1, c1), Tarrow (l2, t2, u2, c2)) when l1 = l2 || - (!Clflags.classic || in_pattern_mode ()) && + (!Clflags.classic || in_pattern_mode uenv) && not (is_optional l1 || is_optional l2) -> - unify env t1 t2; unify env u1 u2; + unify uenv t1 t2; unify uenv u1 u2; begin match is_commu_ok c1, is_commu_ok c2 with | false, true -> set_commu_ok c1 | true, false -> set_commu_ok c2 @@ -2787,64 +2825,67 @@ and unify3 env t1 t1' t2 t2' = | true, true -> () end | (Ttuple tl1, Ttuple tl2) -> - unify_list env tl1 tl2 + unify_list uenv tl1 tl2 | (Tconstr (p1, tl1, _), Tconstr (p2, tl2, _)) when Path.same p1 p2 -> - if not (can_generate_equations ()) then - unify_list env tl1 tl2 - else if can_assume_injective () then - without_assume_injective (fun () -> unify_list env tl1 tl2) + if not (can_generate_equations uenv) then + unify_list uenv tl1 tl2 + else if can_assume_injective uenv then + without_assume_injective uenv (fun uenv -> unify_list uenv tl1 tl2) else if in_current_module p1 (* || in_pervasives p1 *) - || List.exists (expands_to_datatype !env) [t1'; t1; t2] + || List.exists (expands_to_datatype (get_env uenv)) [t1'; t1; t2] then - unify_list env tl1 tl2 + unify_list uenv tl1 tl2 else let inj = try List.map Variance.(mem Inj) - (Env.find_type p1 !env).type_variance + (Env.find_type p1 (get_env uenv)).type_variance with Not_found -> List.map (fun _ -> false) tl1 in List.iter2 (fun i (t1, t2) -> - if i then unify env t1 t2 else - without_generating_equations - begin fun () -> + if i then unify uenv t1 t2 else + without_generating_equations uenv + begin fun uenv -> let snap = snapshot () in - try unify env t1 t2 with Unify_trace _ -> + try unify uenv t1 t2 with Unify_trace _ -> backtrack snap; - reify env t1; - reify env t2 + reify uenv t1; + reify uenv t2 end) inj (List.combine tl1 tl2) | (Tconstr (path,[],_), Tconstr (path',[],_)) - when is_instantiable !env path && is_instantiable !env path' - && can_generate_equations () -> + when let env = get_env uenv in + is_instantiable env path && is_instantiable env path' + && can_generate_equations uenv -> let source, destination = if Path.scope path > Path.scope path' then path , t2' else path', t1' in - record_equation t1' t2'; - add_gadt_equation env source destination + record_equation uenv t1' t2'; + add_gadt_equation uenv source destination | (Tconstr (path,[],_), _) - when is_instantiable !env path && can_generate_equations () -> - reify env t2'; - record_equation t1' t2'; - add_gadt_equation env path t2' + when is_instantiable (get_env uenv) path + && can_generate_equations uenv -> + reify uenv t2'; + record_equation uenv t1' t2'; + add_gadt_equation uenv path t2' | (_, Tconstr (path,[],_)) - when is_instantiable !env path && can_generate_equations () -> - reify env t1'; - record_equation t1' t2'; - add_gadt_equation env path t1' - | (Tconstr (_,_,_), _) | (_, Tconstr (_,_,_)) when in_pattern_mode () -> - reify env t1'; - reify env t2'; - if can_generate_equations () then ( - mcomp_for Unify !env t1' t2'; - record_equation t1' t2' + when is_instantiable (get_env uenv) path + && can_generate_equations uenv -> + reify uenv t1'; + record_equation uenv t1' t2'; + add_gadt_equation uenv path t1' + | (Tconstr (_,_,_), _) | (_, Tconstr (_,_,_)) when in_pattern_mode uenv -> + reify uenv t1'; + reify uenv t2'; + if can_generate_equations uenv then ( + mcomp_for Unify (get_env uenv) t1' t2'; + record_equation uenv t1' t2' ) | (Tobject (fi1, nm1), Tobject (fi2, _)) -> - unify_fields env fi1 fi2; + unify_fields uenv fi1 fi2; (* Type [t2'] may have been instantiated by [unify_fields] *) (* XXX One should do some kind of unification... *) begin match get_desc t2' with @@ -2855,26 +2896,26 @@ and unify3 env t1 t1' t2 t2' = | _ -> () end | (Tvariant row1, Tvariant row2) -> - if not (in_pattern_mode ()) then - unify_row env row1 row2 + if not (in_pattern_mode uenv) then + unify_row uenv row1 row2 else begin let snap = snapshot () in - try unify_row env row1 row2 + try unify_row uenv row1 row2 with Unify_trace _ -> backtrack snap; - reify env t1'; - reify env t2'; - if can_generate_equations () then ( - mcomp_for Unify !env t1' t2'; - record_equation t1' t2' + reify uenv t1'; + reify uenv t2'; + if can_generate_equations uenv then ( + mcomp_for Unify (get_env uenv) t1' t2'; + record_equation uenv t1' t2' ) end | (Tfield(f,kind,_,rem), Tnil) | (Tnil, Tfield(f,kind,_,rem)) -> begin match field_kind_repr kind with Fprivate when f <> dummy_method -> link_kind ~inside:kind field_absent; - if d2 = Tnil then unify env rem t2' - else unify env (newgenty Tnil) rem + if d2 = Tnil then unify uenv rem t2' + else unify uenv (newgenty Tnil) rem | _ -> if f = dummy_method then raise_for Unify (Obj Self_cannot_be_closed) @@ -2886,16 +2927,17 @@ and unify3 env t1 t1' t2 t2' = | (Tnil, Tnil) -> () | (Tpoly (t1, []), Tpoly (t2, [])) -> - unify env t1 t2 + unify uenv t1 t2 | (Tpoly (t1, tl1), Tpoly (t2, tl2)) -> - enter_poly_for Unify !env univar_pairs t1 tl1 t2 tl2 (unify env) + enter_poly_for Unify (get_env uenv) univar_pairs t1 tl1 t2 tl2 + (unify uenv) | (Tpackage (p1, fl1), Tpackage (p2, fl2)) -> begin try - unify_package !env (unify_list env) + unify_package (get_env uenv) (unify_list uenv) (get_level t1) p1 fl1 (get_level t2) p2 fl2 with Not_found -> - if not (in_pattern_mode ()) then raise_unexplained_for Unify; - List.iter (fun (_n, ty) -> reify env ty) (fl1 @ fl2); + if not (in_pattern_mode uenv) then raise_unexplained_for Unify; + List.iter (fun (_n, ty) -> reify uenv ty) (fl1 @ fl2); (* if !generate_equations then List.iter2 (mcomp !env) tl1 tl2 *) end | (Tnil, Tconstr _ ) -> @@ -2910,7 +2952,7 @@ and unify3 env t1 t1' t2 t2' = match get_desc t2 with Tconstr (p, tl, abbrev) -> forget_abbrev abbrev p; - let t2'' = expand_head_unif !env t2 in + let t2'' = expand_head_unif (get_env uenv) t2 in if not (closed_parameterized_type tl t2'') then link_type t2 t2' | _ -> @@ -2945,7 +2987,7 @@ and make_rowvar level use1 rest1 use2 rest2 = if use1 then rest1 else if use2 then rest2 else newty2 ~level (Tvar name) -and unify_fields env ty1 ty2 = (* Optimization *) +and unify_fields uenv ty1 ty2 = (* Optimization *) let (fields1, rest1) = flatten_fields ty1 and (fields2, rest2) = flatten_fields ty2 in let (pairs, miss1, miss2) = associate_fields fields1 fields2 in @@ -2954,18 +2996,18 @@ and unify_fields env ty1 ty2 = (* Optimization *) let tr1 = Transient_expr.repr rest1 and tr2 = Transient_expr.repr rest2 in let d1 = tr1.desc and d2 = tr2.desc in try - unify env (build_fields l1 miss1 va) rest2; - unify env rest1 (build_fields l2 miss2 va); + unify uenv (build_fields l1 miss1 va) rest2; + unify uenv rest1 (build_fields l2 miss2 va); List.iter (fun (name, k1, t1, k2, t2) -> unify_kind k1 k2; try - if !trace_gadt_instances && not (in_subst_mode ()) then begin + if !trace_gadt_instances && not (in_subst_mode uenv) then begin (* in_subst_mode: see PR#11771 *) - update_level_for Unify !env (get_level va) t1; + update_level_for Unify (get_env uenv) (get_level va) t1; update_scope_for Unify (get_scope va) t1 end; - unify env t1 t2 + unify uenv t1 t2 with Unify_trace trace -> raise_trace_for Unify (incompatible_fields ~name ~got:t1 ~expected:t2 :: trace) @@ -2983,12 +3025,12 @@ and unify_kind k1 k2 = | (Fpublic, Fpublic) -> () | _ -> assert false -and unify_row env row1 row2 = +and unify_row uenv row1 row2 = let Row {fields = row1_fields; more = rm1; closed = row1_closed; name = row1_name} = row_repr row1 in let Row {fields = row2_fields; more = rm2; closed = row2_closed; name = row2_name} = row_repr row2 in - if unify_eq rm1 rm2 then () else + if unify_eq uenv rm1 rm2 then () else let r1, r2, pairs = merge_row_fields row1_fields row2_fields in if r1 <> [] && r2 <> [] then begin let ht = Hashtbl.create (List.length r1) in @@ -3053,18 +3095,19 @@ and unify_row env row1 row2 = (* The following test is not principal... should rather use Tnil *) let rm = row_more row in (*if !trace_gadt_instances && rm.desc = Tnil then () else*) - if !trace_gadt_instances && not (in_subst_mode ()) then + if !trace_gadt_instances && not (in_subst_mode uenv) then (* in_subst_mode: see PR#11771 *) - update_level_for Unify !env (get_level rm) (newgenty (Tvariant row)); + update_level_for Unify (get_env uenv) (get_level rm) + (newgenty (Tvariant row)); if has_fixed_explanation row then if eq_type more rm then () else - if is_Tvar rm then link_type rm more else unify env rm more + if is_Tvar rm then link_type rm more else unify uenv rm more else let ty = newgenty (Tvariant (create_row ~fields:rest ~more ~closed ~fixed ~name)) in - update_level_for Unify !env (get_level rm) ty; + update_level_for Unify (get_env uenv) (get_level rm) ty; update_scope_for Unify (get_scope rm) ty; link_type rm ty in @@ -3075,7 +3118,7 @@ and unify_row env row1 row2 = set_more First row1 r2; List.iter (fun (l,f1,f2) -> - try unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 + try unify_row_field uenv fixed1 fixed2 rm1 rm2 l f1 f2 with Unify_trace trace -> raise_trace_for Unify (Variant (Incompatible_types_for l) :: trace) ) @@ -3090,7 +3133,7 @@ and unify_row env row1 row2 = raise exn end -and unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 = +and unify_row_field uenv fixed1 fixed2 rm1 rm2 l f1 f2 = let if_not_fixed (pos,fixed) f = match fixed with | None -> f () @@ -3103,7 +3146,7 @@ and unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 = | _ -> true in if f1 == f2 then () else match row_field_repr f1, row_field_repr f2 with - Rpresent(Some t1), Rpresent(Some t2) -> unify env t1 t2 + Rpresent(Some t1), Rpresent(Some t2) -> unify uenv t1 t2 | Rpresent None, Rpresent None -> () | Reither(c1, tl1, m1), Reither(c2, tl2, m2) -> if eq_row_field_ext f1 f2 then () else @@ -3113,7 +3156,7 @@ and unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 = (* PR#7496 *) let f = rf_either [] ~no_arg ~matched in link_row_field_ext ~inside:f1 f; link_row_field_ext ~inside:f2 f; - List.iter2 (unify env) tl1 tl2 + List.iter2 (unify uenv) tl1 tl2 end else let redo = (m1 || m2 || either_fixed || @@ -3122,29 +3165,31 @@ and unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 = | t1 :: tl -> if no_arg then raise_unexplained_for Unify; Types.changed_row_field_exts [f1;f2] (fun () -> - List.iter (unify env t1) tl + List.iter (unify uenv t1) tl ) end in - if redo then unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 else + if redo then unify_row_field uenv fixed1 fixed2 rm1 rm2 l f1 f2 else let remq tl = List.filter (fun ty -> not (List.exists (eq_type ty) tl)) in let tl1' = remq tl2 tl1 and tl2' = remq tl1 tl2 in (* PR#6744 *) - let (tlu1,tl1') = List.partition (has_free_univars !env) tl1' - and (tlu2,tl2') = List.partition (has_free_univars !env) tl2' in + let env = get_env uenv in + let (tlu1,tl1') = List.partition (has_free_univars env) tl1' + and (tlu2,tl2') = List.partition (has_free_univars env) tl2' in begin match tlu1, tlu2 with [], [] -> () | (tu1::tlu1), _ :: _ -> (* Attempt to merge all the types containing univars *) - List.iter (unify env tu1) (tlu1@tlu2) + List.iter (unify uenv tu1) (tlu1@tlu2) | (tu::_, []) | ([], tu::_) -> - occur_univar_for Unify !env tu + occur_univar_for Unify env tu end; (* Is this handling of levels really principal? *) let update_levels rm = + let env = get_env uenv in List.iter (fun ty -> - update_level_for Unify !env (get_level rm) ty; + update_level_for Unify env (get_level rm) ty; update_scope_for Unify (get_scope rm) ty) in update_levels rm2 tl1'; @@ -3161,60 +3206,71 @@ and unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 = if_not_fixed first (fun () -> let s = snapshot () in link_row_field_ext ~inside:f1 f2; - update_level_for Unify !env (get_level rm1) t2; + update_level_for Unify (get_env uenv) (get_level rm1) t2; update_scope_for Unify (get_scope rm1) t2; - (try List.iter (fun t1 -> unify env t1 t2) tl + (try List.iter (fun t1 -> unify uenv t1 t2) tl with exn -> undo_first_change_after s; raise exn) ) | Rpresent(Some t1), Reither(false, tl, _) -> if_not_fixed second (fun () -> let s = snapshot () in link_row_field_ext ~inside:f2 f1; - update_level_for Unify !env (get_level rm2) t1; + update_level_for Unify (get_env uenv) (get_level rm2) t1; update_scope_for Unify (get_scope rm2) t1; - (try List.iter (unify env t1) tl + (try List.iter (unify uenv t1) tl with exn -> undo_first_change_after s; raise exn) ) | Reither(true, [], _), Rpresent None -> if_not_fixed first (fun () -> link_row_field_ext ~inside:f1 f2) | Rpresent None, Reither(true, [], _) -> if_not_fixed second (fun () -> link_row_field_ext ~inside:f2 f1) - | _ -> raise_unexplained_for Unify - -let unify env ty1 ty2 = + | Rabsent, (Rpresent _ | Reither(_,_,true)) -> + raise_trace_for Unify [Variant(No_tags(First, [l,f1]))] + | (Rpresent _ | Reither (_,_,true)), Rabsent -> + raise_trace_for Unify [Variant(No_tags(Second, [l,f2]))] + | (Rpresent (Some _) | Reither(false,_,_)), + (Rpresent None | Reither(true,_,_)) + | (Rpresent None | Reither(true,_,_)), + (Rpresent (Some _) | Reither(false,_,_)) -> + (* constructor arity mismatch: 0 <> 1 *) + raise_unexplained_for Unify + | Reither(true, _ :: _, _ ), Rpresent _ + | Rpresent _ , Reither(true, _ :: _, _ ) -> + (* inconsistent conjunction on a non-absent field *) + raise_unexplained_for Unify + +let unify uenv ty1 ty2 = let snap = Btype.snapshot () in try - unify env ty1 ty2 + unify uenv ty1 ty2 with Unify_trace trace -> undo_compress snap; - raise (Unify (expand_to_unification_error !env trace)) + raise (Unify (expand_to_unification_error (get_env uenv) trace)) -let unify_gadt ~equations_level:lev ~allow_recursive_equations - (env:Env.t ref) ty1 ty2 = - try - univar_pairs := []; - gadt_equations_level := Some lev; - let equated_types = TypePairs.create 0 in - set_mode_pattern ~allow_recursive_equations ~equated_types - (fun () -> unify env ty1 ty2); - gadt_equations_level := None; - TypePairs.clear unify_eq_set; - equated_types - with e -> - gadt_equations_level := None; - TypePairs.clear unify_eq_set; - raise e - -let unify_var env t1 t2 = +let unify_gadt (penv : Pattern_env.t) ty1 ty2 = + univar_pairs := []; + let equated_types = TypePairs.create 0 in + let equations_generation = Allowed { equated_types } in + let uenv = Pattern + { penv; + equations_generation; + assume_injective = true; + unify_eq_set = TypePairs.create 11; } + in + unify uenv ty1 ty2; + equated_types + +let unify_var uenv t1 t2 = if eq_type t1 t2 then () else match get_desc t1, get_desc t2 with Tvar _, Tconstr _ when deep_occur t1 t2 -> - unify (ref env) t1 t2 + unify uenv t1 t2 | Tvar _, _ -> + let env = get_env uenv in let reset_tracing = check_trace_gadt_instances env in begin try - occur_for Unify env t1 t2; + occur_for Unify uenv t1 t2; update_level_for Unify env (get_level t1) t2; update_scope_for Unify (get_scope t1) t2; link_type t1 t2; @@ -3226,16 +3282,20 @@ let unify_var env t1 t2 = (Diff { got = t1; expected = t2 } :: trace))) end | _ -> - unify (ref env) t1 t2 + unify uenv t1 t2 let _ = unify_var' := unify_var +(* the final versions of unification functions *) +let unify_var env ty1 ty2 = + unify_var (Expression {env; in_subst = false}) ty1 ty2 + let unify_pairs env ty1 ty2 pairs = univar_pairs := pairs; - unify env ty1 ty2 + unify (Expression {env; in_subst = false}) ty1 ty2 let unify env ty1 ty2 = - unify_pairs (ref env) ty1 ty2 [] + unify_pairs env ty1 ty2 [] (* Lower the level of a type to the current level *) let enforce_current_level env ty = unify_var env (newvar ()) ty @@ -3696,7 +3756,7 @@ let rec moregen inst_nongen type_pairs env t1 t2 = (Tvar _, _) when may_instantiate inst_nongen t1 -> moregen_occur env (get_level t1) t2; update_scope_for Moregen (get_scope t1) t2; - occur_for Moregen env t1 t2; + occur_for Moregen (Expression {env; in_subst = false}) t1 t2; link_type t1 t2 | (Tconstr (p1, [], _), Tconstr (p2, [], _)) when Path.same p1 p2 -> () @@ -4265,9 +4325,9 @@ let rec equal_private env params1 ty1 params2 ty2 = type class_match_failure = CM_Virtual_class | CM_Parameter_arity_mismatch of int * int - | CM_Type_parameter_mismatch of Env.t * equality_error + | CM_Type_parameter_mismatch of int * Env.t * equality_error | CM_Class_type_mismatch of Env.t * class_type * class_type - | CM_Parameter_mismatch of Env.t * moregen_error + | CM_Parameter_mismatch of int * Env.t * moregen_error | CM_Val_type_mismatch of string * Env.t * comparison_error | CM_Meth_type_mismatch of string * Env.t * comparison_error | CM_Non_mutable_value of string @@ -4335,20 +4395,24 @@ let match_class_sig_shape ~strict sign1 sign2 = else err) sign1.csig_vars errors -let rec moregen_clty trace type_pairs env cty1 cty2 = +(* [arrow_index] is the number of [Cty_arrow] + constructors we've seen so far. *) +let rec moregen_clty ~arrow_index trace type_pairs env cty1 cty2 = try match cty1, cty2 with | Cty_constr (_, _, cty1), _ -> - moregen_clty true type_pairs env cty1 cty2 + moregen_clty ~arrow_index true type_pairs env cty1 cty2 | _, Cty_constr (_, _, cty2) -> - moregen_clty true type_pairs env cty1 cty2 + moregen_clty ~arrow_index true type_pairs env cty1 cty2 | Cty_arrow (l1, ty1, cty1'), Cty_arrow (l2, ty2, cty2') when l1 = l2 -> + let arrow_index = arrow_index + 1 in begin try moregen true type_pairs env ty1 ty2 with Moregen_trace trace -> raise (Failure [ - CM_Parameter_mismatch (env, expand_to_moregen_error env trace)]) + CM_Parameter_mismatch + (arrow_index, env, expand_to_moregen_error env trace)]) end; - moregen_clty false type_pairs env cty1' cty2' + moregen_clty ~arrow_index false type_pairs env cty1' cty2' | Cty_signature sign1, Cty_signature sign2 -> Meths.iter (fun lab (_, _, ty) -> @@ -4392,6 +4456,9 @@ let rec moregen_clty trace type_pairs env cty1 cty2 = Failure error when trace || error = [] -> raise (Failure (CM_Class_type_mismatch (env, cty1, cty2)::error)) +let moregen_clty trace type_pairs env cty1 cty2 = + moregen_clty ~arrow_index:0 trace type_pairs env cty1 cty2 + let match_class_types ?(trace=true) env pat_sch subj_sch = let sign1 = signature_of_class_type pat_sch in let sign2 = signature_of_class_type subj_sch in @@ -4506,11 +4573,11 @@ let match_class_declarations env patt_params patt_type subj_params subj_type = let ls = List.length subj_params in if lp <> ls then raise (Failure [CM_Parameter_arity_mismatch (lp, ls)]); - List.iter2 (fun p s -> + Std.List.iteri2 ~f:(fun n p s -> try eqtype true type_pairs subst env p s with Equality_trace trace -> raise (Failure [CM_Type_parameter_mismatch - (env, expand_to_equality_error env trace !subst)])) + (n+1, env, expand_to_equality_error env trace !subst)])) patt_params subj_params; (* old code: equal_clty false type_pairs subst env patt_type subj_type; *) equal_clsig false type_pairs subst env sign1 sign2; @@ -4857,7 +4924,7 @@ let rec subtype_rec env trace t1 t2 cstrs = | (Tpoly (u1, []), Tpoly (u2, [])) -> subtype_rec env trace u1 u2 cstrs | (Tpoly (u1, tl1), Tpoly (u2, [])) -> - let _, u1' = instance_poly false tl1 u1 in + let _, u1' = instance_poly ~fixed:false tl1 u1 in subtype_rec env trace u1' u2 cstrs | (Tpoly (u1, tl1), Tpoly (u2,tl2)) -> begin try @@ -5017,7 +5084,7 @@ let subtype env ty1 ty2 = function () -> List.iter (function (trace0, t1, t2, pairs) -> - try unify_pairs (ref env) t1 t2 pairs with Unify {trace} -> + try unify_pairs env t1 t2 pairs with Unify {trace} -> subtype_error ~env ~trace:trace0 ~unification_trace:(List.tl trace)) (List.rev cstrs) @@ -5350,7 +5417,7 @@ let nondep_type_decl env mid is_covariant decl = let params = List.map (nondep_type_rec env mid) decl.type_params in let tk = try map_kind (nondep_type_rec env mid) decl.type_kind - with Nondep_cannot_erase _ when is_covariant -> Type_abstract + with Nondep_cannot_erase _ when is_covariant -> Type_abstract Definition and tm, priv = match decl.type_manifest with | None -> None, decl.type_private diff --git a/src/ocaml/typing/ctype.mli b/src/ocaml/typing/ctype.mli index be4fddbe5b..c6759b06c4 100644 --- a/src/ocaml/typing/ctype.mli +++ b/src/ocaml/typing/ctype.mli @@ -178,12 +178,25 @@ val instance_list: type_expr list -> type_expr list (* Take an instance of a list of type schemes *) val new_local_type: ?loc:Location.t -> - ?manifest_and_scope:(type_expr * int) -> unit -> type_declaration -val existential_name: constructor_description -> type_expr -> string + ?manifest_and_scope:(type_expr * int) -> + type_origin -> type_declaration + +module Pattern_env : sig + type t = private + { mutable env : Env.t; + equations_scope : int; + (* scope for local type declarations *) + allow_recursive_equations : bool; + (* true iff checking counter examples *) + } + val make: Env.t -> equations_scope:int -> allow_recursive_equations:bool -> t + val copy: ?equations_scope:int -> t -> t + val set_env: t -> Env.t -> unit +end type existential_treatment = | Keep_existentials_flexible - | Make_existentials_abstract of { env: Env.t ref; scope: int } + | Make_existentials_abstract of Pattern_env.t val instance_constructor: existential_treatment -> constructor_description -> type_expr list * type_expr * type_expr list @@ -198,12 +211,13 @@ val instance_class: type_expr list -> class_type -> type_expr list * class_type val instance_poly: - ?keep_names:bool -> - bool -> type_expr list -> type_expr -> type_expr list * type_expr + ?keep_names:bool -> fixed:bool -> + type_expr list -> type_expr -> type_expr list * type_expr (* Take an instance of a type scheme containing free univars *) val polyfy: Env.t -> type_expr -> type_expr list -> type_expr * bool val instance_label: - bool -> label_description -> type_expr list * type_expr * type_expr + fixed:bool -> + label_description -> type_expr list * type_expr * type_expr (* Same, for a label *) val apply: ?use_current_level:bool -> @@ -255,8 +269,7 @@ val extract_concrete_typedecl: val unify: Env.t -> type_expr -> type_expr -> unit (* Unify the two types given. Raise [Unify] if not possible. *) val unify_gadt: - equations_level:int -> allow_recursive_equations:bool -> - Env.t ref -> type_expr -> type_expr -> Btype.TypePairs.t + Pattern_env.t -> type_expr -> type_expr -> Btype.TypePairs.t (* Unify the two types given and update the environment with the local constraints. Raise [Unify] if not possible. Returns the pairs of types that have been equated. *) @@ -312,9 +325,9 @@ exception Filter_method_failed of filter_method_failure type class_match_failure = CM_Virtual_class | CM_Parameter_arity_mismatch of int * int - | CM_Type_parameter_mismatch of Env.t * Errortrace.equality_error + | CM_Type_parameter_mismatch of int * Env.t * Errortrace.equality_error | CM_Class_type_mismatch of Env.t * class_type * class_type - | CM_Parameter_mismatch of Env.t * Errortrace.moregen_error + | CM_Parameter_mismatch of int * Env.t * Errortrace.moregen_error | CM_Val_type_mismatch of string * Env.t * Errortrace.comparison_error | CM_Meth_type_mismatch of string * Env.t * Errortrace.comparison_error | CM_Non_mutable_value of string diff --git a/src/ocaml/typing/datarepr.ml b/src/ocaml/typing/datarepr.ml index 004859ee34..9213fe8337 100644 --- a/src/ocaml/typing/datarepr.ml +++ b/src/ocaml/typing/datarepr.ml @@ -228,11 +228,11 @@ let constructors_of_type ~current_unit ty_path decl = match decl.type_kind with | Type_variant (cstrs,rep) -> constructor_descrs ~current_unit ty_path decl cstrs rep - | Type_record _ | Type_abstract | Type_open -> [] + | Type_record _ | Type_abstract _ | Type_open -> [] let labels_of_type ty_path decl = match decl.type_kind with | Type_record(labels, rep) -> label_descrs (newgenconstr ty_path decl.type_params) labels rep decl.type_private - | Type_variant _ | Type_abstract | Type_open -> [] + | Type_variant _ | Type_abstract _ | Type_open -> [] diff --git a/src/ocaml/typing/env.ml b/src/ocaml/typing/env.ml index 986b46d8d7..4beeb037d1 100644 --- a/src/ocaml/typing/env.ml +++ b/src/ocaml/typing/env.ml @@ -40,13 +40,6 @@ let value_declarations : unit usage_tbl ref = s_table Types.Uid.Tbl.create 16 let type_declarations : unit usage_tbl ref = s_table Types.Uid.Tbl.create 16 let module_declarations : unit usage_tbl ref = s_table Types.Uid.Tbl.create 16 -let uid_to_loc : Location.t Types.Uid.Tbl.t ref = - s_table Types.Uid.Tbl.create 16 - -let register_uid uid loc = Types.Uid.Tbl.add !uid_to_loc uid loc - -let get_uid_to_loc_tbl () = !uid_to_loc - type constructor_usage = Positive | Pattern | Exported_private | Exported type constructor_usages = { @@ -709,6 +702,11 @@ let error err = raise (Error err) let lookup_error loc env err = error (Lookup_error(loc, env, err)) +let same_type_declarations e1 e2 = + e1.types == e2.types && + e1.modules == e2.modules && + e1.local_constraints == e2.local_constraints + let same_constr = ref (fun _ _ _ -> assert false) let check_well_formed_module = ref (fun _ -> assert false) @@ -729,9 +727,12 @@ let check_shadowing env = function | `Label (Some (l1, l2)) when not (!same_constr env l1.lbl_res l2.lbl_res) -> Some "label" - | `Value (Some _) -> Some "value" + | `Value (Some (Val_unbound _, _)) -> None + | `Value (Some (_, _)) -> Some "value" | `Type (Some _) -> Some "type" - | `Module (Some _) | `Component (Some _) -> Some "module" + | `Module (Some (Mod_unbound _, _)) -> None + | `Module (Some _) | `Component (Some _) -> + Some "module" | `Module_type (Some _) -> Some "module type" | `Class (Some _) -> Some "class" | `Class_type (Some _) -> Some "class type" @@ -985,9 +986,9 @@ let imports () = Persistent_env.imports !persistent_env let import_crcs ~source crcs = Persistent_env.import_crcs !persistent_env ~source crcs -let read_pers_mod modname filename = +let read_pers_mod cmi = Persistent_env.read !persistent_env - read_sign_of_cmi short_paths_components modname filename + read_sign_of_cmi short_paths_components cmi let find_pers_mod name = Persistent_env.find !persistent_env @@ -1013,7 +1014,6 @@ let reset_declaration_caches () = Types.Uid.Tbl.clear !module_declarations; Types.Uid.Tbl.clear !used_constructors; Types.Uid.Tbl.clear !used_labels; - Types.Uid.Tbl.clear !uid_to_loc; () let reset_cache () = @@ -1080,7 +1080,7 @@ let find_ident_module id env = match find_same_module id env.modules with | Mod_local data -> data | Mod_unbound _ -> raise Not_found - | Mod_persistent -> find_pers_mod (Ident.name id) + | Mod_persistent -> find_pers_mod ~allow_hidden:true (Ident.name id) let rec find_module_components path env = match path with @@ -1188,7 +1188,7 @@ let rec find_type_data path env = | decl -> { tda_declaration = decl; - tda_descriptions = Type_abstract; + tda_descriptions = Type_abstract (Btype.type_origin decl); tda_shape = Shape.leaf decl.type_uid; } | exception Not_found -> begin @@ -1213,7 +1213,7 @@ and find_cstr path name env = match tda.tda_descriptions with | Type_variant (cstrs, _) -> List.find (fun cstr -> cstr.cstr_name = name) cstrs - | Type_record _ | Type_abstract | Type_open -> raise Not_found + | Type_record _ | Type_abstract _ | Type_open -> raise Not_found @@ -1320,6 +1320,10 @@ let find_shape env (ns : Shape.Sig_component_kind.t) id = match ns with | Type -> (IdTbl.find_same id env.types).tda_shape + | Constructor -> + Shape.leaf ((TycompTbl.find_same id env.constrs).cda_description.cstr_uid) + | Label -> + Shape.leaf ((TycompTbl.find_same id env.labels).lbl_uid) | Extension_constructor -> (TycompTbl.find_same id env.constrs).cda_shape | Value -> @@ -1440,7 +1444,7 @@ let find_type_expansion path env = let decl = find_type path env in match decl.type_manifest with | Some body when decl.type_private = Public - || decl.type_kind <> Type_abstract + || not (Btype.type_kind_is_abstract decl) || Btype.has_constr_row body -> (decl.type_params, body, decl.type_expansion_scope) (* The manifest type of Private abstract data types without @@ -1860,7 +1864,7 @@ let rec components_of_module_maker add_to_tbl descr.lbl_name descr c.comp_labels) lbls; Type_record (lbls, repr) - | Type_abstract -> Type_abstract + | Type_abstract r -> Type_abstract r | Type_open -> Type_open in let shape = Shape.proj cm_shape (Shape.Item.type_ id) in @@ -2003,6 +2007,7 @@ and check_value_name name loc = and store_value ?check id addr decl shape env = check_value_name (Ident.name id) decl.val_loc; + Builtin_attributes.mark_alerts_used decl.val_attributes; Option.iter (fun f -> check_usage decl.val_loc id decl.val_uid f !value_declarations) check; @@ -2041,6 +2046,8 @@ and store_constructor ~check type_decl type_id cstr_id cstr env = (constructor_usage_complaint ~rebind:false priv used)); end; end); + Builtin_attributes.mark_alerts_used cstr.cstr_attributes; + Builtin_attributes.mark_warn_on_literal_pattern_used cstr.cstr_attributes; let cda_shape = Shape.leaf cstr.cstr_uid in { env with constrs = @@ -2073,6 +2080,9 @@ and store_label ~check type_decl type_id lbl_id lbl env = loc (Warnings.Unused_field(name, complaint))) (label_usage_complaint priv mut used)) end); + Builtin_attributes.mark_alerts_used lbl.lbl_attributes; + if lbl.lbl_mut = Mutable then + Builtin_attributes.mark_deprecated_mutable_used lbl.lbl_attributes; { env with labels = TycompTbl.add lbl_id lbl env.labels; } @@ -2102,7 +2112,7 @@ and store_type ~check ~long_path ~predef id info shape env = (fun env (lbl_id, lbl) -> store_label ~check info id lbl_id lbl env) env labels - | Type_abstract -> Type_abstract, env + | Type_abstract r -> Type_abstract r, env | Type_open -> Type_open, env in let tda = @@ -2110,6 +2120,7 @@ and store_type ~check ~long_path ~predef id info shape env = tda_descriptions = descrs; tda_shape = shape } in + Builtin_attributes.mark_alerts_used info.type_attributes; { env with types = IdTbl.add id tda env.types; summary = Env_type(env.summary, id, info); @@ -2125,7 +2136,7 @@ and store_type_infos ~tda_shape id info env = let tda = { tda_declaration = info; - tda_descriptions = Type_abstract; + tda_descriptions = Type_abstract (Btype.type_origin info); tda_shape } in @@ -2145,6 +2156,8 @@ and store_extension ~check ~rebind id addr ext shape env = cda_address = Some addr; cda_shape = shape } in + Builtin_attributes.mark_alerts_used ext.ext_attributes; + Builtin_attributes.mark_warn_on_literal_pattern_used ext.ext_attributes; Builtin_attributes.warning_scope ext.ext_attributes (fun () -> if check && not loc.Location.loc_ghost && Warnings.is_active (Warnings.Unused_extension ("", false, Unused)) @@ -2178,6 +2191,7 @@ and store_module ?(update_summary=true) ~check let loc = md.mdl_loc in Option.iter (fun f -> check_usage loc id md.mdl_uid f !module_declarations) check; + Builtin_attributes.mark_alerts_used md.mdl_attributes; let alerts = Builtin_attributes.alerts_of_attrs md.mdl_attributes in let comps = components_of_module ~alerts ~uid:md.mdl_uid @@ -2199,6 +2213,7 @@ and store_module ?(update_summary=true) ~check short_paths_module id md comps env.short_paths_additions; } and store_modtype ?(update_summary=true) id info shape env = + Builtin_attributes.mark_alerts_used info.Subst.Lazy.mtdl_attributes; let mtda = { mtda_declaration = info; mtda_shape = shape } in let summary = if not update_summary then env.summary @@ -2210,6 +2225,7 @@ and store_modtype ?(update_summary=true) id info shape env = short_paths_module_type id info env.short_paths_additions; } and store_class id addr desc shape env = + Builtin_attributes.mark_alerts_used desc.cty_attributes; let clda = { clda_declaration = desc; clda_address = addr; @@ -2220,6 +2236,7 @@ and store_class id addr desc shape env = summary = Env_class(env.summary, id, desc) } and store_cltype id desc shape env = + Builtin_attributes.mark_alerts_used desc.clty_attributes; let cltda = { cltda_declaration = desc; cltda_shape = shape } in { env with cltypes = IdTbl.add id cltda env.cltypes; @@ -2340,7 +2357,7 @@ let add_module_lazy ~update_summary id presence mty env = in add_module_declaration_lazy ~update_summary id presence md env -let add_local_type path info env = +let add_local_constraint path info env = { env with local_constraints = Path.Map.add path info env.local_constraints } @@ -2451,8 +2468,6 @@ let enter_signature_and_shape ~scope ~parent_shape mod_shape sg env = enter_signature_and_shape ~scope ~parent_shape (Some mod_shape) sg env let add_value = add_value ?shape:None -let add_type = add_type ?shape:None -let add_extension = add_extension ?shape:None let add_class = add_class ?shape:None let add_cltype = add_cltype ?shape:None let add_modtype = add_modtype ?shape:None @@ -2646,29 +2661,19 @@ let open_signature else open_signature None root env (* Read a signature from a file *) -let read_signature modname filename = - let mda = read_pers_mod modname filename in +let read_signature u = + let mda = read_pers_mod u in let md = Subst.Lazy.force_module_decl mda.mda_declaration in match md.md_type with | Mty_signature sg -> sg | Mty_ident _ | Mty_functor _ | Mty_alias _ | Mty_for_hole -> assert false -let is_identchar_latin1 = function - | 'A'..'Z' | 'a'..'z' | '_' | '\192'..'\214' | '\216'..'\246' - | '\248'..'\255' | '\'' | '0'..'9' -> true - | _ -> false - let unit_name_of_filename fn = match Filename.extension fn with - | ".cmi" -> begin - let unit = - String.capitalize_ascii (Filename.remove_extension fn) - in - if Std.String.for_all is_identchar_latin1 unit then - Some unit - else - None - end + | ".cmi" -> + let modname = Unit_info.modname_from_source fn in + if Unit_info.is_unit_name modname then Some modname + else None | _ -> None let persistent_structures_of_dir dir = @@ -2678,27 +2683,28 @@ let persistent_structures_of_dir dir = |> String.Set.of_seq (* Save a signature to a file *) -let save_signature_with_transform cmi_transform ~alerts sg modname filename = +let save_signature_with_transform cmi_transform ~alerts sg cmi_info = Btype.cleanup_abbrev (); Subst.reset_for_saving (); let sg = Subst.signature Make_local (Subst.for_saving Subst.identity) sg in let cmi = - Persistent_env.make_cmi !persistent_env modname sg alerts + Persistent_env.make_cmi !persistent_env + (Unit_info.Artifact.modname cmi_info) sg alerts |> cmi_transform in - let pm = save_sign_of_cmi - { Persistent_env.Persistent_signature.cmi; filename } in - Persistent_env.save_cmi !persistent_env - { Persistent_env.Persistent_signature.filename; cmi } pm; + let filename = Unit_info.Artifact.filename cmi_info in + let pers_sig = + Persistent_env.Persistent_signature.{ cmi; filename; visibility = Visible } + in + let pm = save_sign_of_cmi pers_sig in + Persistent_env.save_cmi !persistent_env pers_sig pm; cmi -let save_signature ~alerts sg modname filename = - save_signature_with_transform (fun cmi -> cmi) - ~alerts sg modname filename +let save_signature ~alerts sg cmi = + save_signature_with_transform (fun cmi -> cmi) ~alerts sg cmi -let save_signature_with_imports ~alerts sg modname filename imports = +let save_signature_with_imports ~alerts sg cmi imports = let with_imports cmi = { cmi with cmi_crcs = imports } in - save_signature_with_transform with_imports - ~alerts sg modname filename + save_signature_with_transform with_imports ~alerts sg cmi (* Make the initial environment *) let initial = @@ -2707,11 +2713,11 @@ let initial = (add_extension ~check:false ~rebind:false) empty -let add_type_long_path ~check id info env = - add_type ~check ~predef:false ~long_path:true id info env +let add_type_long_path ~check ?shape id info env = + add_type ~check ?shape ~predef:false ~long_path:true id info env -let add_type ~check id info env = - add_type ~check ~predef:false ~long_path:false id info env +let add_type ~check ?shape id info env = + add_type ~check ?shape ~predef:false ~long_path:false id info env (* Tracking usage *) @@ -2916,10 +2922,10 @@ let lookup_ident_module (type a) (load : a load) ~errors ~use ~loc s env = | Mod_persistent -> begin match load with | Don't_load -> - check_pers_mod ~loc s; + check_pers_mod ~allow_hidden:false ~loc s; path, (() : a) | Load -> begin - match find_pers_mod s with + match find_pers_mod ~allow_hidden:false s with | mda -> use_module ~use ~loc path mda; path, (mda : a) @@ -3258,7 +3264,7 @@ let lookup_label ~errors ~use ~loc usage lid env = let lookup_all_labels_from_type ~use ~loc usage ty_path env = match find_type_descrs ty_path env with | exception Not_found -> [] - | Type_variant _ | Type_abstract | Type_open -> [] + | Type_variant _ | Type_abstract _ | Type_open -> [] | Type_record (lbls, _) -> List.map (fun lbl -> @@ -3280,7 +3286,7 @@ let lookup_constructor ~errors ~use ~loc usage lid env = let lookup_all_constructors_from_type ~use ~loc usage ty_path env = match find_type_descrs ty_path env with | exception Not_found -> [] - | Type_record _ | Type_abstract | Type_open -> [] + | Type_record _ | Type_abstract _ | Type_open -> [] | Type_variant (cstrs, _) -> List.map (fun cstr -> @@ -3424,7 +3430,7 @@ let bound_module name env = | exception Not_found -> if Current_unit_name.is name then false else begin - match find_pers_mod name with + match find_pers_mod ~allow_hidden:false name with | _ -> true | exception Not_found -> false end @@ -3697,9 +3703,12 @@ let extract_instance_variables env = | Val_ivar _ -> name :: acc | _ -> acc) None env [] +module Style = Misc.Style + let report_lookup_error _loc env ppf = function | Unbound_value(lid, hint) -> begin - fprintf ppf "Unbound value %a" !print_longident lid; + fprintf ppf "Unbound value %a" + (Style.as_inline_code !print_longident) lid; spellcheck ppf extract_values env lid; match hint with | No_hint -> () @@ -3708,90 +3717,101 @@ let report_lookup_error _loc env ppf = function Location.get_pos_info def_loc.Location.loc_start in fprintf ppf - "@.@[@{Hint@}: If this is a recursive definition,@ %s %i@]" - "you should add the 'rec' keyword on line" + "@.@[@{Hint@}: If this is a recursive definition,@ \ + you should add the %a keyword on line %i@]" + Style.inline_code "rec" line end | Unbound_type lid -> - fprintf ppf "Unbound type constructor %a" !print_longident lid; + fprintf ppf "Unbound type constructor %a" + (Style.as_inline_code !print_longident) lid; spellcheck ppf extract_types env lid; | Unbound_module lid -> begin - fprintf ppf "Unbound module %a" !print_longident lid; + fprintf ppf "Unbound module %a" + (Style.as_inline_code !print_longident) lid; match find_modtype_by_name lid env with | exception Not_found -> spellcheck ppf extract_modules env lid; | _ -> fprintf ppf "@.@[@{Hint@}: There is a module type named %a, %s@]" - !print_longident lid + (Style.as_inline_code !print_longident) lid "but module types are not modules" end | Unbound_constructor lid -> - fprintf ppf "Unbound constructor %a" !print_longident lid; + fprintf ppf "Unbound constructor %a" + (Style.as_inline_code !print_longident) lid; spellcheck ppf extract_constructors env lid; | Unbound_label lid -> - fprintf ppf "Unbound record field %a" !print_longident lid; + fprintf ppf "Unbound record field %a" + (Style.as_inline_code !print_longident) lid; spellcheck ppf extract_labels env lid; | Unbound_class lid -> begin - fprintf ppf "Unbound class %a" !print_longident lid; + fprintf ppf "Unbound class %a" + (Style.as_inline_code !print_longident) lid; match find_cltype_by_name lid env with | exception Not_found -> spellcheck ppf extract_classes env lid; | _ -> fprintf ppf "@.@[@{Hint@}: There is a class type named %a, %s@]" - !print_longident lid + (Style.as_inline_code !print_longident) lid "but classes are not class types" end | Unbound_modtype lid -> begin - fprintf ppf "Unbound module type %a" !print_longident lid; + fprintf ppf "Unbound module type %a" + (Style.as_inline_code !print_longident) lid; match find_module_by_name lid env with | exception Not_found -> spellcheck ppf extract_modtypes env lid; | _ -> fprintf ppf "@.@[@{Hint@}: There is a module named %a, %s@]" - !print_longident lid + (Style.as_inline_code !print_longident) lid "but modules are not module types" end | Unbound_cltype lid -> - fprintf ppf "Unbound class type %a" !print_longident lid; + fprintf ppf "Unbound class type %a" + (Style.as_inline_code !print_longident) lid; spellcheck ppf extract_cltypes env lid; | Unbound_instance_variable s -> - fprintf ppf "Unbound instance variable %s" s; + fprintf ppf "Unbound instance variable %a" Style.inline_code s; spellcheck_name ppf extract_instance_variables env s; | Not_an_instance_variable s -> - fprintf ppf "The value %s is not an instance variable" s; + fprintf ppf "The value %a is not an instance variable" + Style.inline_code s; spellcheck_name ppf extract_instance_variables env s; | Masked_instance_variable lid -> fprintf ppf "The instance variable %a@ \ cannot be accessed from the definition of another instance variable" - !print_longident lid + (Style.as_inline_code !print_longident) lid | Masked_self_variable lid -> fprintf ppf "The self variable %a@ \ cannot be accessed from the definition of an instance variable" - !print_longident lid + (Style.as_inline_code !print_longident) lid | Masked_ancestor_variable lid -> fprintf ppf "The ancestor variable %a@ \ cannot be accessed from the definition of an instance variable" - !print_longident lid + (Style.as_inline_code !print_longident) lid | Illegal_reference_to_recursive_module -> fprintf ppf "Illegal recursive module reference" | Structure_used_as_functor lid -> fprintf ppf "@[The module %a is a structure, it cannot be applied@]" - !print_longident lid + (Style.as_inline_code !print_longident) lid | Abstract_used_as_functor lid -> fprintf ppf "@[The module %a is abstract, it cannot be applied@]" - !print_longident lid + (Style.as_inline_code !print_longident) lid | Functor_used_as_structure lid -> fprintf ppf "@[The module %a is a functor, \ it cannot have any components@]" !print_longident lid | Abstract_used_as_structure lid -> fprintf ppf "@[The module %a is abstract, \ - it cannot have any components@]" !print_longident lid + it cannot have any components@]" + (Style.as_inline_code !print_longident) lid | Generative_used_as_applicative lid -> fprintf ppf "@[The functor %a is generative,@ it@ cannot@ be@ \ - applied@ in@ type@ expressions@]" !print_longident lid + applied@ in@ type@ expressions@]" + (Style.as_inline_code !print_longident) lid | Cannot_scrape_alias(lid, p) -> let cause = if Current_unit_name.is_path p then "is the current compilation unit" @@ -3799,22 +3819,26 @@ let report_lookup_error _loc env ppf = function in fprintf ppf "The module %a is an alias for module %a, which %s" - !print_longident lid !print_path p cause + (Style.as_inline_code !print_longident) lid + (Style.as_inline_code !print_path) p cause let report_error ppf = function | Missing_module(_, path1, path2) -> fprintf ppf "@[@["; if Path.same path1 path2 then - fprintf ppf "Internal path@ %s@ is dangling." (Path.name path1) + fprintf ppf "Internal path@ %a@ is dangling." + Style.inline_code (Path.name path1) else - fprintf ppf "Internal path@ %s@ expands to@ %s@ which is dangling." - (Path.name path1) (Path.name path2); - fprintf ppf "@]@ @[%s@ %s@ %s.@]@]" - "The compiled interface for module" (Ident.name (Path.head path2)) + fprintf ppf "Internal path@ %a@ expands to@ %a@ which is dangling." + Style.inline_code (Path.name path1) + Style.inline_code (Path.name path2); + fprintf ppf "@]@ @[%s@ %a@ %s.@]@]" + "The compiled interface for module" + Style.inline_code (Ident.name (Path.head path2)) "was not found" | Illegal_value_name(_loc, name) -> - fprintf ppf "'%s' is not a valid value identifier." - name + fprintf ppf "%a is not a valid value identifier." + Style.inline_code name | Lookup_error(loc, t, err) -> report_lookup_error loc t ppf err let () = @@ -3841,7 +3865,7 @@ let () = let check_state_consistency () = let missing modname = - match Load_path.find_uncap (modname ^ ".cmi") with + match Load_path.find_normalized (modname ^ ".cmi") with | _ -> false | exception Not_found -> true and found _modname filename ps_name _md = @@ -3876,7 +3900,7 @@ let short_paths_type_desc decl = if ty.level <> Btype.generic_level then Fresh else begin match decl.type_private, decl.type_kind with - | Private, Type_abstract -> Fresh + | Private, Type_abstract _ -> Fresh | _, _ -> begin let params = List.map get_desc decl.type_params in match ty with diff --git a/src/ocaml/typing/env.mli b/src/ocaml/typing/env.mli index f8c95daae6..0a052fed3b 100644 --- a/src/ocaml/typing/env.mli +++ b/src/ocaml/typing/env.mli @@ -18,10 +18,6 @@ open Types open Misc -val register_uid : Uid.t -> Location.t -> unit - -val get_uid_to_loc_tbl : unit -> Location.t Types.Uid.Tbl.t - type value_unbound_reason = | Val_unbound_instance_variable | Val_unbound_self @@ -60,6 +56,9 @@ val empty: t val initial: t val diff: t -> t -> Ident.t list +(* approximation to the preimage equivalence class of [find_type] *) +val same_type_declarations: t -> t -> bool + type type_descr_kind = (label_description, constructor_description) type_kind @@ -297,10 +296,13 @@ val make_copy_of_types: t -> (t -> t) val add_value: ?check:(string -> Warnings.t) -> Ident.t -> value_description -> t -> t -val add_type: check:bool -> Ident.t -> type_declaration -> t -> t -val add_type_long_path: check:bool -> Ident.t -> type_declaration -> t -> t +val add_type: + check:bool -> ?shape:Shape.t -> Ident.t -> type_declaration -> t -> t +val add_type_long_path: + check:bool -> ?shape:Shape.t -> Ident.t -> type_declaration -> t -> t val add_extension: - check:bool -> rebind:bool -> Ident.t -> extension_constructor -> t -> t + check:bool -> ?shape:Shape.t -> rebind:bool -> Ident.t -> + extension_constructor -> t -> t val add_module: ?arg:bool -> ?shape:Shape.t -> Ident.t -> module_presence -> module_type -> t -> t val add_module_lazy: update_summary:bool -> @@ -314,7 +316,7 @@ val add_modtype_lazy: update_summary:bool -> Ident.t -> Subst.Lazy.modtype_declaration -> t -> t val add_class: Ident.t -> class_declaration -> t -> t val add_cltype: Ident.t -> class_type_declaration -> t -> t -val add_local_type: Path.t -> type_declaration -> t -> t +val add_local_constraint: Path.t -> type_declaration -> t -> t (* Insertion of persistent signatures *) @@ -326,7 +328,7 @@ val add_local_type: Path.t -> type_declaration -> t -> t contents of the module is accessed. *) val add_persistent_structure : Ident.t -> t -> t -(* Returns the set of persistent structures found in the given + (* Returns the set of persistent structures found in the given directory. *) val persistent_structures_of_dir : Load_path.Dir.t -> Misc.String.Set.t @@ -399,14 +401,14 @@ val set_unit_name: string -> unit val get_unit_name: unit -> string (* Read, save a signature to/from a file *) -val read_signature: modname -> filepath -> signature +val read_signature: Unit_info.Artifact.t -> signature (* Arguments: module name, file name. Results: signature. *) val save_signature: - alerts:alerts -> signature -> modname -> filepath + alerts:alerts -> Types.signature -> Unit_info.Artifact.t -> Cmi_format.cmi_infos (* Arguments: signature, module name, file name. *) val save_signature_with_imports: - alerts:alerts -> signature -> modname -> filepath -> crcs + alerts:alerts -> signature -> Unit_info.Artifact.t -> crcs -> Cmi_format.cmi_infos (* Arguments: signature, module name, file name, imported units with their CRCs. *) diff --git a/src/ocaml/typing/envaux.ml b/src/ocaml/typing/envaux.ml index a0bbbc2684..90e0da92c4 100644 --- a/src/ocaml/typing/envaux.ml +++ b/src/ocaml/typing/envaux.ml @@ -77,7 +77,7 @@ let rec env_from_summary sum subst = | Env_constraints(s, map) -> Path.Map.fold (fun path info -> - Env.add_local_type (Subst.type_path subst path) + Env.add_local_constraint (Subst.type_path subst path) (Subst.type_declaration subst info)) map (env_from_summary s subst) | Env_copy_types s -> @@ -102,10 +102,12 @@ let env_of_only_summary env = (* Error report *) open Format +module Style = Misc.Style let report_error ppf = function | Module_not_found p -> - fprintf ppf "@[Cannot find module %a@].@." Printtyp.path p + fprintf ppf "@[Cannot find module %a@].@." + (Style.as_inline_code Printtyp.path) p let () = Location.register_error_of_exn diff --git a/src/ocaml/typing/includeclass.ml b/src/ocaml/typing/includeclass.ml index 3a2cd57694..39f00f9cf5 100644 --- a/src/ocaml/typing/includeclass.ml +++ b/src/ocaml/typing/includeclass.ml @@ -56,12 +56,13 @@ let include_err mode ppf = | CM_Parameter_arity_mismatch _ -> fprintf ppf "The classes do not have the same number of type parameters" - | CM_Type_parameter_mismatch (env, err) -> + | CM_Type_parameter_mismatch (n, env, err) -> Printtyp.report_equality_error ppf mode env err (function ppf -> - fprintf ppf "A type parameter has type") + fprintf ppf "The %d%s type parameter has type" + n (Misc.ordinal_suffix n)) (function ppf -> - fprintf ppf "but is expected to have type") + fprintf ppf "but is expected to have type") | CM_Class_type_mismatch (env, cty1, cty2) -> Printtyp.wrap_printing_env ~error:true env (fun () -> fprintf ppf @@ -69,10 +70,11 @@ let include_err mode ppf = Printtyp.class_type cty1 "is not matched by the class type" Printtyp.class_type cty2) - | CM_Parameter_mismatch (env, err) -> + | CM_Parameter_mismatch (n, env, err) -> Printtyp.report_moregen_error ppf mode env err (function ppf -> - fprintf ppf "A parameter has type") + fprintf ppf "The %d%s parameter has type" + n (Misc.ordinal_suffix n)) (function ppf -> fprintf ppf "but is expected to have type") | CM_Val_type_mismatch (lab, env, err) -> diff --git a/src/ocaml/typing/includecore.ml b/src/ocaml/typing/includecore.ml index a3cdd189c9..595c07e935 100644 --- a/src/ocaml/typing/includecore.ml +++ b/src/ocaml/typing/includecore.ml @@ -140,7 +140,7 @@ type type_kind = | Kind_open let of_kind = function - | Type_abstract -> Kind_abstract + | Type_abstract _ -> Kind_abstract | Type_record (_, _) -> Kind_record | Type_variant (_, _) -> Kind_variant | Type_open -> Kind_open @@ -202,6 +202,8 @@ type type_mismatch = | Unboxed_representation of position | Immediate of Type_immediacy.Violation.t +module Style = Misc.Style + let report_primitive_mismatch first second ppf err = let pr fmt = Format.fprintf ppf fmt in match (err : primitive_mismatch) with @@ -211,8 +213,9 @@ let report_primitive_mismatch first second ppf err = pr "The syntactic arities of these primitives were not the same.@ \ (They must have the same number of arrows present in the source.)" | No_alloc ord -> - pr "%s primitive is [@@@@noalloc] but %s is not" + pr "%s primitive is %a but %s is not" (String.capitalize_ascii (choose ord first second)) + Style.inline_code "[@@noalloc]" (choose_other ord first second) | Native_name -> pr "The native names of the primitives are not the same" @@ -264,30 +267,34 @@ let report_label_mismatch first second env ppf err = let pp_record_diff first second prefix decl env ppf (x : record_change) = match x with | Delete cd -> - Format.fprintf ppf "%aAn extra field, %s, is provided in %s %s." - prefix x (Ident.name cd.delete.ld_id) first decl + Format.fprintf ppf "%aAn extra field, %a, is provided in %s %s." + prefix x Style.inline_code (Ident.name cd.delete.ld_id) first decl | Insert cd -> - Format.fprintf ppf "%aA field, %s, is missing in %s %s." - prefix x (Ident.name cd.insert.ld_id) first decl + Format.fprintf ppf "%aA field, %a, is missing in %s %s." + prefix x Style.inline_code (Ident.name cd.insert.ld_id) first decl | Change Type {got=lbl1; expected=lbl2; reason} -> Format.fprintf ppf "@[%aFields do not match:@;<1 2>\ %a@ is not the same as:\ @;<1 2>%a@ %a@]" prefix x - Printtyp.label lbl1 - Printtyp.label lbl2 + (Style.as_inline_code Printtyp.label) lbl1 + (Style.as_inline_code Printtyp.label) lbl2 (report_label_mismatch first second env) reason | Change Name n -> - Format.fprintf ppf "%aFields have different names, %s and %s." - prefix x n.got n.expected + Format.fprintf ppf "%aFields have different names, %a and %a." + prefix x + Style.inline_code n.got + Style.inline_code n.expected | Swap sw -> - Format.fprintf ppf "%aFields %s and %s have been swapped." - prefix x sw.first sw.last + Format.fprintf ppf "%aFields %a and %a have been swapped." + prefix x + Style.inline_code sw.first + Style.inline_code sw.last | Move {name; got; expected } -> Format.fprintf ppf - "@[<2>%aField %s has been moved@ from@ position %d@ to %d.@]" - prefix x name expected got + "@[<2>%aField %a has been moved@ from@ position %d@ to %d.@]" + prefix x Style.inline_code name expected got let report_patch pr_diff first second decl env ppf patch = let nl ppf () = Format.fprintf ppf "@," in @@ -330,32 +337,36 @@ let report_constructor_mismatch first second decl env ppf err = let pp_variant_diff first second prefix decl env ppf (x : variant_change) = match x with | Delete cd -> - Format.fprintf ppf "%aAn extra constructor, %s, is provided in %s %s." - prefix x (Ident.name cd.delete.cd_id) first decl + Format.fprintf ppf "%aAn extra constructor, %a, is provided in %s %s." + prefix x Style.inline_code (Ident.name cd.delete.cd_id) first decl | Insert cd -> - Format.fprintf ppf "%aA constructor, %s, is missing in %s %s." - prefix x (Ident.name cd.insert.cd_id) first decl + Format.fprintf ppf "%aA constructor, %a, is missing in %s %s." + prefix x Style.inline_code (Ident.name cd.insert.cd_id) first decl | Change Type {got; expected; reason} -> Format.fprintf ppf "@[%aConstructors do not match:@;<1 2>\ %a@ is not the same as:\ @;<1 2>%a@ %a@]" prefix x - Printtyp.constructor got - Printtyp.constructor expected + (Style.as_inline_code Printtyp.constructor) got + (Style.as_inline_code Printtyp.constructor) expected (report_constructor_mismatch first second decl env) reason | Change Name n -> Format.fprintf ppf - "%aConstructors have different names, %s and %s." - prefix x n.got n.expected + "%aConstructors have different names, %a and %a." + prefix x + Style.inline_code n.got + Style.inline_code n.expected | Swap sw -> Format.fprintf ppf - "%aConstructors %s and %s have been swapped." - prefix x sw.first sw.last + "%aConstructors %a and %a have been swapped." + prefix x + Style.inline_code sw.first + Style.inline_code sw.last | Move {name; got; expected} -> Format.fprintf ppf - "@[<2>%aConstructor %s has been moved@ from@ position %d@ to %d.@]" - prefix x name expected got + "@[<2>%aConstructor %a has been moved@ from@ position %d@ to %d.@]" + prefix x Style.inline_code name expected got let report_extension_constructor_mismatch first second decl env ppf err = let pr fmt = Format.fprintf ppf fmt in @@ -363,25 +374,30 @@ let report_extension_constructor_mismatch first second decl env ppf err = | Constructor_privacy -> pr "Private extension constructor(s) would be revealed." | Constructor_mismatch (id, ext1, ext2, err) -> + let constructor = + Style.as_inline_code (Printtyp.extension_only_constructor id) + in pr "@[Constructors do not match:@;<1 2>%a@ is not the same as:\ @;<1 2>%a@ %a@]" - (Printtyp.extension_only_constructor id) ext1 - (Printtyp.extension_only_constructor id) ext2 + constructor ext1 + constructor ext2 (report_constructor_mismatch first second decl env) err + let report_private_variant_mismatch first second decl env ppf err = let pr fmt = Format.fprintf ppf fmt in + let pp_tag ppf x = Format.fprintf ppf "`%s" x in match (err : private_variant_mismatch) with | Only_outer_closed -> (* It's only dangerous in one direction, so we don't have a position *) pr "%s is private and closed, but %s is not closed" (String.capitalize_ascii second) first | Missing (ord, name) -> - pr "The constructor %s is only present in %s %s." - name (choose ord first second) decl + pr "The constructor %a is only present in %s %s." + Style.inline_code name (choose ord first second) decl | Presence s -> - pr "The tag `%s is present in the %s %s,@ but might not be in the %s" - s second decl first + pr "The tag %a is present in the %s %s,@ but might not be in the %s" + (Style.as_inline_code pp_tag) s second decl first | Incompatible_types_for s -> pr "Types for tag `%s are incompatible" s | Types err -> report_type_inequality env ppf err @@ -389,7 +405,8 @@ let report_private_variant_mismatch first second decl env ppf err = let report_private_object_mismatch env ppf err = let pr fmt = Format.fprintf ppf fmt in match (err : private_object_mismatch) with - | Missing s -> pr "The implementation is missing the method %s" s + | Missing s -> + pr "The implementation is missing the method %a" Style.inline_code s | Types err -> report_type_inequality env ppf err let report_kind_mismatch first second ppf (kind1, kind2) = @@ -715,7 +732,7 @@ let privacy_mismatch env decl1 decl2 = | Type_record _, Type_record _ -> Some Private_record_type | Type_variant _, Type_variant _ -> Some Private_variant_type | Type_open, Type_open -> Some Private_extensible_variant - | Type_abstract, Type_abstract + | Type_abstract _, Type_abstract _ when Option.is_some decl2.type_manifest -> begin match decl1.type_manifest with | Some ty1 -> begin @@ -852,7 +869,7 @@ let type_manifest env ty1 params1 ty2 params2 priv2 kind2 = | _ -> begin let is_private_abbrev_2 = match priv2, kind2 with - | Private, Type_abstract -> begin + | Private, Type_abstract _ -> begin (* Same checks as the [when] guards from above, inverted *) match get_desc ty2' with | Tvariant row -> @@ -911,7 +928,7 @@ let type_declarations ?(equality = false) ~loc env ~mark name in if err <> None then err else let err = match (decl1.type_kind, decl2.type_kind) with - (_, Type_abstract) -> None + (_, Type_abstract _) -> None | (Type_variant (cstrs1, rep1), Type_variant (cstrs2, rep2)) -> if mark then begin let mark usage cstrs = @@ -951,7 +968,7 @@ let type_declarations ?(equality = false) ~loc env ~mark name | (_, _) -> Some (Kind (of_kind decl1.type_kind, of_kind decl2.type_kind)) in if err <> None then err else - let abstr = decl2.type_kind = Type_abstract && decl2.type_manifest = None in + let abstr = Btype.type_kind_is_abstract decl2 && decl2.type_manifest = None in (* If attempt to assign a non-immediate type (e.g. string) to a type that * must be immediate, then we error *) let err = diff --git a/src/ocaml/typing/includemod.ml b/src/ocaml/typing/includemod.ml index d0fa23a211..b43602c51c 100644 --- a/src/ocaml/typing/includemod.ml +++ b/src/ocaml/typing/includemod.ml @@ -748,6 +748,8 @@ and signature_components ~in_eq ~loc old_env ~mark env subst type_declarations ~loc ~old_env env ~mark subst id1 tydec1 tydec2 in let item = mark_error_as_unrecoverable item in + (* Right now we don't filter hidden constructors / labels from the + shape. *) let shape_map = Shape.Map.add_type_proj shape_map id1 orig_shape in id1, item, shape_map, false | Sig_typext(id1, ext1, _, _), Sig_typext(_id2, ext2, _, _) -> @@ -925,10 +927,14 @@ let can_alias env path = type explanation = Env.t * Error.all exception Error of explanation +type application_name = + | Anonymous_functor + | Full_application_path of Longident.t + | Named_leftmost_functor of Longident.t exception Apply_error of { loc : Location.t ; env : Env.t ; - lid_app : Longident.t option ; + app_name : application_name ; mty_f : module_type ; args : (Error.functor_arg_descr * module_type) list ; } @@ -958,8 +964,8 @@ let check_functor_application_in_path in let mty_f = (Env.find_module f0_path env).md_type in let args = List.map prepare_arg args in - let lid_app = Some lid_whole_app in - raise (Apply_error {loc; env; lid_app; mty_f; args}) + let app_name = Full_application_path lid_whole_app in + raise (Apply_error {loc; env; app_name; mty_f; args}) else raise Not_found @@ -1136,7 +1142,7 @@ module Functor_app_diff = struct | Insert(Named(Some param, param_ty)) | Change(_, Named(Some param, param_ty), _ ) -> (* Change is Delete + Insert: we add the Inserted parameter to the - environnement to track equalities with external components that the + environment to track equalities with external components that the parameter might add. *) let mty = Subst.modtype Keep st.subst param_ty in let env = Env.add_module ~arg:true param Mp_present mty st.env in diff --git a/src/ocaml/typing/includemod.mli b/src/ocaml/typing/includemod.mli index d5b2ee9a13..a57d51b67c 100644 --- a/src/ocaml/typing/includemod.mli +++ b/src/ocaml/typing/includemod.mli @@ -215,10 +215,16 @@ type pos = | Body of functor_parameter exception Error of explanation + +type application_name = + | Anonymous_functor (** [(functor (_:sig end) -> struct end)(Int)] *) + | Full_application_path of Longident.t (** [F(G(X).P)(Y)] *) + | Named_leftmost_functor of Longident.t (** [F(struct end)...(...)] *) + exception Apply_error of { loc : Location.t ; env : Env.t ; - lid_app : Longident.t option ; + app_name : application_name ; mty_f : module_type ; args : (Error.functor_arg_descr * Types.module_type) list ; } diff --git a/src/ocaml/typing/includemod_errorprinter.ml b/src/ocaml/typing/includemod_errorprinter.ml index f72795cb6c..db974635ec 100644 --- a/src/ocaml/typing/includemod_errorprinter.ml +++ b/src/ocaml/typing/includemod_errorprinter.ml @@ -13,6 +13,7 @@ (* *) (**************************************************************************) +module Style = Misc.Style module Context = struct type pos = @@ -63,16 +64,20 @@ module Context = struct let alt_pp ppf cxt = if cxt = [] then () else if List.for_all (function Module _ -> true | _ -> false) cxt then - Format.fprintf ppf "in module %a," Printtyp.path (path_of_context cxt) + Format.fprintf ppf "in module %a," + (Style.as_inline_code Printtyp.path) (path_of_context cxt) else - Format.fprintf ppf "@[at position@ %a,@]" context cxt + Format.fprintf ppf "@[at position@ %a,@]" + (Style.as_inline_code context) cxt let pp ppf cxt = if cxt = [] then () else if List.for_all (function Module _ -> true | _ -> false) cxt then - Format.fprintf ppf "In module %a:@ " Printtyp.path (path_of_context cxt) + Format.fprintf ppf "In module %a:@ " + (Style.as_inline_code Printtyp.path) (path_of_context cxt) else - Format.fprintf ppf "@[At position@ %a@]@ " context cxt + Format.fprintf ppf "@[At position@ %a@]@ " + (Style.as_inline_code context) cxt end module Illegal_permutation = struct @@ -163,9 +168,9 @@ module Illegal_permutation = struct let item mt k = Includemod.item_ident_name (runtime_item k mt) let pp_item ppf (id,_,kind) = - Format.fprintf ppf "%s %S" + Format.fprintf ppf "%s %a" (Includemod.kind_of_field_desc kind) - (Ident.name id) + Style.inline_code (Ident.name id) let pp ctx_printer env ppf (mty,c) = try @@ -379,7 +384,7 @@ module Functor_suberror = struct let elt (x,param) = let sty = Diffing.(style @@ classify x) in Format.dprintf "%a%t%a" - Format.pp_open_stag (Misc.Color.Style sty) + Format.pp_open_stag (Style.Style sty) (printer param) Format.pp_close_stag () in @@ -663,8 +668,9 @@ let core env id x = let missing_field ppf item = let id, loc, kind = Includemod.item_ident_name item in - Format.fprintf ppf "The %s `%a' is required but not provided%a" - (Includemod.kind_of_field_desc kind) Printtyp.ident id + Format.fprintf ppf "The %s %a is required but not provided%a" + (Includemod.kind_of_field_desc kind) + (Style.as_inline_code Printtyp.ident) id (show_loc "Expected declaration") loc let module_types {Err.got=mty1; expected=mty2} = @@ -690,8 +696,8 @@ let module_type_declarations id {Err.got=d1 ; expected=d2} = let interface_mismatch ppf (diff: _ Err.diff) = Format.fprintf ppf - "The implementation %s@ does not match the interface %s:@ " - diff.got diff.expected + "The implementation %a@ does not match the interface %a:@ " + Style.inline_code diff.got Style.inline_code diff.expected let core_module_type_symptom (x:Err.core_module_type_symptom) = match x with @@ -701,7 +707,9 @@ let core_module_type_symptom (x:Err.core_module_type_symptom) = Some Printtyp.Conflicts.print_explanations else None | Unbound_module_path path -> - Some(Format.dprintf "Unbound module %a" Printtyp.path path) + Some(Format.dprintf "Unbound module %a" + (Style.as_inline_code Printtyp.path) path + ) (* Construct a linearized error message from the error tree *) @@ -741,7 +749,8 @@ and module_type_symptom ~eqmode ~expansion_token ~env ~before ~ctx = function module_type ~eqmode ~expansion_token ~env ~before ~ctx diff | Invalid_module_alias path -> let printer = - Format.dprintf "Module %a cannot be aliased" Printtyp.path path + Format.dprintf "Module %a cannot be aliased" + (Style.as_inline_code Printtyp.path) path in dwith_context ctx printer :: before @@ -897,11 +906,7 @@ let report_error err = let main = err_msgs err in Location.errorf ~loc:Location.(in_file !input_name) "%t" main -let report_apply_error ~loc env (lid_app, mty_f, args) = - let may_print_app ppf = match lid_app with - | None -> () - | Some lid -> Format.fprintf ppf "%a " Printtyp.longident lid - in +let report_apply_error ~loc env (app_name, mty_f, args) = let d = Functor_suberror.App.patch env ~f:mty_f ~args in match d with (* We specialize the one change and one argument case to remove the @@ -916,26 +921,57 @@ let report_apply_error ~loc env (lid_app, mty_f, args) = in Location.errorf ~loc "%t" (Functor_suberror.App.single_diff g e more) | _ -> - let actual = Functor_suberror.App.got d in - let expected = Functor_suberror.expected d in - let sub = - List.rev @@ - Functor_suberror.params functor_app_diff env ~expansion_token:true d + let not_functor = + List.for_all (function _, Diffing.Delete _ -> true | _ -> false) d in - Location.errorf ~loc ~sub - "@[The functor application %tis ill-typed.@ \ - These arguments:@;<1 2>\ - @[%t@]@ do not match these parameters:@;<1 2>@[functor@ %t@ -> ...@]@]" - may_print_app - actual expected + if not_functor then + match app_name with + | Includemod.Named_leftmost_functor lid -> + Location.errorf ~loc + "@[The module %a is not a functor, it cannot be applied.@]" + (Style.as_inline_code Printtyp.longident) lid + | Includemod.Anonymous_functor + | Includemod.Full_application_path _ + (* The "non-functor application in term" case is directly handled in + [Env] and it is the only case where we have a full application + path at hand. Thus this case of the or-pattern is currently + unreachable and we don't try to specialize the corresponding error + message. *) -> + Location.errorf ~loc + "@[This module is not a functor, it cannot be applied.@]" + else + let intro ppf = + match app_name with + | Includemod.Anonymous_functor -> + Format.fprintf ppf "This functor application is ill-typed." + | Includemod.Full_application_path lid -> + Format.fprintf ppf "The functor application %a is ill-typed." + (Style.as_inline_code Printtyp.longident) lid + | Includemod.Named_leftmost_functor lid -> + Format.fprintf ppf + "This application of the functor %a is ill-typed." + (Style.as_inline_code Printtyp.longident) lid + in + let actual = Functor_suberror.App.got d in + let expected = Functor_suberror.expected d in + let sub = + List.rev @@ + Functor_suberror.params functor_app_diff env ~expansion_token:true d + in + Location.errorf ~loc ~sub + "@[%t@ \ + These arguments:@;<1 2>@[%t@]@ \ + do not match these parameters:@;<1 2>@[functor@ %t@ -> ...@]@]" + intro + actual expected let register () = Location.register_error_of_exn (function | Includemod.Error err -> Some (report_error err) - | Includemod.Apply_error {loc; env; lid_app; mty_f; args} -> + | Includemod.Apply_error {loc; env; app_name; mty_f; args} -> Some (Printtyp.wrap_printing_env env ~error:true (fun () -> - report_apply_error ~loc env (lid_app, mty_f, args)) + report_apply_error ~loc env (app_name, mty_f, args)) ) | _ -> None ) diff --git a/src/ocaml/typing/lambda.ml b/src/ocaml/typing/lambda.ml new file mode 100644 index 0000000000..7e473d3574 --- /dev/null +++ b/src/ocaml/typing/lambda.ml @@ -0,0 +1,9 @@ +(* The lambda representation is of no interest for Merlin, but some types are + used by [value_rec_check]. *) + +type immediate_or_pointer = + | Immediate + | Pointer + +type array_kind = + Pgenarray | Paddrarray | Pintarray | Pfloatarray diff --git a/src/ocaml/typing/magic_numbers.ml b/src/ocaml/typing/magic_numbers.ml index f052ec9850..f5503f0000 100644 --- a/src/ocaml/typing/magic_numbers.ml +++ b/src/ocaml/typing/magic_numbers.ml @@ -24,16 +24,18 @@ module Cmi = struct | "Caml1999I031" -> Some "4.14" | "Caml1999I032" -> Some "5.0" | "Caml1999I033" -> Some "5.1" + | "Caml1999I034" -> Some "5.2" | _ -> None let () = assert (to_version_opt Config.cmi_magic_number <> None) open Format + module Style = Misc.Style let report_error ppf = function | Not_an_interface filename -> fprintf ppf "%a@ is not a compiled interface" - Location.print_filename filename + (Style.as_inline_code Location.print_filename) filename | Wrong_version_interface (filename, compiler_magic) -> let program_name = Lib_config.program_name () in begin match to_version_opt compiler_magic with @@ -65,7 +67,7 @@ module Cmi = struct end | Corrupted_interface filename -> fprintf ppf "Corrupted compiled interface@ %a" - Location.print_filename filename + (Style.as_inline_code Location.print_filename) filename let () = Location.register_error_of_exn diff --git a/src/ocaml/typing/msupport.ml b/src/ocaml/typing/msupport.ml index 02619389a2..211b9a81c9 100644 --- a/src/ocaml/typing/msupport.ml +++ b/src/ocaml/typing/msupport.ml @@ -82,7 +82,7 @@ let erroneous_type_register te = | None -> () let erroneous_type_check te = - let te = Types.Transient_expr.coerce te in + (* let te = Types.Transient_expr.coerce te in *) match !errors with | Some (_,h) -> Btype.TypeHash.mem h te | _ -> false diff --git a/src/ocaml/typing/mtype.ml b/src/ocaml/typing/mtype.ml index 312fec5fc8..b12dfde8c4 100644 --- a/src/ocaml/typing/mtype.ml +++ b/src/ocaml/typing/mtype.ml @@ -65,7 +65,7 @@ and strengthen_lazy_sig' ~aliasable env sg p = [] -> [] | (SigL_value(_, _, _) as sigelt) :: rem -> sigelt :: strengthen_lazy_sig' ~aliasable env rem p - | SigL_type(id, {type_kind=Type_abstract}, _, _) :: rem + | SigL_type(id, {type_kind=Type_abstract _}, _, _) :: rem when Btype.is_row_name (Ident.name id) -> strengthen_lazy_sig' ~aliasable env rem p | SigL_type(id, decl, rs, vis) :: rem -> @@ -77,7 +77,7 @@ and strengthen_lazy_sig' ~aliasable env sg p = let manif = Some(Btype.newgenty(Tconstr(Pdot(p, Ident.name id), decl.type_params, ref Mnil))) in - if decl.type_kind = Type_abstract then + if Btype.type_kind_is_abstract decl then { decl with type_private = Public; type_manifest = manif } else { decl with type_manifest = manif } @@ -392,7 +392,7 @@ and contains_type_sig env = List.iter (contains_type_item env) and contains_type_item env = function Sig_type (_,({type_manifest = None} | - {type_kind = Type_abstract; type_private = Private}),_, _) + {type_kind = Type_abstract _; type_private = Private}),_, _) | Sig_modtype _ | Sig_typext (_, {ext_args = Cstr_record _}, _, _) -> (* We consider that extension constructors with an inlined diff --git a/src/ocaml/typing/oprint.ml b/src/ocaml/typing/oprint.ml index 85124265e4..57897a19fd 100644 --- a/src/ocaml/typing/oprint.ml +++ b/src/ocaml/typing/oprint.ml @@ -24,6 +24,7 @@ let cautious f ppf arg = let print_lident ppf = function | "::" -> pp_print_string ppf "(::)" + | s when Lexer.is_keyword s -> fprintf ppf "\\#%s" s | s -> pp_print_string ppf s let rec print_ident ppf = @@ -62,6 +63,8 @@ let parenthesized_ident name = let value_ident ppf name = if parenthesized_ident name then fprintf ppf "( %s )" name + else if Lexer.is_keyword name then + fprintf ppf "\\#%s" name else pp_print_string ppf name @@ -153,16 +156,26 @@ let print_out_string ppf s = else fprintf ppf "%S" s +let print_constr ppf name = + match name with + | Oide_ident {printed_name = ("true" | "false") as c} -> + (* despite being keywords, these are constructor names + and should not be escaped *) + fprintf ppf "%s" c + | _ -> print_ident ppf name + let print_out_value ppf tree = let rec print_tree_1 ppf = function | Oval_constr (name, [param]) -> - fprintf ppf "@[<1>%a@ %a@]" print_ident name print_constr_param param + fprintf ppf "@[<1>%a@ %a@]" print_constr name print_constr_param param | Oval_constr (name, (_ :: _ as params)) -> - fprintf ppf "@[<1>%a@ (%a)@]" print_ident name + fprintf ppf "@[<1>%a@ (%a)@]" print_constr name (print_tree_list print_tree_1 ",") params | Oval_variant (name, Some param) -> - fprintf ppf "@[<2>`%s@ %a@]" name print_constr_param param + fprintf ppf "@[<2>`%a@ %a@]" print_lident name print_constr_param param + | Oval_lazy param -> + fprintf ppf "@[<2>lazy@ %a@]" print_constr_param param | tree -> print_simple_tree ppf tree and print_constr_param ppf = function | Oval_int i -> parenthesize_if_neg ppf "%i" i (i < 0) @@ -205,8 +218,8 @@ let print_out_value ppf tree = fprintf ppf "@[<1>[%a]@]" (print_tree_list print_tree_1 ";") tl | Oval_array tl -> fprintf ppf "@[<2>[|%a|]@]" (print_tree_list print_tree_1 ";") tl - | Oval_constr (name, []) -> print_ident ppf name - | Oval_variant (name, None) -> fprintf ppf "`%s" name + | Oval_constr (name, []) -> print_constr ppf name + | Oval_variant (name, None) -> fprintf ppf "`%a" print_lident name | Oval_stuff s -> pp_print_string ppf s | Oval_record fel -> fprintf ppf "@[<1>{%a}@]" (cautious (print_fields true)) fel @@ -261,6 +274,12 @@ let ty_var ~non_gen ppf s = let pr_vars = print_list pr_var (fun ppf -> fprintf ppf "@ ") +let print_arg_label ppf (lbl : Asttypes.arg_label) = + match lbl with + | Nolabel -> () + | Labelled s -> fprintf ppf "%a:" print_lident s + | Optional s -> fprintf ppf "?%a:" print_lident s + let rec print_out_type ppf = function | Otyp_alias {non_gen; aliased; alias } -> @@ -278,7 +297,7 @@ and print_out_type_1 ppf = function Otyp_arrow (lab, ty1, ty2) -> pp_open_box ppf 0; - if lab <> "" then (pp_print_string ppf lab; pp_print_char ppf ':'); + print_arg_label ppf lab; print_out_type_2 ppf ty1; pp_print_string ppf " ->"; pp_print_space ppf (); @@ -351,7 +370,7 @@ and print_fields open_row ppf = [] -> if open_row then fprintf ppf ".."; | [s, t] -> - fprintf ppf "%s : %a" s print_out_type t; + fprintf ppf "%a : %a" print_lident s print_out_type t; if open_row then fprintf ppf ";@ "; print_fields open_row ppf [] | (s, t) :: l -> @@ -362,7 +381,8 @@ and print_row_field ppf (l, opt_amp, tyl) = else if tyl <> [] then fprintf ppf " of@ " else fprintf ppf "" in - fprintf ppf "@[`%s%t%a@]" l pr_of (print_typlist print_out_type " &") + fprintf ppf "@[`%a%t%a@]" print_lident l pr_of + (print_typlist print_out_type " &") tyl and print_typlist print_elem sep ppf = function @@ -385,7 +405,8 @@ and print_typargs ppf = pp_close_box ppf (); pp_print_space ppf () and print_out_label ppf (name, mut, arg) = - fprintf ppf "@[<2>%s%s :@ %a@];" (if mut then "mutable " else "") name + fprintf ppf "@[<2>%s%a :@ %a@];" (if mut then "mutable " else "") + print_lident name print_out_type arg let out_label = ref print_out_label @@ -396,15 +417,15 @@ let out_type_args = ref print_typargs (* Class types *) -let print_type_parameter ppf s = - if s = "_" then fprintf ppf "_" else pr_var ppf s +let print_type_parameter ?(non_gen=false) ppf s = + if s = "_" then fprintf ppf "_" else ty_var ~non_gen ppf s -let type_parameter ppf (ty, (var, inj)) = +let type_parameter ppf {ot_non_gen=non_gen; ot_name=ty; ot_variance=var,inj} = let open Asttypes in fprintf ppf "%s%s%a" (match var with Covariant -> "+" | Contravariant -> "-" | NoVariance -> "") (match inj with Injective -> "!" | NoInjectivity -> "") - print_type_parameter ty + (print_type_parameter ~non_gen) ty let print_out_class_params ppf = function @@ -425,7 +446,7 @@ let rec print_out_class_type ppf = in fprintf ppf "@[%a%a@]" pr_tyl tyl print_ident id | Octy_arrow (lab, ty, cty) -> - fprintf ppf "@[%s%a ->@ %a@]" (if lab <> "" then lab ^ ":" else "") + fprintf ppf "@[%a%a ->@ %a@]" print_arg_label lab print_out_type_2 ty print_out_class_type cty | Octy_signature (self_ty, csil) -> let pr_param ppf = @@ -442,14 +463,14 @@ and print_out_class_sig_item ppf = fprintf ppf "@[<2>constraint %a =@ %a@]" !out_type ty1 !out_type ty2 | Ocsg_method (name, priv, virt, ty) -> - fprintf ppf "@[<2>method %s%s%s :@ %a@]" + fprintf ppf "@[<2>method %s%s%a :@ %a@]" (if priv then "private " else "") (if virt then "virtual " else "") - name !out_type ty + print_lident name !out_type ty | Ocsg_value (name, mut, vr, ty) -> - fprintf ppf "@[<2>val %s%s%s :@ %a@]" + fprintf ppf "@[<2>val %s%s%a :@ %a@]" (if mut then "mutable " else "") (if vr then "virtual " else "") - name !out_type ty + print_lident name !out_type ty let out_class_type = ref print_out_class_type @@ -590,15 +611,15 @@ and print_out_signature ppf = and print_out_sig_item ppf = function Osig_class (vir_flag, name, params, clt, rs) -> - fprintf ppf "@[<2>%s%s@ %a%s@ :@ %a@]" + fprintf ppf "@[<2>%s%s@ %a%a@ :@ %a@]" (if rs = Orec_next then "and" else "class") (if vir_flag then " virtual" else "") print_out_class_params params - name !out_class_type clt + print_lident name !out_class_type clt | Osig_class_type (vir_flag, name, params, clt, rs) -> - fprintf ppf "@[<2>%s%s@ %a%s@ =@ %a@]" + fprintf ppf "@[<2>%s%s@ %a%a@ =@ %a@]" (if rs = Orec_next then "and" else "class type") (if vir_flag then " virtual" else "") print_out_class_params params - name !out_class_type clt + print_lident name !out_class_type clt | Osig_typext (ext, Oext_exception) -> fprintf ppf "@[<2>exception %a@]" print_out_constr (constructor_of_extension_constructor ext) @@ -649,13 +670,15 @@ and print_out_type_decl kwd ppf td = in let type_defined ppf = match td.otype_params with - [] -> pp_print_string ppf td.otype_name - | [param] -> fprintf ppf "@[%a@ %s@]" type_parameter param td.otype_name + [] -> print_lident ppf td.otype_name + | [param] -> + fprintf ppf "@[%a@ %a@]" type_parameter param + print_lident td.otype_name | _ -> - fprintf ppf "@[(@[%a)@]@ %s@]" + fprintf ppf "@[(@[%a)@]@ %a@]" (print_list type_parameter (fun ppf -> fprintf ppf ",@ ")) td.otype_params - td.otype_name + print_lident td.otype_name in let print_manifest ppf = function @@ -744,17 +767,17 @@ and print_out_constr ppf constr = and print_out_extension_constructor ppf ext = let print_extended_type ppf = match ext.oext_type_params with - [] -> fprintf ppf "%s" ext.oext_type_name + [] -> fprintf ppf "%a" print_lident ext.oext_type_name | [ty_param] -> - fprintf ppf "@[%a@ %s@]" - print_type_parameter + fprintf ppf "@[%a@ %a@]" + (print_type_parameter ~non_gen:false) ty_param - ext.oext_type_name + print_lident ext.oext_type_name | _ -> - fprintf ppf "@[(@[%a)@]@ %s@]" + fprintf ppf "@[(@[%a)@]@ %a@]" (print_list print_type_parameter (fun ppf -> fprintf ppf ",@ ")) ext.oext_type_params - ext.oext_type_name + print_lident ext.oext_type_name in fprintf ppf "@[type %t +=%s@;<1 2>%a@]" print_extended_type @@ -765,16 +788,16 @@ and print_out_extension_constructor ppf ext = and print_out_type_extension ppf te = let print_extended_type ppf = match te.otyext_params with - [] -> fprintf ppf "%s" te.otyext_name + [] -> fprintf ppf "%a" print_lident te.otyext_name | [param] -> - fprintf ppf "@[%a@ %s@]" - print_type_parameter param - te.otyext_name + fprintf ppf "@[%a@ %a@]" + (print_type_parameter ~non_gen:false) param + print_lident te.otyext_name | _ -> - fprintf ppf "@[(@[%a)@]@ %s@]" + fprintf ppf "@[(@[%a)@]@ %a@]" (print_list print_type_parameter (fun ppf -> fprintf ppf ",@ ")) te.otyext_params - te.otyext_name + print_lident te.otyext_name in fprintf ppf "@[type %t +=%s@;<1 2>%a@]" print_extended_type diff --git a/src/ocaml/typing/outcometree.mli b/src/ocaml/typing/outcometree.mli index 8c32954a30..ed2b61599c 100644 --- a/src/ocaml/typing/outcometree.mli +++ b/src/ocaml/typing/outcometree.mli @@ -55,14 +55,19 @@ type out_value = | Oval_stuff of string | Oval_tuple of out_value list | Oval_variant of string * out_value option + | Oval_lazy of out_value -type out_type_param = string * (Asttypes.variance * Asttypes.injectivity) +type out_type_param = { + ot_non_gen: bool; + ot_name: string; + ot_variance: Asttypes.variance * Asttypes.injectivity +} type out_type = | Otyp_abstract | Otyp_open | Otyp_alias of {non_gen:bool; aliased:out_type; alias:string} - | Otyp_arrow of string * out_type * out_type + | Otyp_arrow of Asttypes.arg_label * out_type * out_type | Otyp_class of out_ident * out_type list | Otyp_constr of out_ident * out_type list | Otyp_manifest of out_type * out_type @@ -89,7 +94,7 @@ and out_variant = type out_class_type = | Octy_constr of out_ident * out_type list - | Octy_arrow of string * out_type * out_class_type + | Octy_arrow of Asttypes.arg_label * out_type * out_class_type | Octy_signature of out_type option * out_class_sig_item list and out_class_sig_item = | Ocsg_constraint of out_type * out_type diff --git a/src/ocaml/typing/parmatch.ml b/src/ocaml/typing/parmatch.ml index 2a388f1fc8..e10ec777b8 100644 --- a/src/ocaml/typing/parmatch.ml +++ b/src/ocaml/typing/parmatch.ml @@ -20,6 +20,23 @@ open Asttypes open Types open Typedtree +type 'pattern parmatch_case = + { pattern : 'pattern; + has_guard : bool; + needs_refute : bool; + } + +let typed_case { c_lhs; c_guard; c_rhs } = + { pattern = c_lhs; + has_guard = Option.is_some c_guard; + needs_refute = (c_rhs.exp_desc = Texp_unreachable); + } + +let untyped_case { Parsetree.pc_lhs; pc_guard; pc_rhs } = + { pattern = pc_lhs; + has_guard = Option.is_some pc_guard; + needs_refute = (pc_rhs.pexp_desc = Parsetree.Pexp_unreachable); + } (*************************************) (* Utilities for building patterns *) @@ -37,7 +54,8 @@ let omega_list = Patterns.omega_list let extra_pat = make_pat - (Tpat_var (Ident.create_local "+", mknoloc "+")) + (Tpat_var (Ident.create_local "+", mknoloc "+", + Uid.internal_not_actually_unique)) Ctype.none Env.empty @@ -283,8 +301,8 @@ module Compat | ((Tpat_any|Tpat_var _),_) | (_,(Tpat_any|Tpat_var _)) -> true (* Structural induction *) - | Tpat_alias (p,_,_),_ -> compat p q - | _,Tpat_alias (q,_,_) -> compat p q + | Tpat_alias (p,_,_,_),_ -> compat p q + | _,Tpat_alias (q,_,_,_) -> compat p q | Tpat_or (p1,p2,_),_ -> (compat p1 q || compat p2 q) | _,Tpat_or (q1,q2,_) -> @@ -530,12 +548,14 @@ let do_set_args ~erase_mutable q r = match q with end | {pat_desc = Tpat_array omegas} -> let args,rest = read_args omegas r in + let args = if erase_mutable then omegas else args in make_pat (Tpat_array args) q.pat_type q.pat_env:: rest | {pat_desc=Tpat_constant _|Tpat_any} -> q::r (* case any is used in matching.ml *) -| _ -> fatal_error "Parmatch.set_args" +| {pat_desc = (Tpat_var _ | Tpat_alias _ | Tpat_or _); _} -> + fatal_error "Parmatch.set_args" let set_args q r = do_set_args ~erase_mutable:false q r and set_args_erase_mutable q r = do_set_args ~erase_mutable:true q r @@ -846,7 +866,7 @@ let pats_of_type env ty = [make_pat (Tpat_tuple (omegas (List.length tl))) ty env] | _ -> [omega] end - | Typedecl (_, _, {type_kind = Type_abstract | Type_open}) + | Typedecl (_, _, {type_kind = Type_abstract _ | Type_open}) | May_have_typedecl -> [omega] let get_variant_constructors env ty = @@ -919,7 +939,8 @@ let build_other ext env = (* let c = {c with cstr_name = "*extension*"} in *) (* PR#7330 *) make_pat (Tpat_var (Ident.create_local "*extension*", - {txt="*extension*"; loc = d.pat_loc})) + {txt="*extension*"; loc = d.pat_loc}, + Uid.internal_not_actually_unique)) Ctype.none Env.empty | Construct _ -> begin match ext with @@ -1049,7 +1070,7 @@ let build_other ext env = let rec has_instance p = match p.pat_desc with | Tpat_variant (l,_,r) when is_absent l r -> false | Tpat_any | Tpat_var _ | Tpat_constant _ | Tpat_variant (_,None,_) -> true - | Tpat_alias (p,_,_) | Tpat_variant (_,Some p,_) -> has_instance p + | Tpat_alias (p,_,_,_) | Tpat_variant (_,Some p,_) -> has_instance p | Tpat_or (p1,p2,_) -> has_instance p1 || has_instance p2 | Tpat_construct (_,_,ps,_) | Tpat_tuple ps | Tpat_array ps -> has_instances ps @@ -1503,7 +1524,7 @@ let is_var_column rs = (* Standard or-args for left-to-right matching *) let rec or_args p = match p.pat_desc with | Tpat_or (p1,p2,_) -> p1,p2 -| Tpat_alias (p,_,_) -> or_args p +| Tpat_alias (p,_,_,_) -> or_args p | _ -> assert false (* Just remove current column *) @@ -1683,8 +1704,8 @@ and every_both pss qs q1 q2 = let rec le_pat p q = match (p.pat_desc, q.pat_desc) with | (Tpat_var _|Tpat_any),_ -> true - | Tpat_alias(p,_,_), _ -> le_pat p q - | _, Tpat_alias(q,_,_) -> le_pat p q + | Tpat_alias(p,_,_,_), _ -> le_pat p q + | _, Tpat_alias(q,_,_,_) -> le_pat p q | Tpat_constant(c1), Tpat_constant(c2) -> const_compare c1 c2 = 0 | Tpat_construct(_,c1,ps,_), Tpat_construct(_,c2,qs,_) -> Types.equal_tag c1.cstr_tag c2.cstr_tag && le_pats ps qs @@ -1715,6 +1736,10 @@ let get_mins le ps = if List.exists (fun p0 -> le p0 p) ps then select_rec r ps else select_rec (p::r) ps in + (* [select_rec] removes the elements that are followed by a smaller element. + An element that is preceded by a smaller element may stay in the list. + We thus do two passes on the list, which is returned reversed + the first time. *) select_rec [] (select_rec [] ps) (* @@ -1723,8 +1748,8 @@ let get_mins le ps = *) let rec lub p q = match p.pat_desc,q.pat_desc with -| Tpat_alias (p,_,_),_ -> lub p q -| _,Tpat_alias (q,_,_) -> lub p q +| Tpat_alias (p,_,_,_),_ -> lub p q +| _,Tpat_alias (q,_,_,_) -> lub p q | (Tpat_any|Tpat_var _),_ -> q | _,(Tpat_any|Tpat_var _) -> p | Tpat_or (p1,p2,_),_ -> orlub p1 p2 q @@ -1822,8 +1847,8 @@ let pressure_variants_in_computation_pattern tdefs patl = let rec initial_matrix = function [] -> [] - | {c_guard=Some _} :: rem -> initial_matrix rem - | {c_guard=None; c_lhs=p} :: rem -> [p] :: initial_matrix rem + | {has_guard=true} :: rem -> initial_matrix rem + | {has_guard=false; pattern=p} :: rem -> [p] :: initial_matrix rem (* Build up a working pattern matrix by keeping @@ -1831,9 +1856,9 @@ let rec initial_matrix = function *) let rec initial_only_guarded = function | [] -> [] - | { c_guard = None; _} :: rem -> + | { has_guard = false; _} :: rem -> initial_only_guarded rem - | { c_lhs = pat; _ } :: rem -> + | { pattern = pat; _ } :: rem -> [pat] :: initial_only_guarded rem @@ -1845,7 +1870,7 @@ let rec initial_only_guarded = function let contains_extension pat = exists_pattern (function - | {pat_desc=Tpat_var (_, {txt="*extension*"})} -> true + | {pat_desc=Tpat_var (_, {txt="*extension*"}, _)} -> true | _ -> false) pat @@ -1877,7 +1902,7 @@ let do_check_partial ~pred loc casel pss = match pss with try let buf = Buffer.create 16 in let fmt = Format.formatter_of_buffer buf in - Printpat.top_pretty fmt v; + Format.fprintf fmt "%a@?" Printpat.pretty_pat v; if do_match (initial_only_guarded casel) [v] then Buffer.add_string buf "\n(However, some guarded clause may match this value.)"; @@ -1930,7 +1955,8 @@ let rec collect_paths_from_pat r p = match p.pat_desc with List.fold_left (fun r (_, _, p) -> collect_paths_from_pat r p) r lps -| Tpat_variant (_, Some p, _) | Tpat_alias (p,_,_) -> collect_paths_from_pat r p +| Tpat_variant (_, Some p, _) | Tpat_alias (p,_,_,_) -> + collect_paths_from_pat r p | Tpat_or (p1,p2,_) -> collect_paths_from_pat (collect_paths_from_pat r p1) p2 | Tpat_lazy p @@ -1948,7 +1974,7 @@ let rec collect_paths_from_pat r p = match p.pat_desc with let do_check_fragile loc casel pss = let exts = List.fold_left - (fun r c -> collect_paths_from_pat r c.c_lhs) + (fun r c -> collect_paths_from_pat r c.pattern) [] casel in match exts with | [] -> () @@ -1972,10 +1998,10 @@ let do_check_fragile loc casel pss = let check_unused pred casel = if Warnings.is_active Warnings.Redundant_case - || List.exists (fun c -> c.c_rhs.exp_desc = Texp_unreachable) casel then + || List.exists (fun vc -> vc.needs_refute) casel then let rec do_rec pref = function | [] -> () - | {c_lhs=q; c_guard; c_rhs} :: rem -> + | {pattern=q; has_guard; needs_refute=refute} :: rem -> let qs = [q] in begin try let pss = @@ -1986,7 +2012,6 @@ let check_unused pred casel = |> get_mins le_pats in (* First look for redundant or partially redundant patterns *) let r = every_satisfiables (make_rows pss) (make_row qs) in - let refute = (c_rhs.exp_desc = Texp_unreachable) in (* Do not warn for unused [pat -> .] *) if r = Unused && refute then () else let r = @@ -2032,7 +2057,7 @@ let check_unused pred casel = with Empty | Not_found -> assert false end ; - if c_guard <> None then + if has_guard then do_rec pref rem else do_rec ([q]::pref) rem in @@ -2063,7 +2088,7 @@ let inactive ~partial pat = end | Tpat_tuple ps | Tpat_construct (_, _, ps, _) -> List.for_all (fun p -> loop p) ps - | Tpat_alias (p,_,_) | Tpat_variant (_, Some p, _) -> + | Tpat_alias (p,_,_,_) | Tpat_variant (_, Some p, _) -> loop p | Tpat_record (ldps,_) -> List.for_all @@ -2182,9 +2207,9 @@ type amb_row = { row : pattern list ; varsets : Ident.Set.t list; } let simplify_head_amb_pat head_bound_variables varsets ~add_column p ps k = let rec simpl head_bound_variables varsets p ps k = match (Patterns.General.view p).pat_desc with - | `Alias (p,x,_) -> + | `Alias (p,x,_,_) -> simpl (Ident.Set.add x head_bound_variables) varsets p ps k - | `Var (x, _) -> + | `Var (x,_,_) -> simpl (Ident.Set.add x head_bound_variables) varsets Patterns.omega ps k | `Or (p1,p2,_) -> simpl head_bound_variables varsets p1 ps @@ -2335,7 +2360,7 @@ let check_ambiguous_bindings = if is_active warn0 then let check_case ns case = match case with | { c_lhs = p; c_guard=None ; _} -> [p]::ns - | { c_lhs=p; c_guard=Some g; _} -> + | { c_lhs = p; c_guard=Some g; _} -> let all = Ident.Set.inter (pattern_vars p) (all_rhs_idents g) in if not (Ident.Set.is_empty all) then begin diff --git a/src/ocaml/typing/parmatch.mli b/src/ocaml/typing/parmatch.mli index 0fe0d50810..246ca209ea 100644 --- a/src/ocaml/typing/parmatch.mli +++ b/src/ocaml/typing/parmatch.mli @@ -19,6 +19,24 @@ open Asttypes open Typedtree open Types +(** Most checks in this file need not access all information about a case, + and just need a few pieces of information. [parmatch_case] is those + few pieces of information. +*) +type 'pattern parmatch_case = + { pattern : 'pattern; + has_guard : bool; + needs_refute : bool; + (** true if the program text claims the case is unreachable, a la + [function _ -> .] + *) + } + +type 'category typed_case := 'category general_pattern parmatch_case + +val typed_case : 'category case -> 'category typed_case +val untyped_case : Parsetree.case -> Parsetree.pattern parmatch_case + val const_compare : constant -> constant -> int (** [const_compare c1 c2] compares the actual values represented by [c1] and [c2], while simply using [Stdlib.compare] would compare the @@ -97,9 +115,11 @@ val pressure_variants_in_computation_pattern: [refute] indicates that [check_unused] was called on a refutation clause. *) val check_partial: - (pattern -> pattern option) -> Location.t -> value case list -> partial + (pattern -> pattern option) -> Location.t -> value typed_case list + -> partial + val check_unused: - (bool -> pattern -> pattern option) -> value case list -> unit + (bool -> pattern -> pattern option) -> value typed_case list -> unit (* Irrefutability tests *) val irrefutable : pattern -> bool @@ -110,7 +130,7 @@ val irrefutable : pattern -> bool active. *) val inactive : partial:partial -> pattern -> bool -(* Ambiguous bindings *) +(* Ambiguous bindings. *) val check_ambiguous_bindings : value case list -> unit (* The tag used for open polymorphic variant types with an abstract row *) diff --git a/src/ocaml/typing/path.ml b/src/ocaml/typing/path.ml index 69b8f34a01..4b44b0b2f0 100644 --- a/src/ocaml/typing/path.ml +++ b/src/ocaml/typing/path.ml @@ -90,9 +90,13 @@ let rec scope = function let kfalse _ = false +let maybe_escape s = + if Lexer.is_keyword s then "\\#" ^ s else s + let rec name ?(paren=kfalse) = function - Pident id -> Ident.name id + Pident id -> maybe_escape (Ident.name id) | Pdot(p, s) | Pextra_ty (p, Pcstr_ty s) -> + let s = maybe_escape s in name ~paren p ^ if paren s then ".( " ^ s ^ " )" else "." ^ s | Papply(p1, p2) -> name ~paren p1 ^ "(" ^ name ~paren p2 ^ ")" | Pextra_ty (p, Pext_ty) -> name ~paren p diff --git a/src/ocaml/typing/patterns.ml b/src/ocaml/typing/patterns.ml index 55f9d4ff43..456f8dff33 100644 --- a/src/ocaml/typing/patterns.ml +++ b/src/ocaml/typing/patterns.ml @@ -79,18 +79,18 @@ end module General = struct type view = [ | Half_simple.view - | `Var of Ident.t * string loc - | `Alias of pattern * Ident.t * string loc + | `Var of Ident.t * string loc * Uid.t + | `Alias of pattern * Ident.t * string loc * Uid.t ] type pattern = view pattern_data let view_desc = function | Tpat_any -> `Any - | Tpat_var (id, str) -> - `Var (id, str) - | Tpat_alias (p, id, str) -> - `Alias (p, id, str) + | Tpat_var (id, str, uid) -> + `Var (id, str, uid) + | Tpat_alias (p, id, str, uid) -> + `Alias (p, id, str, uid) | Tpat_constant cst -> `Constant cst | Tpat_tuple ps -> @@ -110,8 +110,8 @@ module General = struct let erase_desc = function | `Any -> Tpat_any - | `Var (id, str) -> Tpat_var (id, str) - | `Alias (p, id, str) -> Tpat_alias (p, id, str) + | `Var (id, str, uid) -> Tpat_var (id, str, uid) + | `Alias (p, id, str, uid) -> Tpat_alias (p, id, str, uid) | `Constant cst -> Tpat_constant cst | `Tuple ps -> Tpat_tuple ps | `Construct (cstr, cst_descr, args) -> @@ -129,7 +129,7 @@ module General = struct let rec strip_vars (p : pattern) : Half_simple.pattern = match p.pat_desc with - | `Alias (p, _, _) -> strip_vars (view p) + | `Alias (p, _, _, _) -> strip_vars (view p) | `Var _ -> { p with pat_desc = `Any } | #Half_simple.view as view -> { p with pat_desc = view } end diff --git a/src/ocaml/typing/patterns.mli b/src/ocaml/typing/patterns.mli index 66dd2d05a4..2ad645b0d0 100644 --- a/src/ocaml/typing/patterns.mli +++ b/src/ocaml/typing/patterns.mli @@ -65,8 +65,8 @@ end module General : sig type view = [ | Half_simple.view - | `Var of Ident.t * string loc - | `Alias of pattern * Ident.t * string loc + | `Var of Ident.t * string loc * Uid.t + | `Alias of pattern * Ident.t * string loc * Uid.t ] type pattern = view pattern_data diff --git a/src/ocaml/typing/persistent_env.ml b/src/ocaml/typing/persistent_env.ml index 15bb94165c..a75b4f3e11 100644 --- a/src/ocaml/typing/persistent_env.ml +++ b/src/ocaml/typing/persistent_env.ml @@ -34,14 +34,19 @@ let error err = raise (Error err) module Persistent_signature = struct type t = { filename : string; - cmi : Cmi_format.cmi_infos } - - let load = ref (fun ~unit_name -> - match Load_path.find_uncap (unit_name ^ ".cmi") with - | filename -> - let cmi = Cmi_cache.read filename in - Some { filename; cmi } - | exception Not_found -> None) + cmi : Cmi_format.cmi_infos; + visibility : Load_path.visibility } + + let load = ref (fun ~allow_hidden ~unit_name -> + match Load_path.find_normalized_with_visibility (unit_name ^ ".cmi") with + | filename, visibility when allow_hidden -> + let cmi = Cmi_cache.read filename in + Some { filename; cmi; visibility} + | filename, Visible -> + let cmi = Cmi_cache.read filename in + Some { filename; cmi; visibility = Visible} + | _, Hidden + | exception Not_found -> None) end type can_load_cmis = @@ -53,6 +58,7 @@ type pers_struct = { ps_crcs: (string * Digest.t option) list; ps_filename: string; ps_flags: pers_flags list; + ps_visibility: Load_path.visibility; } module String = Misc.String @@ -204,7 +210,7 @@ let save_pers_struct penv crc ps pm = add_import penv modname let acknowledge_pers_struct penv short_path_comps check modname pers_sig pm = - let { Persistent_signature.filename; cmi } = pers_sig in + let { Persistent_signature.filename; cmi; visibility } = pers_sig in let name = cmi.cmi_name in let crcs = cmi.cmi_crcs in let flags = cmi.cmi_flags in @@ -212,6 +218,7 @@ let acknowledge_pers_struct penv short_path_comps check modname pers_sig pm = ps_crcs = crcs; ps_filename = filename; ps_flags = flags; + ps_visibility = visibility; } in if ps.ps_name <> modname then error (Illegal_renaming(modname, ps.ps_name, filename)); @@ -229,29 +236,33 @@ let acknowledge_pers_struct penv short_path_comps check modname pers_sig pm = register_pers_for_short_paths penv ps (short_path_comps ps.ps_name pm); ps -let read_pers_struct penv val_of_pers_sig short_path_comps check modname filename = +let read_pers_struct penv val_of_pers_sig short_path_comps check cmi = + let modname = Unit_info.Artifact.modname cmi in + let filename = Unit_info.Artifact.filename cmi in add_import penv modname; let cmi = Cmi_cache.read filename in - let pers_sig = { Persistent_signature.filename; cmi } in + let pers_sig = { Persistent_signature.filename; cmi; visibility = Visible } in let pm = val_of_pers_sig pers_sig in let ps = acknowledge_pers_struct penv short_path_comps check modname pers_sig pm in (ps, pm) -let find_pers_struct penv val_of_pers_sig short_path_comps check name = +let find_pers_struct ~allow_hidden penv val_of_pers_sig short_path_comps check name = let {persistent_structures; _} = penv in if name = "*predef*" then raise Not_found; match Hashtbl.find persistent_structures name with - | Found (ps, pm) -> (ps, pm) + | Found (ps, pm) when allow_hidden || ps.ps_visibility = Load_path.Visible -> + (ps, pm) + | Found _ -> raise Not_found | Missing -> raise Not_found | exception Not_found -> match can_load_cmis penv with | Cannot_load_cmis _ -> raise Not_found | Can_load_cmis -> let psig = - match !Persistent_signature.load ~unit_name:name with + match !Persistent_signature.load ~allow_hidden ~unit_name:name with | Some psig -> psig | None -> - Hashtbl.add persistent_structures name Missing; + if allow_hidden then Hashtbl.add persistent_structures name Missing; raise Not_found in add_import penv name; @@ -259,10 +270,11 @@ let find_pers_struct penv val_of_pers_sig short_path_comps check name = let ps = acknowledge_pers_struct penv short_path_comps check name psig pm in (ps, pm) +module Style = Misc.Style (* Emits a warning if there is no valid cmi for name *) -let check_pers_struct penv f1 f2 ~loc name = +let check_pers_struct ~allow_hidden penv f1 f2 ~loc name = try - ignore (find_pers_struct penv f1 f2 false name) + ignore (find_pers_struct ~allow_hidden penv f1 f2 false name) with | Not_found -> let warn = Warnings.No_cmi_file(name, None) in @@ -277,24 +289,26 @@ let check_pers_struct penv f1 f2 ~loc name = | Illegal_renaming(name, ps_name, filename) -> Format.asprintf " %a@ contains the compiled interface for @ \ - %s when %s was expected" - Location.print_filename filename ps_name name + %a when %a was expected" + (Style.as_inline_code Location.print_filename) filename + Style.inline_code ps_name + Style.inline_code name | Inconsistent_import _ -> assert false | Need_recursive_types name -> - Format.sprintf - "%s uses recursive types" - name + Format.asprintf + "%a uses recursive types" + Style.inline_code name in let warn = Warnings.No_cmi_file(name, Some msg) in Location.prerr_warning loc warn -let read penv f1 f2 modname filename = - snd (read_pers_struct penv f1 f2 true modname filename) +let read penv f1 f2 a = + snd (read_pers_struct penv f1 f2 true a) -let find penv f1 f2 name = - snd (find_pers_struct penv f1 f2 true name) +let find ~allow_hidden penv f1 f2 name = + snd (find_pers_struct ~allow_hidden penv f1 f2 true name) -let check penv f1 f2 ~loc name = +let check ~allow_hidden penv f1 f2 ~loc name = let {persistent_structures; _} = penv in if not (Hashtbl.mem persistent_structures name) then begin (* PR#6843: record the weak dependency ([add_import]) regardless of @@ -303,11 +317,11 @@ let check penv f1 f2 ~loc name = add_import penv name; if (Warnings.is_active (Warnings.No_cmi_file("", None))) then !add_delayed_check_forward - (fun () -> check_pers_struct penv f1 f2 ~loc name) + (fun () -> check_pers_struct ~allow_hidden penv f1 f2 ~loc name) end let crc_of_unit penv f1 f2 name = - let (ps, _pm) = find_pers_struct penv f1 f2 true name in + let (ps, _pm) = find_pers_struct ~allow_hidden:true penv f1 f2 true name in let crco = try List.assoc name ps.ps_crcs @@ -347,7 +361,7 @@ let make_cmi penv modname sign alerts = } let save_cmi penv psig pm = - let { Persistent_signature.filename; cmi } = psig in + let { Persistent_signature.filename; cmi; visibility } = psig in Misc.try_finally (fun () -> let { cmi_name = modname; @@ -366,6 +380,7 @@ let save_cmi penv psig pm = ps_crcs = (cmi.cmi_name, Some crc) :: imports; ps_filename = filename; ps_flags = flags; + ps_visibility = visibility } in save_pers_struct penv crc ps pm ) @@ -376,16 +391,22 @@ let report_error ppf = function | Illegal_renaming(modname, ps_name, filename) -> fprintf ppf "Wrong file naming: %a@ contains the compiled interface for@ \ - %s when %s was expected" - Location.print_filename filename ps_name modname + %a when %a was expected" + (Style.as_inline_code Location.print_filename) filename + Style.inline_code ps_name + Style.inline_code modname | Inconsistent_import(name, source1, source2) -> fprintf ppf "@[The files %a@ and %a@ \ - make inconsistent assumptions@ over interface %s@]" - Location.print_filename source1 Location.print_filename source2 name + make inconsistent assumptions@ over interface %a@]" + (Style.as_inline_code Location.print_filename) source1 + (Style.as_inline_code Location.print_filename) source2 + Style.inline_code name | Need_recursive_types(import) -> fprintf ppf - "@[Invalid import of %s, which uses recursive types.@ %s@]" - import "The compilation flag -rectypes is required" + "@[Invalid import of %a, which uses recursive types.@ \ + The compilation flag %a is required@]" + Style.inline_code import + Style.inline_code "-rectypes" let () = Location.register_error_of_exn diff --git a/src/ocaml/typing/persistent_env.mli b/src/ocaml/typing/persistent_env.mli index afcea8ebc6..1acb5b3d65 100644 --- a/src/ocaml/typing/persistent_env.mli +++ b/src/ocaml/typing/persistent_env.mli @@ -32,12 +32,14 @@ val report_error: Format.formatter -> error -> unit module Persistent_signature : sig type t = { filename : string; (** Name of the file containing the signature. *) - cmi : Cmi_format.cmi_infos } + cmi : Cmi_format.cmi_infos; + visibility : Load_path.visibility + } (** Function used to load a persistent signature. The default is to look for the .cmi file in the load path. This function can be overridden to load it from memory, for instance to build a self-contained toplevel. *) - val load : (unit_name:string -> t option) ref + val load : (allow_hidden:bool -> unit_name:string -> t option) ref end type can_load_cmis = @@ -57,14 +59,14 @@ val fold : 'a t -> (modname -> 'a -> 'b -> 'b) -> 'b -> 'b val read : 'a t -> (Persistent_signature.t -> 'a) -> (string -> 'a -> Short_paths.Desc.Module.components Lazy.t) - -> modname -> filepath -> 'a -val find : 'a t -> (Persistent_signature.t -> 'a) + -> Unit_info.Artifact.t -> 'a +val find : allow_hidden:bool -> 'a t -> (Persistent_signature.t -> 'a) -> (string -> 'a -> Short_paths.Desc.Module.components Lazy.t) -> modname -> 'a val find_in_cache : 'a t -> modname -> 'a option -val check : 'a t -> (Persistent_signature.t -> 'a) +val check : allow_hidden:bool -> 'a t -> (Persistent_signature.t -> 'a) -> (string -> 'a -> Short_paths.Desc.Module.components Lazy.t) -> loc:Location.t -> modname -> unit diff --git a/src/ocaml/typing/predef.ml b/src/ocaml/typing/predef.ml index 185825c330..7344be15fc 100644 --- a/src/ocaml/typing/predef.ml +++ b/src/ocaml/typing/predef.ml @@ -134,8 +134,8 @@ and ident_cons = ident_create "::" and ident_none = ident_create "None" and ident_some = ident_create "Some" -let mk_add_type add_type type_ident - ?manifest ?(immediate=Type_immediacy.Unknown) ?(kind=Type_abstract) env = +let mk_add_type add_type type_ident ?manifest + ?(immediate=Type_immediacy.Unknown) ?(kind=Type_abstract Definition) env = let decl = {type_params = []; type_arity = 0; @@ -158,7 +158,7 @@ let mk_add_type add_type type_ident let build_initial_env add_type add_extension empty_env = let add_type = mk_add_type add_type and add_type1 type_ident - ~variance ~separability ?(kind=fun _ -> Type_abstract) env = + ~variance ~separability ?(kind=fun _ -> Type_abstract Definition) env = let param = newgenvar () in let decl = {type_params = [param]; diff --git a/src/ocaml/typing/primitive.ml b/src/ocaml/typing/primitive.ml index bf4fe83248..f8e964cce1 100644 --- a/src/ocaml/typing/primitive.ml +++ b/src/ocaml/typing/primitive.ml @@ -24,7 +24,7 @@ type native_repr = | Same_as_ocaml_repr | Unboxed_float | Unboxed_integer of boxed_integer - | Untagged_int + | Untagged_immediate type description = { prim_name: string; (* Name of primitive or C function *) @@ -45,16 +45,16 @@ let is_ocaml_repr = function | Same_as_ocaml_repr -> true | Unboxed_float | Unboxed_integer _ - | Untagged_int -> false + | Untagged_immediate -> false let is_unboxed = function | Same_as_ocaml_repr - | Untagged_int -> false + | Untagged_immediate -> false | Unboxed_float | Unboxed_integer _ -> true let is_untagged = function - | Untagged_int -> true + | Untagged_immediate -> true | Same_as_ocaml_repr | Unboxed_float | Unboxed_integer _ -> false @@ -95,8 +95,7 @@ let parse_declaration valdecl ~native_repr_args ~native_repr_res = fatal_error "Primitive.parse_declaration" in let noalloc_attribute = - Attr_helper.has_no_payload_attribute ["noalloc"; "ocaml.noalloc"] - valdecl.pval_attributes + Attr_helper.has_no_payload_attribute "noalloc" valdecl.pval_attributes in if old_style_float && not (List.for_all is_ocaml_repr native_repr_args && @@ -181,7 +180,7 @@ let print p osig_val_decl = | Same_as_ocaml_repr -> None | Unboxed_float | Unboxed_integer _ -> if all_unboxed then None else Some oattr_unboxed - | Untagged_int -> if all_untagged then None else Some oattr_untagged + | Untagged_immediate -> if all_untagged then None else Some oattr_untagged in let type_attrs = List.map attr_of_native_repr p.prim_native_repr_args @ @@ -213,33 +212,40 @@ let equal_native_repr nr1 nr2 = match nr1, nr2 with | Same_as_ocaml_repr, Same_as_ocaml_repr -> true | Same_as_ocaml_repr, - (Unboxed_float | Unboxed_integer _ | Untagged_int) -> false + (Unboxed_float | Unboxed_integer _ | Untagged_immediate) -> false | Unboxed_float, Unboxed_float -> true | Unboxed_float, - (Same_as_ocaml_repr | Unboxed_integer _ | Untagged_int) -> false + (Same_as_ocaml_repr | Unboxed_integer _ | Untagged_immediate) -> false | Unboxed_integer bi1, Unboxed_integer bi2 -> equal_boxed_integer bi1 bi2 | Unboxed_integer _, - (Same_as_ocaml_repr | Unboxed_float | Untagged_int) -> false - | Untagged_int, Untagged_int -> true - | Untagged_int, + (Same_as_ocaml_repr | Unboxed_float | Untagged_immediate) -> false + | Untagged_immediate, Untagged_immediate -> true + | Untagged_immediate, (Same_as_ocaml_repr | Unboxed_float | Unboxed_integer _) -> false let native_name_is_external p = let nat_name = native_name p in nat_name <> "" && nat_name.[0] <> '%' +module Style = Misc.Style + let report_error ppf err = match err with | Old_style_float_with_native_repr_attribute -> - Format.fprintf ppf "Cannot use \"float\" in conjunction with \ - [%@unboxed]/[%@untagged]." + Format.fprintf ppf "Cannot use %a in conjunction with %a/%a." + Style.inline_code "float" + Style.inline_code "[@unboxed]" + Style.inline_code "[@untagged]" | Old_style_noalloc_with_noalloc_attribute -> - Format.fprintf ppf "Cannot use \"noalloc\" in conjunction with \ - [%@%@noalloc]." + Format.fprintf ppf "Cannot use %a in conjunction with %a." + Style.inline_code "noalloc" + Style.inline_code "[@@noalloc]" | No_native_primitive_with_repr_attribute -> Format.fprintf ppf - "[@The native code version of the primitive is mandatory@ \ - when attributes [%@untagged] or [%@unboxed] are present.@]" + "@[The native code version of the primitive is mandatory@ \ + when attributes %a or %a are present.@]" + Style.inline_code "[@untagged]" + Style.inline_code "[@unboxed]" let () = Location.register_error_of_exn diff --git a/src/ocaml/typing/primitive.mli b/src/ocaml/typing/primitive.mli index e8376ad552..3d3ae8854c 100644 --- a/src/ocaml/typing/primitive.mli +++ b/src/ocaml/typing/primitive.mli @@ -23,7 +23,7 @@ type native_repr = | Same_as_ocaml_repr | Unboxed_float | Unboxed_integer of boxed_integer - | Untagged_int + | Untagged_immediate type description = private { prim_name: string; (* Name of primitive or C function *) diff --git a/src/ocaml/typing/printpat.ml b/src/ocaml/typing/printpat.ml index 64094b63ec..bc3578ce41 100644 --- a/src/ocaml/typing/printpat.ml +++ b/src/ocaml/typing/printpat.ml @@ -52,7 +52,7 @@ let rec pretty_val : type k . _ -> k general_pattern -> _ = fun ppf v -> | [] -> match v.pat_desc with | Tpat_any -> fprintf ppf "_" - | Tpat_var (x,_) -> fprintf ppf "%s" (Ident.name x) + | Tpat_var (x,_,_) -> fprintf ppf "%s" (Ident.name x) | Tpat_constant c -> fprintf ppf "%s" (pretty_const c) | Tpat_tuple vs -> fprintf ppf "@[(%a)@]" (pretty_vals ",") vs @@ -84,7 +84,7 @@ let rec pretty_val : type k . _ -> k general_pattern -> _ = fun ppf v -> | (_,_,{pat_desc=Tpat_any}) -> false (* do not show lbl=_ *) | _ -> true) lvs in begin match filtered_lvs with - | [] -> fprintf ppf "_" + | [] -> fprintf ppf "{ _ }" | (_, lbl, _) :: q -> let elision_mark ppf = (* we assume that there is no label repetitions here *) @@ -98,7 +98,7 @@ let rec pretty_val : type k . _ -> k general_pattern -> _ = fun ppf v -> fprintf ppf "@[[| %a |]@]" (pretty_vals " ;") vs | Tpat_lazy v -> fprintf ppf "@[<2>lazy@ %a@]" pretty_arg v - | Tpat_alias (v, x,_) -> + | Tpat_alias (v, x,_,_) -> fprintf ppf "@[(%a@ as %a)@]" pretty_val v Ident.print x | Tpat_value v -> fprintf ppf "%a" pretty_val (v :> pattern) @@ -144,26 +144,20 @@ and pretty_lvals ppf = function fprintf ppf "%s=%a;@ %a" lbl.lbl_name pretty_val v pretty_lvals rest -let top_pretty ppf v = - fprintf ppf "@[%a@]@?" pretty_val v - -let pretty_pat p = - top_pretty Format.str_formatter p ; - prerr_string (Format.flush_str_formatter ()) +let pretty_pat ppf p = + fprintf ppf "@[%a@]" pretty_val p type 'k matrix = 'k general_pattern list list -let pretty_line fmt = +let pretty_line ppf line = + Format.fprintf ppf "@["; List.iter (fun p -> - Format.fprintf fmt " <"; - top_pretty fmt p; - Format.fprintf fmt ">"; - ) - -let pretty_matrix fmt (pss : 'k matrix) = - Format.fprintf fmt "begin matrix\n" ; - List.iter (fun ps -> - pretty_line fmt ps ; - Format.fprintf fmt "\n" - ) pss; - Format.fprintf fmt "end matrix\n%!" + Format.fprintf ppf "<%a>@ " + pretty_val p + ) line; + Format.fprintf ppf "@]" + +let pretty_matrix ppf (pss : 'k matrix) = + Format.fprintf ppf "@[ %a@]" + (Format.pp_print_list ~pp_sep:Format.pp_print_cut pretty_line) + pss diff --git a/src/ocaml/typing/printpat.mli b/src/ocaml/typing/printpat.mli index 1865a2ab29..1f03508c2d 100644 --- a/src/ocaml/typing/printpat.mli +++ b/src/ocaml/typing/printpat.mli @@ -16,11 +16,11 @@ val pretty_const - : Asttypes.constant -> string -val top_pretty - : Format.formatter -> 'k Typedtree.general_pattern -> unit + : Asttypes.constant -> string +val pretty_val : Format.formatter -> 'k Typedtree.general_pattern -> unit + val pretty_pat - : 'k Typedtree.general_pattern -> unit + : Format.formatter -> 'k Typedtree.general_pattern -> unit val pretty_line : Format.formatter -> 'k Typedtree.general_pattern list -> unit val pretty_matrix diff --git a/src/ocaml/typing/printtyp.ml b/src/ocaml/typing/printtyp.ml index cba0d9c51d..70542c81e4 100644 --- a/src/ocaml/typing/printtyp.ml +++ b/src/ocaml/typing/printtyp.ml @@ -28,12 +28,11 @@ open Types open Btype open Outcometree -(* Print a long identifier *) +module Sig_component_kind = Shape.Sig_component_kind +module Style = Misc.Style -let rec longident ppf = function - | Lident s -> pp_print_string ppf s - | Ldot(p, s) -> fprintf ppf "%a.%s" longident p s - | Lapply(p1, p2) -> fprintf ppf "%a(%a)" longident p1 longident p2 +(* Print a long identifier *) +let longident = Pprintast.longident let () = Env.print_longident := longident @@ -58,6 +57,8 @@ let in_printing_env f = Env.without_cmis f !printing_env type namespace = Shape.Sig_component_kind.t = | Value | Type + | Constructor + | Label | Module | Module_type | Extension_constructor @@ -73,7 +74,7 @@ module Namespace = struct | Module_type -> 2 | Class -> 3 | Class_type -> 4 - | Extension_constructor | Value -> 5 + | Extension_constructor | Value | Constructor | Label -> 5 (* we do not handle those component *) let size = 1 + id Value @@ -90,7 +91,8 @@ module Namespace = struct | Some Module_type -> to_lookup Env.find_modtype_by_name | Some Class -> to_lookup Env.find_class_by_name | Some Class_type -> to_lookup Env.find_cltype_by_name - | None | Some(Value|Extension_constructor) -> fun _ -> raise Not_found + | None | Some(Value|Extension_constructor|Constructor|Label) -> + fun _ -> raise Not_found let location namespace id = let path = Path.Pident id in @@ -101,7 +103,8 @@ module Namespace = struct | Some Module_type -> (in_printing_env @@ Env.find_modtype path).mtd_loc | Some Class -> (in_printing_env @@ Env.find_class path).cty_loc | Some Class_type -> (in_printing_env @@ Env.find_cltype path).clty_loc - | Some (Extension_constructor|Value) | None -> Location.none + | Some (Extension_constructor|Value|Constructor|Label) | None -> + Location.none ) with Not_found -> None let best_class_namespace = function @@ -152,9 +155,9 @@ module Conflicts = struct end let pp_explanation ppf r= - Format.fprintf ppf "@[%a:@,Definition of %s %s@]" - Location.print_loc r.location - (Shape.Sig_component_kind.to_string r.kind) r.name + Format.fprintf ppf "@[%a:@,Definition of %s %a@]" + Location.print_loc r.location (Sig_component_kind.to_string r.kind) + Style.inline_code r.name let print_located_explanations ppf l = Format.fprintf ppf "@[%a@]" (Format.pp_print_list pp_explanation) l @@ -181,11 +184,12 @@ module Conflicts = struct | [namespace, a] -> Format.fprintf ppf "@ \ - @[<2>@{Hint@}: The %a %s has been defined multiple times@ \ + @[<2>@{Hint@}: The %a %a has been defined multiple times@ \ in@ this@ toplevel@ session.@ \ Some toplevel values still refer to@ old@ versions@ of@ this@ %a.\ @ Did you try to redefine them?@]" - Namespace.pp namespace a Namespace.pp namespace + Namespace.pp namespace + Style.inline_code a Namespace.pp namespace | (namespace, _) :: _ :: _ -> Format.fprintf ppf "@ \ @@ -194,7 +198,8 @@ module Conflicts = struct Some toplevel values still refer to@ old@ versions@ of@ those@ %a.\ @ Did you try to redefine them?@]" pp_namespace_plural namespace - Format.(pp_print_list ~pp_sep:conj pp_print_string) (List.map snd names) + Format.(pp_print_list ~pp_sep:conj Style.inline_code) + (List.map snd names) pp_namespace_plural namespace in Array.iter (pp_submsg ppf) submsgs @@ -278,7 +283,7 @@ let indexed_name namespace id = | Module_type -> Env.find_modtype_index id env | Class -> Env.find_class_index id env | Class_type-> Env.find_cltype_index id env - | Value | Extension_constructor -> None + | Value | Extension_constructor | Constructor | Label -> None in let index = match M.find_opt (Ident.name id) !bound_in_recursion with @@ -377,7 +382,7 @@ let rec rewrite_double_underscore_paths env p = let better_lid = Ldot (Lident (String.sub name 0 i), - String.capitalize_ascii + Unit_info.modulize (String.sub name (i + 2) (String.length name - i - 2))) in match Env.find_module_by_name better_lid env with @@ -707,6 +712,70 @@ let printer_iter_type_expr f ty = | _ -> Btype.iter_type_expr f ty +module Internal_names : sig + + val reset : unit -> unit + + val add : Path.t -> unit + + val print_explanations : Env.t -> Format.formatter -> unit + +end = struct + + let names = ref Ident.Set.empty + + let reset () = + names := Ident.Set.empty + + let add p = + match p with + | Pident id -> + let name = Ident.name id in + if String.length name > 0 && name.[0] = '$' then begin + names := Ident.Set.add id !names + end + | Pdot _ | Papply _ | Pextra_ty _ -> () + + let print_explanations env ppf = + let constrs = + Ident.Set.fold + (fun id acc -> + let p = Pident id in + match Env.find_type p env with + | exception Not_found -> acc + | decl -> + match type_origin decl with + | Existential constr -> + let prev = String.Map.find_opt constr acc in + let prev = Option.value ~default:[] prev in + String.Map.add constr (tree_of_path None p :: prev) acc + | Definition | Rec_check_regularity -> acc) + !names String.Map.empty + in + String.Map.iter + (fun constr out_idents -> + match out_idents with + | [] -> () + | [out_ident] -> + fprintf ppf + "@ @[<2>@{Hint@}:@ %a@ is an existential type@ \ + bound by the constructor@ %a.@]" + (Style.as_inline_code !Oprint.out_ident) out_ident + Style.inline_code constr + | out_ident :: out_idents -> + fprintf ppf + "@ @[<2>@{Hint@}:@ %a@ and %a@ are existential types@ \ + bound by the constructor@ %a.@]" + (Format.pp_print_list + ~pp_sep:(fun ppf () -> fprintf ppf ",@ ") + (Style.as_inline_code !Oprint.out_ident)) + (List.rev out_idents) + (Style.as_inline_code !Oprint.out_ident) out_ident + Style.inline_code constr) + constrs + +end + module Names : sig val reset_names : unit -> unit @@ -784,11 +853,7 @@ end = struct || String.Set.mem name !named_weak_vars let rec new_name () = - let name = - if !name_counter < 26 - then String.make 1 (Char.chr(97 + !name_counter)) - else String.make 1 (Char.chr(97 + !name_counter mod 26)) ^ - Int.to_string(!name_counter / 26) in + let name = Misc.letter_of_int !name_counter in incr name_counter; if name_is_already_used name then new_name () else name @@ -1013,7 +1078,7 @@ let reset_loop_marks () = visited_objects := []; aliased := []; delayed := []; printed_aliases := [] let reset_except_context () = - Names.reset_names (); reset_loop_marks () + Names.reset_names (); reset_loop_marks (); Internal_names.reset () let reset () = Conflicts.reset (); @@ -1051,7 +1116,7 @@ let rec tree_of_typexp mode ty = Otyp_var (non_gen, Names.name_of_type name_gen tty) | Tarrow(l, ty1, ty2, _) -> let lab = - if !print_labels || is_optional l then string_of_label l else "" + if !print_labels || is_optional l then l else Nolabel in let t1 = if is_optional l then @@ -1067,9 +1132,10 @@ let rec tree_of_typexp mode ty = | Tconstr(p, tyl, _abbrev) -> begin match best_type_path p with | Nth n -> tree_of_typexp mode (apply_nth n tyl) - | Path(nso, p) -> + | Path(nso, p') -> + Internal_names.add p'; let tyl' = apply_subst_opt nso tyl in - Otyp_constr (tree_of_path (Some Type) p, tree_of_typlist mode tyl') + Otyp_constr (tree_of_path (Some Type) p', tree_of_typlist mode tyl') end | Tvariant row -> let Row {fields; name; closed; _} = row_repr row in @@ -1341,7 +1407,7 @@ let prepare_decl id decl = Some ty in begin match decl.type_kind with - | Type_abstract -> () + | Type_abstract _ -> () | Type_variant (cstrs, _rep) -> List.iter (fun c -> @@ -1356,15 +1422,15 @@ let prepare_decl id decl = let tree_of_type_decl id decl = let ty_manifest, params = prepare_decl id decl in - let type_param = + let type_param ot_variance = function - | Otyp_var (_, id) -> id - | _ -> "?" + | Otyp_var (ot_non_gen, ot_name) -> {ot_non_gen; ot_name; ot_variance} + | _ -> {ot_non_gen=false; ot_name="?"; ot_variance} in let type_defined decl = let abstr = match decl.type_kind with - Type_abstract -> + Type_abstract _ -> decl.type_manifest = None || decl.type_private = Private | Type_record _ -> decl.type_private = Private @@ -1380,7 +1446,7 @@ let tree_of_type_decl id decl = let is_var = is_Tvar ty in if abstr || not is_var then let inj = - decl.type_kind = Type_abstract && Variance.mem Inj v && + type_kind_is_abstract decl && Variance.mem Inj v && match decl.type_manifest with | None -> true | Some ty -> (* only abstract or private row types *) @@ -1394,7 +1460,7 @@ let tree_of_type_decl id decl = decl.type_params decl.type_variance in (Ident.name id, - List.map2 (fun ty cocn -> type_param (tree_of_typexp Type ty), cocn) + List.map2 (fun ty cocn -> type_param cocn (tree_of_typexp Type ty)) params vari) in let tree_of_manifest ty1 = @@ -1406,7 +1472,7 @@ let tree_of_type_decl id decl = let constraints = tree_of_constraints params in let ty, priv, unboxed = match decl.type_kind with - | Type_abstract -> + | Type_abstract _ -> begin match ty_manifest with | None -> (Otyp_abstract, Public, false) | Some ty -> @@ -1706,7 +1772,7 @@ let rec tree_of_class_type mode params = Octy_signature (self_ty, List.rev csil) | Cty_arrow (l, ty, cty) -> let lab = - if !print_labels || is_optional l then string_of_label l else "" + if !print_labels || is_optional l then l else Nolabel in let tr = if is_optional l then @@ -1723,11 +1789,11 @@ let class_type ppf cty = !Oprint.out_class_type ppf (tree_of_class_type Type [] cty) let tree_of_class_param param variance = - (match tree_of_typexp Type_scheme param with - Otyp_var (_, s) -> s - | _ -> "?"), - if is_Tvar param then Asttypes.(NoVariance, NoInjectivity) - else variance + let ot_variance = + if is_Tvar param then Asttypes.(NoVariance, NoInjectivity) else variance in + match tree_of_typexp Type_scheme param with + Otyp_var (ot_non_gen, ot_name) -> {ot_non_gen; ot_name; ot_variance} + | _ -> {ot_non_gen=false; ot_name="?"; ot_variance} let class_variance = let open Variance in let open Asttypes in @@ -1802,7 +1868,7 @@ let dummy = { type_params = []; type_arity = 0; - type_kind = Type_abstract; + type_kind = Type_abstract Definition; type_private = Public; type_manifest = None; type_variance = []; @@ -2053,9 +2119,11 @@ let trees_of_type_expansion mode Errortrace.{ty = t; expanded = t'} = end let type_expansion ppf = function - | Same t -> !Oprint.out_type ppf t + | Same t -> Style.as_inline_code !Oprint.out_type ppf t | Diff(t,t') -> - fprintf ppf "@[<2>%a@ =@ %a@]" !Oprint.out_type t !Oprint.out_type t' + fprintf ppf "@[<2>%a@ =@ %a@]" + (Style.as_inline_code !Oprint.out_type) t + (Style.as_inline_code !Oprint.out_type) t' let trees_of_trace mode = List.map (Errortrace.map_diff (trees_of_type_expansion mode)) @@ -2065,11 +2133,11 @@ let trees_of_type_path_expansion (tp,tp') = Diff(tree_of_path (Some Type) tp, tree_of_path (Some Type) tp') let type_path_expansion ppf = function - | Same p -> !Oprint.out_ident ppf p + | Same p -> Style.as_inline_code !Oprint.out_ident ppf p | Diff(p,p') -> fprintf ppf "@[<2>%a@ =@ %a@]" - !Oprint.out_ident p - !Oprint.out_ident p' + (Style.as_inline_code !Oprint.out_ident) p + (Style.as_inline_code !Oprint.out_ident) p' let rec trace fst txt ppf = function | {Errortrace.got; expected} :: rem -> @@ -2162,7 +2230,7 @@ let may_prepare_expansion compact (Errortrace.{ty; expanded} as ty_exp) = let print_path p = Format.dprintf "%a" !Oprint.out_ident (tree_of_path (Some Type) p) -let print_tag ppf = fprintf ppf "`%s" +let print_tag ppf s = Style.inline_code ppf ("`" ^ s) let print_tags = let comma ppf () = Format.fprintf ppf ",@ " in @@ -2188,13 +2256,17 @@ let explanation_diff env t3 t4 : (Format.formatter -> unit) option = when is_unit env ty1 && unifiable env ty2 t4 -> Some (fun ppf -> fprintf ppf - "@,@[@{Hint@}: Did you forget to provide `()' as argument?@]") + "@,@[@{Hint@}: Did you forget to provide %a as argument?@]" + Style.inline_code "()" + ) | _, Tarrow (_, ty1, ty2, _) when is_unit env ty1 && unifiable env t3 ty2 -> Some (fun ppf -> fprintf ppf "@,@[@{Hint@}: Did you forget to wrap the expression using \ - `fun () ->'?@]") + %a?@]" + Style.inline_code "fun () ->" + ) | _ -> None @@ -2202,7 +2274,8 @@ let explain_fixed_row_case ppf = function | Errortrace.Cannot_be_closed -> fprintf ppf "it cannot be closed" | Errortrace.Cannot_add_tags tags -> - fprintf ppf "it may not allow the tag(s) %a" print_tags tags + fprintf ppf "it may not allow the tag(s) %a" + print_tags tags let explain_fixed_row pos expl = match expl with | Fixed_private -> @@ -2210,16 +2283,24 @@ let explain_fixed_row pos expl = match expl with | Univar x -> reserve_names x; dprintf "The %a variant type is bound to the universal type variable %a" - Errortrace.print_pos pos type_expr_with_reserved_names x + Errortrace.print_pos pos + (Style.as_inline_code type_expr_with_reserved_names) x | Reified p -> - dprintf "The %a variant type is bound to %t" - Errortrace.print_pos pos (print_path p) + dprintf "The %a variant type is bound to %a" + Errortrace.print_pos pos + (Style.as_inline_code + (fun ppf p -> + Internal_names.add p; + print_path p ppf)) + p | Rigid -> ignore let explain_variant (type variety) : variety Errortrace.variant -> _ = function (* Common *) | Errortrace.Incompatible_types_for s -> - Some(dprintf "@,Types for tag `%s are incompatible" s) + Some(dprintf "@,Types for tag %a are incompatible" + print_tag s + ) (* Unification *) | Errortrace.No_intersection -> Some(dprintf "@,These two variant types have no intersection") @@ -2242,9 +2323,9 @@ let explain_variant (type variety) : variety Errortrace.variant -> _ = function (* Equality & Moregen *) | Errortrace.Presence_not_guaranteed_for (pos, s) -> Some( dprintf - "@,@[The tag `%s is guaranteed to be present in the %a variant type,\ + "@,@[The tag %a is guaranteed to be present in the %a variant type,\ @ but not in the %a@]" - s + print_tag s Errortrace.print_pos (Errortrace.swap_position pos) Errortrace.print_pos pos ) @@ -2258,22 +2339,25 @@ let explain_escape pre = function reserve_names u; Some( dprintf "%t@,The universal variable %a would escape its scope" - pre type_expr_with_reserved_names u) + pre + (Style.as_inline_code type_expr_with_reserved_names) u + ) | Errortrace.Constructor p -> Some( dprintf "%t@,@[The type constructor@;<1 2>%a@ would escape its scope@]" - pre path p + pre (Style.as_inline_code path) p ) | Errortrace.Module_type p -> Some( dprintf "%t@,@[The module type@;<1 2>%a@ would escape its scope@]" - pre path p + pre (Style.as_inline_code path) p ) | Errortrace.Equation Errortrace.{ty = _; expanded = t} -> reserve_names t; Some( dprintf "%t @,@[This instance of %a is ambiguous:@ %s@]" - pre type_expr_with_reserved_names t + pre + (Style.as_inline_code type_expr_with_reserved_names) t "it would escape the scope of its equation" ) | Errortrace.Self -> @@ -2283,8 +2367,8 @@ let explain_escape pre = function let explain_object (type variety) : variety Errortrace.obj -> _ = function | Errortrace.Missing_field (pos,f) -> Some( - dprintf "@,@[The %a object type has no method %s@]" - Errortrace.print_pos pos f + dprintf "@,@[The %a object type has no method %a@]" + Errortrace.print_pos pos Style.inline_code f ) | Errortrace.Abstract_row pos -> Some( dprintf @@ -2294,6 +2378,15 @@ let explain_object (type variety) : variety Errortrace.obj -> _ = function | Errortrace.Self_cannot_be_closed -> Some (dprintf "@,Self type cannot be unified with a closed object type") +let explain_incompatible_fields name (diff: Types.type_expr Errortrace.diff) = + reserve_names diff.got; + reserve_names diff.expected; + dprintf "@,@[The method %a has type@ %a,@ \ + but the expected method type was@ %a@]" + Style.inline_code name + (Style.as_inline_code type_expr_with_reserved_names) diff.got + (Style.as_inline_code type_expr_with_reserved_names) diff.expected + let explanation (type variety) intro prev env : (Errortrace.expanded_type, variety) Errortrace.elt -> _ = function | Errortrace.Diff {got; expected} -> @@ -2303,20 +2396,15 @@ let explanation (type variety) intro prev env match context, kind, prev with | Some ctx, _, _ -> reserve_names ctx; - dprintf "@[%t@;<1 2>%a@]" intro type_expr_with_reserved_names ctx + dprintf "@[%t@;<1 2>%a@]" intro + (Style.as_inline_code type_expr_with_reserved_names) ctx | None, Univ _, Some(Errortrace.Incompatible_fields {name; diff}) -> - reserve_names diff.got; - reserve_names diff.expected; - dprintf "@,@[The method %s has type@ %a,@ \ - but the expected method type was@ %a@]" - name - type_expr_with_reserved_names diff.got - type_expr_with_reserved_names diff.expected + explain_incompatible_fields name diff | _ -> ignore in explain_escape pre kind - | Errortrace.Incompatible_fields { name; _ } -> - Some(dprintf "@,Types for method %s are incompatible" name) + | Errortrace.Incompatible_fields { name; diff} -> + Some(explain_incompatible_fields name diff) | Errortrace.Variant v -> explain_variant v | Errortrace.Obj o -> @@ -2331,7 +2419,8 @@ let explanation (type variety) intro prev env mark_loops x; mark_loops y; dprintf "@,@[The type variable %a occurs inside@ %a@]" - prepared_type_expr x prepared_type_expr y + (Style.as_inline_code prepared_type_expr) x + (Style.as_inline_code prepared_type_expr) y ppf) | _ -> (* We had a delayed unification of the type variable with @@ -2354,14 +2443,21 @@ let explain mis ppf = let warn_on_missing_def env ppf t = match get_desc t with | Tconstr (p,_,_) -> - begin - try - ignore(Env.find_type p env : Types.type_declaration) - with Not_found -> + begin match Env.find_type p env with + | exception Not_found -> fprintf ppf - "@,@[%a is abstract because no corresponding cmi file was found \ - in path.@]" path p - end + "@,@[Type %a is abstract because@ no corresponding\ + @ cmi file@ was found@ in path.@]" (Style.as_inline_code path) p + | { type_manifest = Some _; _ } -> () + | { type_manifest = None; _ } as decl -> + match type_origin decl with + | Rec_check_regularity -> + fprintf ppf + "@,@[Type %a was considered abstract@ when checking\ + @ constraints@ in this@ recursive type definition.@]" + (Style.as_inline_code path) p + | Definition | Existential _ -> () + end | _ -> () let prepare_expansion_head empty_tr = function @@ -2416,6 +2512,7 @@ let error trace_format mode subst env tr txt1 ppf txt2 ty_expect_explanation = (explain mis); if env <> Env.empty then warn_on_missing_defs env ppf head; + Internal_names.print_explanations env ppf; Conflicts.print_explanations ppf; print_labels := true with exn -> diff --git a/src/ocaml/typing/printtyped.ml b/src/ocaml/typing/printtyped.ml index 67afedcdbf..85a55016ac 100644 --- a/src/ocaml/typing/printtyped.ml +++ b/src/ocaml/typing/printtyped.ml @@ -109,6 +109,11 @@ let fmt_private_flag f x = | Public -> fprintf f "Public" | Private -> fprintf f "Private" +let fmt_partiality f x = + match x with + | Total -> () + | Partial -> fprintf f " (Partial)" + let line i f s (*...*) = fprintf f "%s" (String.make (2*i) ' '); fprintf f s (*...*) @@ -206,7 +211,7 @@ let rec core_type i ppf x = line i ppf "Ttyp_class %a\n" fmt_path li; list i core_type ppf l; | Ttyp_alias (ct, s) -> - line i ppf "Ttyp_alias \"%s\"\n" s; + line i ppf "Ttyp_alias \"%s\"\n" s.txt; core_type i ppf ct; | Ttyp_poly (sl, ct) -> line i ppf "Ttyp_poly%a\n" @@ -215,6 +220,9 @@ let rec core_type i ppf x = | Ttyp_package { pack_path = s; pack_fields = l } -> line i ppf "Ttyp_package %a\n" fmt_path s; list i package_with ppf l; + | Ttyp_open (path, _mod_ident, t) -> + line i ppf "Ttyp_open %a\n" fmt_path path; + core_type i ppf t and package_with i ppf (s, t) = line i ppf "with type %a\n" fmt_longident s; @@ -232,8 +240,8 @@ and pattern : type k . _ -> _ -> k general_pattern -> unit = fun i ppf x -> end; match x.pat_desc with | Tpat_any -> line i ppf "Tpat_any\n"; - | Tpat_var (s,_) -> line i ppf "Tpat_var \"%a\"\n" fmt_ident s; - | Tpat_alias (p, s,_) -> + | Tpat_var (s,_,_) -> line i ppf "Tpat_var \"%a\"\n" fmt_ident s; + | Tpat_alias (p, s,_,_) -> line i ppf "Tpat_alias \"%a\"\n" fmt_ident s; pattern i ppf p; | Tpat_constant (c) -> line i ppf "Tpat_constant %a\n" fmt_constant c; @@ -288,7 +296,22 @@ and pattern_extra i ppf (extra_pat, _, attrs) = line i ppf "Tpat_extra_open %a\n" fmt_path id; attributes i ppf attrs; -and expression_extra i ppf (x,_,attrs) = +and function_body i ppf (body : function_body) = + match[@warning "+9"] body with + | Tfunction_body e -> + line i ppf "Tfunction_body\n"; + expression (i+1) ppf e + | Tfunction_cases + { cases; loc; exp_extra; attributes = attrs; param = _; partial } + -> + line i ppf "Tfunction_cases%a %a\n" + fmt_partiality partial + fmt_location loc; + attributes (i+1) ppf attrs; + Option.iter (fun e -> expression_extra (i+1) ppf e []) exp_extra; + list (i+1) case ppf cases + +and expression_extra i ppf x attrs = match x with | Texp_constraint ct -> line i ppf "Texp_constraint\n"; @@ -317,7 +340,7 @@ and expression i ppf x = | [] -> () | extra -> line i ppf "extra\n"; - List.iter (expression_extra (i+1) ppf) extra; + List.iter (fun (x, _, attrs) -> expression_extra (i+1) ppf x attrs) extra; end; match x.exp_desc with | Texp_ident (li,_,_) -> line i ppf "Texp_ident %a\n" fmt_path li; @@ -327,16 +350,17 @@ and expression i ppf x = line i ppf "Texp_let %a\n" fmt_rec_flag rf; list i value_binding ppf l; expression i ppf e; - | Texp_function { arg_label = p; param = _; cases; partial = _; } -> + | Texp_function (params, body) -> line i ppf "Texp_function\n"; - arg_label i ppf p; - list i case ppf cases; + list i function_param ppf params; + function_body i ppf body; | Texp_apply (e, l) -> line i ppf "Texp_apply\n"; expression i ppf e; list i label_x_expression ppf l; - | Texp_match (e, l, _partial) -> - line i ppf "Texp_match\n"; + | Texp_match (e, l, partial) -> + line i ppf "Texp_match%a\n" + fmt_partiality partial; expression i ppf e; list i case ppf l; | Texp_try (e, l) -> @@ -427,8 +451,9 @@ and expression i ppf x = | Texp_pack me -> line i ppf "Texp_pack"; module_expr i ppf me - | Texp_letop {let_; ands; param = _; body; partial = _} -> - line i ppf "Texp_letop"; + | Texp_letop {let_; ands; param = _; body; partial } -> + line i ppf "Texp_letop%a" + fmt_partiality partial; binding_op (i+1) ppf let_; list (i+1) binding_op ppf ands; case i ppf body @@ -457,6 +482,20 @@ and binding_op i ppf x = fmt_location x.bop_loc; expression i ppf x.bop_exp +and function_param i ppf x = + let p = x.fp_arg_label in + arg_label i ppf p; + match x.fp_kind with + | Tparam_pat pat -> + line i ppf "Param_pat%a\n" + fmt_partiality x.fp_partial; + pattern (i+1) ppf pat + | Tparam_optional_default (pat, expr) -> + line i ppf "Param_optional_default%a\n" + fmt_partiality x.fp_partial; + pattern (i+1) ppf pat; + expression (i+1) ppf expr + and type_parameter i ppf (x, _variance) = core_type i ppf x and type_declaration i ppf x = diff --git a/src/ocaml/typing/shape.ml b/src/ocaml/typing/shape.ml index fb8966077c..2657058229 100644 --- a/src/ocaml/typing/shape.ml +++ b/src/ocaml/typing/shape.ml @@ -67,6 +67,8 @@ module Sig_component_kind = struct type t = | Value | Type + | Constructor + | Label | Module | Module_type | Extension_constructor @@ -76,6 +78,8 @@ module Sig_component_kind = struct let to_string = function | Value -> "value" | Type -> "type" + | Constructor -> "constructor" + | Label -> "label" | Module -> "module" | Module_type -> "module type" | Extension_constructor -> "extension constructor" @@ -87,6 +91,8 @@ module Sig_component_kind = struct | Extension_constructor -> false | Type + | Constructor + | Label | Module | Module_type | Class @@ -99,10 +105,15 @@ module Item = struct type t = string * Sig_component_kind.t let compare = compare + let name (name, _) = name + let kind (_, kind) = kind + let make str ns = str, ns let value id = Ident.name id, Sig_component_kind.Value let type_ id = Ident.name id, Sig_component_kind.Type + let constr id = Ident.name id, Sig_component_kind.Constructor + let label id = Ident.name id, Sig_component_kind.Label let module_ id = Ident.name id, Sig_component_kind.Module let module_type id = Ident.name id, Sig_component_kind.Module_type let extension_constructor id = @@ -124,24 +135,26 @@ module Item = struct end type var = Ident.t -type t = { uid: Uid.t option; desc: desc } +type t = { uid: Uid.t option; desc: desc; approximated: bool } and desc = | Var of var | Abs of var * t | App of t * t | Struct of t Item.Map.t + | Alias of t | Leaf | Proj of t * Item.t | Comp_unit of string + | Error of string -let print fmt = +let print fmt t = let print_uid_opt = Format.pp_print_option (fun fmt -> Format.fprintf fmt "<%a>" Uid.print) in let rec aux fmt { uid; desc } = match desc with | Var id -> - Format.fprintf fmt "%a%a" Ident.print id print_uid_opt uid + Format.fprintf fmt "%s%a" (Ident.name id) print_uid_opt uid | Abs (id, t) -> let rec collect_idents = function | { uid = None; desc = Abs(id, t) } -> @@ -152,8 +165,9 @@ let print fmt = in let (other_idents, body) = collect_idents t in let pp_idents fmt idents = + let idents_names = List.map Ident.name idents in let pp_sep fmt () = Format.fprintf fmt ",@ " in - Format.pp_print_list ~pp_sep Ident.print fmt idents + Format.pp_print_list ~pp_sep Format.pp_print_string fmt idents_names in Format.fprintf fmt "Abs@[%a@,(@[%a,@ @[%a@]@])@]" print_uid_opt uid pp_idents (id :: other_idents) aux body @@ -183,350 +197,102 @@ let print fmt = aux t ) in - Format.fprintf fmt "{@[%a@,%a@]}" print_uid_opt uid print_map map + if Item.Map.is_empty map then + Format.fprintf fmt "@[{%a}@]" print_uid_opt uid + else + Format.fprintf fmt "{@[%a@,%a@]}" print_uid_opt uid print_map map + | Alias t -> + Format.fprintf fmt "Alias@[(@[%a@,%a@])@]" print_uid_opt uid aux t + | Error s -> + Format.fprintf fmt "Error %s" s in - Format.fprintf fmt"@[%a@]@;" aux + if t.approximated then + Format.fprintf fmt "@[(approx)@ %a@]@;" aux t + else + Format.fprintf fmt "@[%a@]@;" aux t + +let rec strip_head_aliases = function + | { desc = Alias t; _ } -> strip_head_aliases t + | t -> t let fresh_var ?(name="shape-var") uid = let var = Ident.create_local name in - var, { uid = Some uid; desc = Var var } + var, { uid = Some uid; desc = Var var; approximated = false } let for_unnamed_functor_param = Ident.create_local "()" let var uid id = - { uid = Some uid; desc = Var id } + { uid = Some uid; desc = Var id; approximated = false } let abs ?uid var body = - { uid; desc = Abs (var, body) } + { uid; desc = Abs (var, body); approximated = false } let str ?uid map = - { uid; desc = Struct map } + { uid; desc = Struct map; approximated = false } + +let alias ?uid t = + { uid; desc = Alias t; approximated = false} let leaf uid = - { uid = Some uid; desc = Leaf } + { uid = Some uid; desc = Leaf; approximated = false } + +let approx t = { t with approximated = true} let proj ?uid t item = match t.desc with | Leaf -> (* When stuck projecting in a leaf we propagate the leaf as a best effort *) - t + approx t | Struct map -> begin try Item.Map.find item map - with Not_found -> t (* ill-typed program *) + with Not_found -> approx t (* ill-typed program *) end | _ -> - { uid; desc = Proj (t, item) } + { uid; desc = Proj (t, item); approximated = false } let app ?uid f ~arg = - { uid; desc = App (f, arg) } + { uid; desc = App (f, arg); approximated = false } let decompose_abs t = match t.desc with | Abs (x, t) -> Some (x, t) | _ -> None - -module Make_reduce(Params : sig - type env - val fuel : int - val read_unit_shape : unit_name:string -> t option - val find_shape : env -> Ident.t -> t -end) = struct - (* We implement a strong call-by-need reduction, following an - evaluator from Nathanaelle Courant. *) - - type nf = { uid: Uid.t option; desc: nf_desc } - and nf_desc = - | NVar of var - | NApp of nf * nf - | NAbs of local_env * var * t * delayed_nf - | NStruct of delayed_nf Item.Map.t - | NProj of nf * Item.t - | NLeaf - | NComp_unit of string - | NoFuelLeft of desc - (* A type of normal forms for strong call-by-need evaluation. - The normal form of an abstraction - Abs(x, t) - is a closure - NAbs(env, x, t, dnf) - when [env] is the local environment, and [dnf] is a delayed - normal form of [t]. - - A "delayed normal form" is morally equivalent to (nf Lazy.t), but - we use a different representation that is compatible with - memoization (lazy values are not hashable/comparable by default - comparison functions): we represent a delayed normal form as - just a not-yet-computed pair [local_env * t] of a term in a - local environment -- we could also see this as a term under - an explicit substitution. This delayed thunked is "forced" - by calling the normalization function as usual, but duplicate - computations are precisely avoided by memoization. - *) - and delayed_nf = Thunk of local_env * t - - and local_env = delayed_nf option Ident.Map.t - (* When reducing in the body of an abstraction [Abs(x, body)], we - bind [x] to [None] in the environment. [Some v] is used for - actual substitutions, for example in [App(Abs(x, body), t)], when - [v] is a thunk that will evaluate to the normal form of [t]. *) - - let improve_uid uid (nf : nf) = - match nf.uid with - | Some _ -> nf - | None -> { nf with uid } - - let in_memo_table memo_table memo_key f arg = - match Hashtbl.find memo_table memo_key with - | res -> res - | exception Not_found -> - let res = f arg in - Hashtbl.replace memo_table memo_key res; - res - - type env = { - fuel: int ref; - global_env: Params.env; - local_env: local_env; - reduce_memo_table: (local_env * t, nf) Hashtbl.t; - read_back_memo_table: (nf, t) Hashtbl.t; - } - - let bind env var shape = - { env with local_env = Ident.Map.add var shape env.local_env } - - let rec reduce_ env t = - let memo_key = (env.local_env, t) in - in_memo_table env.reduce_memo_table memo_key (reduce__ env) t - (* Memoization is absolutely essential for performance on this - problem, because the normal forms we build can in some real-world - cases contain an exponential amount of redundancy. Memoization - can avoid the repeated evaluation of identical subterms, - providing a large speedup, but even more importantly it - implicitly shares the memory of the repeated results, providing - much smaller normal forms (that blow up again if printed back - as trees). A functor-heavy file from Irmin has its shape normal - form decrease from 100Mio to 2.5Mio when memoization is enabled. - - Note: the local environment is part of the memoization key, while - it is defined using a type Ident.Map.t of non-canonical balanced - trees: two maps could have exactly the same items, but be - balanced differently and therefore hash differently, reducing - the effectivenss of memoization. - This could in theory happen, say, with the two programs - (fun x -> fun y -> ...) - and - (fun y -> fun x -> ...) - having "the same" local environments, with additions done in - a different order, giving non-structurally-equal trees. Should we - define our own hash functions to provide robust hashing on - environments? - - We believe that the answer is "no": this problem does not occur - in practice. We can assume that identifiers are unique on valid - typedtree fragments (identifier "stamps" distinguish - binding positions); in particular the two program fragments above - in fact bind *distinct* identifiers x (with different stamps) and - different identifiers y, so the environments are distinct. If two - environments are structurally the same, they must correspond to - the evaluation evnrionments of two sub-terms that are under - exactly the same scope of binders. So the two environments were - obtained by the same term traversal, adding binders in the same - order, giving the same balanced trees: the environments have the - same hash. -*) - - and reduce__ ({fuel; global_env; local_env; _} as env) (t : t) = - let reduce env t = reduce_ env t in - let delay_reduce env t = Thunk (env.local_env, t) in - let force (Thunk (local_env, t)) = - reduce { env with local_env } t in - let return desc : nf = { uid = t.uid; desc } in - if !fuel < 0 then return (NoFuelLeft t.desc) - else - match t.desc with - | Comp_unit unit_name -> - begin match Params.read_unit_shape ~unit_name with - | Some t -> reduce env t - | None -> return (NComp_unit unit_name) - end - | App(f, arg) -> - let f = reduce env f in - begin match f.desc with - | NAbs(clos_env, var, body, _body_nf) -> - let arg = delay_reduce env arg in - let env = bind { env with local_env = clos_env } var (Some arg) in - reduce env body - |> improve_uid t.uid - | _ -> - let arg = reduce env arg in - return (NApp(f, arg)) - end - | Proj(str, item) -> - let str = reduce env str in - let nored () = return (NProj(str, item)) in - begin match str.desc with - | NStruct (items) -> - begin match Item.Map.find item items with - | exception Not_found -> nored () - | nf -> - force nf - |> improve_uid t.uid - end - | _ -> - nored () - end - | Abs(var, body) -> - let body_nf = delay_reduce (bind env var None) body in - return (NAbs(local_env, var, body, body_nf)) - | Var id -> - begin match Ident.Map.find id local_env with - (* Note: instead of binding abstraction-bound variables to - [None], we could unify it with the [Some v] case by - binding the bound variable [x] to [NVar x]. - - One reason to distinguish the situations is that we can - provide a different [Uid.t] location; for bound - variables, we use the [Uid.t] of the bound occurrence - (not the binding site), whereas for bound values we use - their binding-time [Uid.t]. *) - | None -> return (NVar id) - | Some def -> force def - | exception Not_found -> - match Params.find_shape global_env id with - | exception Not_found -> return (NVar id) - | res when res = t -> return (NVar id) - | res -> - decr fuel; - reduce env res - end - | Leaf -> return NLeaf - | Struct m -> - let mnf = Item.Map.map (delay_reduce env) m in - return (NStruct mnf) - - let rec read_back env (nf : nf) : t = - in_memo_table env.read_back_memo_table nf (read_back_ env) nf - (* The [nf] normal form we receive may contain a lot of internal - sharing due to the use of memoization in the evaluator. We have - to memoize here again, otherwise the sharing is lost by mapping - over the term as a tree. *) - - and read_back_ env (nf : nf) : t = - { uid = nf.uid; desc = read_back_desc env nf.desc } - - and read_back_desc env desc = - let read_back nf = read_back env nf in - let read_back_force (Thunk (local_env, t)) = - read_back (reduce_ { env with local_env } t) in - match desc with - | NVar v -> - Var v - | NApp (nft, nfu) -> - App(read_back nft, read_back nfu) - | NAbs (_env, x, _t, nf) -> - Abs(x, read_back_force nf) - | NStruct nstr -> - Struct (Item.Map.map read_back_force nstr) - | NProj (nf, item) -> - Proj (read_back nf, item) - | NLeaf -> Leaf - | NComp_unit s -> Comp_unit s - | NoFuelLeft t -> t - - (* When in Merlin we don't need to perform full shape reduction since we are - only interested by uid's stored at the "top-level" of the shape once the - projections have been done. *) - let weak_read_back env (nf : nf) : t = - let cache = Hashtbl.create 42 in - let rec weak_read_back env nf = - let memo_key = (env.local_env, nf) in - in_memo_table cache memo_key (weak_read_back_ env) nf - and weak_read_back_ env nf : t = - { uid = nf.uid; desc = weak_read_back_desc env nf.desc } - and weak_read_back_desc env desc : desc = - let weak_read_back_no_force (Thunk (_local_env, t)) = t in - match desc with - | NVar v -> - Var v - | NApp (nft, nfu) -> - App(weak_read_back env nft, weak_read_back env nfu) - | NAbs (_env, x, _t, nf) -> - Abs(x, weak_read_back_no_force nf) - | NStruct nstr -> - Struct (Item.Map.map weak_read_back_no_force nstr) - | NProj (nf, item) -> - Proj (read_back env nf, item) - | NLeaf -> Leaf - | NComp_unit s -> Comp_unit s - | NoFuelLeft t -> t - in weak_read_back env nf - - let reduce global_env t = - let fuel = ref Params.fuel in - let reduce_memo_table = Hashtbl.create 42 in - let read_back_memo_table = Hashtbl.create 42 in - let local_env = Ident.Map.empty in - let env = { - fuel; - global_env; - reduce_memo_table; - read_back_memo_table; - local_env; - } in - reduce_ env t |> read_back env - - let weak_reduce global_env t = - let fuel = ref Params.fuel in - let reduce_memo_table = Hashtbl.create 42 in - let read_back_memo_table = Hashtbl.create 42 in - let local_env = Ident.Map.empty in - let env = { - fuel; - global_env; - reduce_memo_table; - read_back_memo_table; - local_env; - } in - reduce_ env t |> weak_read_back env -end - -module Local_reduce = - (* Note: this definition with [type env = unit] is only suitable for - reduction of toplevel shapes -- shapes of compilation units, - where free variables are only Comp_unit names. If we wanted to - reduce shapes inside module signatures, we would need to take - a typing environment as parameter. *) - Make_reduce(struct - type env = unit - let fuel = 10 - let read_unit_shape ~unit_name:_ = None - let find_shape _env _id = raise Not_found - end) - -let local_reduce shape = - Local_reduce.reduce () shape - -let dummy_mod = { uid = None; desc = Struct Item.Map.empty } - -let of_path ~find_shape ~namespace = +let dummy_mod = + { uid = None; desc = Struct Item.Map.empty; approximated = false } + +let of_path ~find_shape ~namespace path = + (* We need to handle the following cases: + Path of constructor: + M.t.C + Path of label: + M.t.lbl + Path of label of inline record: + M.t.C.lbl *) let rec aux : Sig_component_kind.t -> Path.t -> t = fun ns -> function | Pident id -> find_shape ns id - | Pdot (path, name) -> proj (aux Module path) (name, ns) + | Pdot (path, name) -> + let namespace : Sig_component_kind.t = + match (ns : Sig_component_kind.t) with + | Constructor -> Type + | Label -> Type + | _ -> Module + in + proj (aux namespace path) (name, ns) | Papply (p1, p2) -> app (aux Module p1) ~arg:(aux Module p2) | Pextra_ty (path, extra) -> begin match extra with - Pcstr_ty _ -> aux Type path + Pcstr_ty name -> proj (aux Type path) (name, Constructor) | Pext_ty -> aux Extension_constructor path end in - aux namespace + aux namespace path let for_persistent_unit s = { uid = Some (Uid.of_compilation_unit_id (Ident.create_persistent s)); - desc = Comp_unit s } + desc = Comp_unit s; approximated = false } -let leaf_for_unpack = { uid = None; desc = Leaf } +let leaf_for_unpack = { uid = None; desc = Leaf; approximated = false } let set_uid_if_none t uid = match t.uid with @@ -546,11 +312,21 @@ module Map = struct let item = Item.value id in Item.Map.add item (proj shape item) t - let add_type t id uid = Item.Map.add (Item.type_ id) (leaf uid) t + let add_type t id shape = Item.Map.add (Item.type_ id) shape t let add_type_proj t id shape = let item = Item.type_ id in Item.Map.add item (proj shape item) t + let add_constr t id shape = Item.Map.add (Item.constr id) shape t + let add_constr_proj t id shape = + let item = Item.constr id in + Item.Map.add item (proj shape item) t + + let add_label t id uid = Item.Map.add (Item.label id) (leaf uid) t + let add_label_proj t id shape = + let item = Item.label id in + Item.Map.add item (proj shape item) t + let add_module t id shape = Item.Map.add (Item.module_ id) shape t let add_module_proj t id shape = let item = Item.module_ id in @@ -562,8 +338,8 @@ module Map = struct let item = Item.module_type id in Item.Map.add item (proj shape item) t - let add_extcons t id uid = - Item.Map.add (Item.extension_constructor id) (leaf uid) t + let add_extcons t id shape = + Item.Map.add (Item.extension_constructor id) shape t let add_extcons_proj t id shape = let item = Item.extension_constructor id in Item.Map.add item (proj shape item) t diff --git a/src/ocaml/typing/shape.mli b/src/ocaml/typing/shape.mli index 9740a3ad2d..01b31d2575 100644 --- a/src/ocaml/typing/shape.mli +++ b/src/ocaml/typing/shape.mli @@ -13,6 +13,47 @@ (* *) (**************************************************************************) +(** Shapes are an abstract representation of modules' implementations which + allow the tracking of definitions through functor applications and other + module-level operations. + + The Shape of a compilation unit is elaborated during typing, partially + reduced (without loading external shapes) and written to the [cmt] file. + + External tools can retrieve the definition of any value (or type, or module, + etc) by following this procedure: + + - Build the Shape corresponding to the value's path: + [let shape = Env.shape_of_path ~namespace env path] + + - Instantiate the [Shape_reduce.Make] functor with a way to load shapes from + external units and to looks for shapes in the environment (usually using + [Env.shape_of_path]). + + - Completely reduce the shape: + [let shape = My_reduce.(weak_)reduce env shape] + + - The [Uid.t] stored in the reduced shape should be the one of the + definition. However, if the [approximate] field of the reduced shape is + [true] then the [Uid.t] will not correspond to the definition, but to the + closest parent module's uid. This happens when Shape reduction gets stuck, + for example when hitting first-class modules. + + - The location of the definition can be easily found with the + [cmt_format.cmt_uid_to_decl] table of the corresponding compilation unit. + + See: + - {{: https://icfp22.sigplan.org/details/mlfamilyworkshop-2022-papers/10/Module-Shapes-for-Modern-Tooling } + the design document} + - {{: https://www.lix.polytechnique.fr/Labo/Gabriel.Scherer/research/shapes/2022-ml-workshop-shapes-talk.pdf } + a talk about the reduction strategy +*) + +(** A [Uid.t] is associated to every declaration in signatures and + implementations. They uniquely identify bindings in the program. When + associated with these bindings' locations they are useful to external tools + when trying to jump to an identifier's declaration or definition. They are + stored to that effect in the [uid_to_decl] table of cmt files. *) module Uid : sig type t = private | Compilation_unit of string @@ -36,6 +77,8 @@ module Sig_component_kind : sig type t = | Value | Type + | Constructor + | Label | Module | Module_type | Extension_constructor @@ -48,35 +91,49 @@ module Sig_component_kind : sig val can_appear_in_types : t -> bool end +(** Shape's items are elements of a structure or, in the case of constructors + and labels, elements of a record or variants definition seen as a structure. + These structures model module components and nested types' constructors and + labels. *) module Item : sig - type t + type t = string * Sig_component_kind.t + val name : t -> string + val kind : t -> Sig_component_kind.t val make : string -> Sig_component_kind.t -> t val value : Ident.t -> t val type_ : Ident.t -> t + val constr : Ident.t -> t + val label : Ident.t -> t val module_ : Ident.t -> t val module_type : Ident.t -> t val extension_constructor : Ident.t -> t val class_ : Ident.t -> t val class_type : Ident.t -> t + val print : Format.formatter -> t -> unit + module Map : Map.S with type key = t end type var = Ident.t -type t = { uid: Uid.t option; desc: desc } +type t = { uid: Uid.t option; desc: desc; approximated: bool } and desc = | Var of var | Abs of var * t | App of t * t | Struct of t Item.Map.t + | Alias of t | Leaf | Proj of t * Item.t | Comp_unit of string + | Error of string val print : Format.formatter -> t -> unit +val strip_head_aliases : t -> t + (* Smart constructors *) val for_unnamed_functor_param : var @@ -86,6 +143,7 @@ val var : Uid.t -> Ident.t -> t val abs : ?uid:Uid.t -> var -> t -> t val app : ?uid:Uid.t -> t -> arg:t -> t val str : ?uid:Uid.t -> t Item.Map.t -> t +val alias : ?uid:Uid.t -> t -> t val proj : ?uid:Uid.t -> t -> Item.t -> t val leaf : Uid.t -> t @@ -105,16 +163,22 @@ module Map : sig val add_value : t -> Ident.t -> Uid.t -> t val add_value_proj : t -> Ident.t -> shape -> t - val add_type : t -> Ident.t -> Uid.t -> t + val add_type : t -> Ident.t -> shape -> t val add_type_proj : t -> Ident.t -> shape -> t + val add_constr : t -> Ident.t -> shape -> t + val add_constr_proj : t -> Ident.t -> shape -> t + + val add_label : t -> Ident.t -> Uid.t -> t + val add_label_proj : t -> Ident.t -> shape -> t + val add_module : t -> Ident.t -> shape -> t val add_module_proj : t -> Ident.t -> shape -> t val add_module_type : t -> Ident.t -> Uid.t -> t val add_module_type_proj : t -> Ident.t -> shape -> t - val add_extcons : t -> Ident.t -> Uid.t -> t + val add_extcons : t -> Ident.t -> shape -> t val add_extcons_proj : t -> Ident.t -> shape -> t val add_class : t -> Ident.t -> Uid.t -> t @@ -131,28 +195,3 @@ val of_path : namespace:Sig_component_kind.t -> Path.t -> t val set_uid_if_none : t -> Uid.t -> t - -(** The [Make_reduce] functor is used to generate a reduction function for - shapes. - - It is parametrized by: - - an environment and a function to find shapes by path in that environment - - a function to load the shape of an external compilation unit - - some fuel, which is used to bound recursion when dealing with recursive - shapes introduced by recursive modules. (FTR: merlin currently uses a - fuel of 10, which seems to be enough for most practical examples) -*) -module Make_reduce(Context : sig - type env - - val fuel : int - - val read_unit_shape : unit_name:string -> t option - - val find_shape : env -> Ident.t -> t - end) : sig - val reduce : Context.env -> t -> t - val weak_reduce : Context.env -> t -> t -end - -val local_reduce : t -> t diff --git a/src/ocaml/typing/shape_reduce.ml b/src/ocaml/typing/shape_reduce.ml new file mode 100644 index 0000000000..718b212133 --- /dev/null +++ b/src/ocaml/typing/shape_reduce.ml @@ -0,0 +1,347 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Ulysse Gérard, Thomas Refis, Tarides *) +(* Nathanaëlle Courant, OCamlPro *) +(* Gabriel Scherer, projet Picube, INRIA Paris *) +(* *) +(* Copyright 2021 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +open Shape + +type result = + | Resolved of Uid.t + | Resolved_alias of Uid.t list + | Unresolved of t + | Approximated of Uid.t option + | Internal_error_missing_uid + +let print_result fmt result = + match result with + | Resolved uid -> + Format.fprintf fmt "@[Resolved: %a@]@;" Uid.print uid + | Resolved_alias uids -> + Format.fprintf fmt "@[Resolved_alias: %a@]@;" + Format.(pp_print_list ~pp_sep:(fun fmt () -> fprintf fmt "@ -> ") + Uid.print) uids + | Unresolved shape -> + Format.fprintf fmt "@[Unresolved: %a@]@;" print shape + | Approximated (Some uid) -> + Format.fprintf fmt "@[Approximated: %a@]@;" Uid.print uid + | Approximated None -> + Format.fprintf fmt "@[Approximated: No uid@]@;" + | Internal_error_missing_uid -> + Format.fprintf fmt "@[Missing uid@]@;" + + +let find_shape env id = + let namespace = Shape.Sig_component_kind.Module in + Env.shape_of_path ~namespace env (Pident id) + +module Make(Params : sig + val fuel : int + val read_unit_shape : unit_name:string -> t option +end) = struct + (* We implement a strong call-by-need reduction, following an + evaluator from Nathanaelle Courant. *) + + type nf = { uid: Uid.t option; desc: nf_desc; approximated: bool } + and nf_desc = + | NVar of var + | NApp of nf * nf + | NAbs of local_env * var * t * delayed_nf + | NStruct of delayed_nf Item.Map.t + | NAlias of delayed_nf + | NProj of nf * Item.t + | NLeaf + | NComp_unit of string + | NError of string + + (* A type of normal forms for strong call-by-need evaluation. + The normal form of an abstraction + Abs(x, t) + is a closure + NAbs(env, x, t, dnf) + when [env] is the local environment, and [dnf] is a delayed + normal form of [t]. + + A "delayed normal form" is morally equivalent to (nf Lazy.t), but + we use a different representation that is compatible with + memoization (lazy values are not hashable/comparable by default + comparison functions): we represent a delayed normal form as + just a not-yet-computed pair [local_env * t] of a term in a + local environment -- we could also see this as a term under + an explicit substitution. This delayed thunked is "forced" + by calling the normalization function as usual, but duplicate + computations are precisely avoided by memoization. + *) + and delayed_nf = Thunk of local_env * t + + and local_env = delayed_nf option Ident.Map.t + (* When reducing in the body of an abstraction [Abs(x, body)], we + bind [x] to [None] in the environment. [Some v] is used for + actual substitutions, for example in [App(Abs(x, body), t)], when + [v] is a thunk that will evaluate to the normal form of [t]. *) + + let approx_nf nf = { nf with approximated = true } + + let in_memo_table memo_table memo_key f arg = + match Hashtbl.find memo_table memo_key with + | res -> res + | exception Not_found -> + let res = f arg in + Hashtbl.replace memo_table memo_key res; + res + + type env = { + fuel: int ref; + global_env: Env.t; + local_env: local_env; + reduce_memo_table: (local_env * t, nf) Hashtbl.t; + read_back_memo_table: (nf, t) Hashtbl.t; + } + + let bind env var shape = + { env with local_env = Ident.Map.add var shape env.local_env } + + let rec reduce_ env t = + let local_env = env.local_env in + let memo_key = (local_env, t) in + in_memo_table env.reduce_memo_table memo_key (reduce__ env) t + (* Memoization is absolutely essential for performance on this + problem, because the normal forms we build can in some real-world + cases contain an exponential amount of redundancy. Memoization + can avoid the repeated evaluation of identical subterms, + providing a large speedup, but even more importantly it + implicitly shares the memory of the repeated results, providing + much smaller normal forms (that blow up again if printed back + as trees). A functor-heavy file from Irmin has its shape normal + form decrease from 100Mio to 2.5Mio when memoization is enabled. + + Note: the local environment is part of the memoization key, while + it is defined using a type Ident.Map.t of non-canonical balanced + trees: two maps could have exactly the same items, but be + balanced differently and therefore hash differently, reducing + the effectivenss of memoization. + This could in theory happen, say, with the two programs + (fun x -> fun y -> ...) + and + (fun y -> fun x -> ...) + having "the same" local environments, with additions done in + a different order, giving non-structurally-equal trees. Should we + define our own hash functions to provide robust hashing on + environments? + + We believe that the answer is "no": this problem does not occur + in practice. We can assume that identifiers are unique on valid + typedtree fragments (identifier "stamps" distinguish + binding positions); in particular the two program fragments above + in fact bind *distinct* identifiers x (with different stamps) and + different identifiers y, so the environments are distinct. If two + environments are structurally the same, they must correspond to + the evaluation evnrionments of two sub-terms that are under + exactly the same scope of binders. So the two environments were + obtained by the same term traversal, adding binders in the same + order, giving the same balanced trees: the environments have the + same hash. +*) + + and reduce__ + ({fuel; global_env; local_env; _} as env) (t : t) = + let reduce env t = reduce_ env t in + let delay_reduce env t = Thunk (env.local_env, t) in + let force (Thunk (local_env, t)) = reduce { env with local_env } t in + let return desc = { uid = t.uid; desc; approximated = t.approximated } in + let rec force_aliases nf = match nf.desc with + | NAlias delayed_nf -> + let nf = force delayed_nf in + force_aliases nf + | _ -> nf + in + let reset_uid_if_new_binding t' = + match t.uid with + | None -> t' + | Some _ as uid -> { t' with uid } + in + if !fuel < 0 then approx_nf (return (NError "NoFuelLeft")) + else + match t.desc with + | Comp_unit unit_name -> + begin match Params.read_unit_shape ~unit_name with + | Some t -> reduce env t + | None -> return (NComp_unit unit_name) + end + | App(f, arg) -> + let f = reduce env f |> force_aliases in + begin match f.desc with + | NAbs(clos_env, var, body, _body_nf) -> + let arg = delay_reduce env arg in + let env = bind { env with local_env = clos_env } var (Some arg) in + reduce env body |> reset_uid_if_new_binding + | _ -> + let arg = reduce env arg in + return (NApp(f, arg)) + end + | Proj(str, item) -> + let str = reduce env str |> force_aliases in + let nored () = return (NProj(str, item)) in + begin match str.desc with + | NStruct (items) -> + begin match Item.Map.find item items with + | exception Not_found -> nored () + | nf -> force nf |> reset_uid_if_new_binding + end + | _ -> + nored () + end + | Abs(var, body) -> + let body_nf = delay_reduce (bind env var None) body in + return (NAbs(local_env, var, body, body_nf)) + | Var id -> + begin match Ident.Map.find id local_env with + (* Note: instead of binding abstraction-bound variables to + [None], we could unify it with the [Some v] case by + binding the bound variable [x] to [NVar x]. + + One reason to distinguish the situations is that we can + provide a different [Uid.t] location; for bound + variables, we use the [Uid.t] of the bound occurrence + (not the binding site), whereas for bound values we use + their binding-time [Uid.t]. *) + | None -> return (NVar id) + | Some def -> + begin match force def with + | { uid = Some _; _ } as nf -> nf + (* This var already has a binding uid *) + | { uid = None; _ } as nf -> { nf with uid = t.uid } + (* Set the var's binding uid *) + end + | exception Not_found -> + match find_shape global_env id with + | exception Not_found -> return (NVar id) + | res when res = t -> return (NVar id) + | res -> + decr fuel; + reduce env res + end + | Leaf -> return NLeaf + | Struct m -> + let mnf = Item.Map.map (delay_reduce env) m in + return (NStruct mnf) + | Alias t -> return (NAlias (delay_reduce env t)) + | Error s -> approx_nf (return (NError s)) + + and read_back env (nf : nf) : t = + in_memo_table env.read_back_memo_table nf (read_back_ env) nf + (* The [nf] normal form we receive may contain a lot of internal + sharing due to the use of memoization in the evaluator. We have + to memoize here again, otherwise the sharing is lost by mapping + over the term as a tree. *) + + and read_back_ env (nf : nf) : t = + { uid = nf.uid ; + desc = read_back_desc env nf.desc; + approximated = nf.approximated } + + and read_back_desc env desc = + let read_back nf = read_back env nf in + let read_back_force (Thunk (local_env, t)) = + read_back (reduce_ { env with local_env } t) in + match desc with + | NVar v -> + Var v + | NApp (nft, nfu) -> + App(read_back nft, read_back nfu) + | NAbs (_env, x, _t, nf) -> + Abs(x, read_back_force nf) + | NStruct nstr -> + Struct (Item.Map.map read_back_force nstr) + | NAlias nf -> Alias (read_back_force nf) + | NProj (nf, item) -> + Proj (read_back nf, item) + | NLeaf -> Leaf + | NComp_unit s -> Comp_unit s + | NError s -> Error s + + (* Sharing the memo tables is safe at the level of a compilation unit since + idents should be unique *) + let reduce_memo_table = Local_store.s_table Hashtbl.create 42 + let read_back_memo_table = Local_store.s_table Hashtbl.create 42 + + let reduce global_env t = + let fuel = ref Params.fuel in + let local_env = Ident.Map.empty in + let env = { + fuel; + global_env; + reduce_memo_table = !reduce_memo_table; + read_back_memo_table = !read_back_memo_table; + local_env; + } in + reduce_ env t |> read_back env + + let rec is_stuck_on_comp_unit (nf : nf) = + match nf.desc with + | NVar _ -> + (* This should not happen if we only reduce closed terms *) + false + | NApp (nf, _) | NProj (nf, _) -> is_stuck_on_comp_unit nf + | NStruct _ | NAbs _ -> false + | NAlias _ -> false + | NComp_unit _ -> true + | NError _ -> false + | NLeaf -> false + + let get_aliases_uids (t : t) = + let rec aux acc (t : t) = match t with + | { uid = Some uid; desc = Alias t; _ } -> aux (uid::acc) t + | { uid = Some uid; _ } -> Resolved_alias (List.rev (uid::acc)) + | _ -> Internal_error_missing_uid + in + aux [] t + + let reduce_for_uid global_env t = + let fuel = ref Params.fuel in + let local_env = Ident.Map.empty in + let env = { + fuel; + global_env; + reduce_memo_table = !reduce_memo_table; + read_back_memo_table = !read_back_memo_table; + local_env; + } in + let nf = reduce_ env t in + if is_stuck_on_comp_unit nf then + Unresolved (read_back env nf) + else match nf with + | { desc = NAlias _; approximated = false; _ } -> + get_aliases_uids (read_back env nf) + | { uid = Some uid; approximated = false; _ } -> + Resolved uid + | { uid; approximated = true; _ } -> + Approximated uid + | { uid = None; approximated = false; _ } -> + (* A missing Uid after a complete reduction means the Uid was first + missing in the shape which is a code error. Having the + [Missing_uid] reported will allow Merlin (or another tool working + with the index) to ask users to report the issue if it does happen. + *) + Internal_error_missing_uid +end + +module Local_reduce = + Make(struct + let fuel = 10 + let read_unit_shape ~unit_name:_ = None + end) + +let local_reduce = Local_reduce.reduce +let local_reduce_for_uid = Local_reduce.reduce_for_uid diff --git a/src/ocaml/typing/shape_reduce.mli b/src/ocaml/typing/shape_reduce.mli new file mode 100644 index 0000000000..5e409c3cd7 --- /dev/null +++ b/src/ocaml/typing/shape_reduce.mli @@ -0,0 +1,62 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Ulysse Gérard, Thomas Refis, Tarides *) +(* Nathanaëlle Courant, OCamlPro *) +(* Gabriel Scherer, projet Picube, INRIA Paris *) +(* *) +(* Copyright 2021 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** The result of reducing a shape and looking for its uid *) +type result = + | Resolved of Shape.Uid.t (** Shape reduction succeeded and a uid was found *) + | Resolved_alias of Shape.Uid.t list (** Reduction led to an alias chain *) + | Unresolved of Shape.t (** Result still contains [Comp_unit] terms *) + | Approximated of Shape.Uid.t option + (** Reduction failed: it can arrive with first-clsss modules for example *) + | Internal_error_missing_uid + (** Reduction succeeded but no uid was found, this should never happen *) + +val print_result : Format.formatter -> result -> unit + +(** The [Make] functor is used to generate a reduction function for + shapes. + + It is parametrized by: + - a function to load the shape of an external compilation unit + - some fuel, which is used to bound recursion when dealing with recursive + shapes introduced by recursive modules. (FTR: merlin currently uses a + fuel of 10, which seems to be enough for most practical examples) + + Usage warning: To ensure good performances, every reduction made with the + same instance of that functor share the same ident-based memoization tables. + Such an instance should only be used to perform reduction inside a unique + compilation unit to prevent conflicting entries in these memoization tables. +*) +module Make(_ : sig + val fuel : int + + val read_unit_shape : unit_name:string -> Shape.t option + end) : sig + val reduce : Env.t -> Shape.t -> Shape.t + + (** Perform weak reduction and return the head's uid if any. If reduction was + incomplete the partially reduced shape is returned. *) + val reduce_for_uid : Env.t -> Shape.t -> result +end + +(** [local_reduce] will not reduce shapes that require loading external + compilation units. *) +val local_reduce : Env.t -> Shape.t -> Shape.t + +(** [local_reduce_for_uid] will not reduce shapes that require loading external + compilation units. *) +val local_reduce_for_uid : Env.t -> Shape.t -> result diff --git a/src/ocaml/typing/subst.ml b/src/ocaml/typing/subst.ml index deef66768e..de9bf07144 100644 --- a/src/ocaml/typing/subst.ml +++ b/src/ocaml/typing/subst.ml @@ -161,7 +161,68 @@ let norm = function | Tunivar None -> tunivar_none | d -> d -let ctype_apply_env_empty = ref (fun _ -> assert false) +let apply_type_function params args body = + For_copy.with_scope (fun copy_scope -> + List.iter2 + (fun param arg -> + For_copy.redirect_desc copy_scope param (Tsubst (arg, None))) + params args; + let rec copy ty = + assert (get_level ty = generic_level); + match get_desc ty with + | Tsubst (ty, _) -> ty + | Tvariant row -> + let t = newgenstub ~scope:(get_scope ty) in + For_copy.redirect_desc copy_scope ty (Tsubst (t, None)); + let more = row_more row in + assert (get_level more = generic_level); + let mored = get_desc more in + (* We must substitute in a subtle way *) + (* Tsubst takes a tuple containing the row var and the variant *) + let desc' = + match mored with + | Tsubst (_, Some ty2) -> + (* This variant type has been already copied *) + (* Change the stub to avoid Tlink in the new type *) + For_copy.redirect_desc copy_scope ty (Tsubst (ty2, None)); + Tlink ty2 + | _ -> + let more' = + match mored with + Tsubst (ty, None) -> ty + (* TODO: is this case possible? + possibly an interaction with (copy more) below? *) + | Tconstr _ | Tnil -> + copy more + | Tvar _ | Tunivar _ -> + newgenty mored + | _ -> assert false + in + let row = + match get_desc more' with (* PR#6163 *) + Tconstr (x,_,_) when not (is_fixed row) -> + let Row {fields; more; closed; name} = row_repr row in + create_row ~fields ~more ~closed ~name + ~fixed:(Some (Reified x)) + | _ -> row + in + (* Register new type first for recursion *) + For_copy.redirect_desc copy_scope more + (Tsubst(more', Some t)); + (* Return a new copy *) + Tvariant (copy_row copy true row false more') + in + Transient_expr.set_stub_desc t desc'; + t + | desc -> + let t = newgenstub ~scope:(get_scope ty) in + For_copy.redirect_desc copy_scope ty (Tsubst (t, None)); + let desc' = copy_type_desc copy desc in + Transient_expr.set_stub_desc t desc'; + t + in + copy body) + (* Similar to [Ctype.nondep_type_rec]. *) let rec typexp copy_scope s ty = @@ -210,7 +271,7 @@ let rec typexp copy_scope s ty = | exception Not_found -> Tconstr(type_path s p, args, ref Mnil) | Path _ -> Tconstr(type_path s p, args, ref Mnil) | Type_function { params; body } -> - Tlink (!ctype_apply_env_empty params body args) + Tlink (apply_type_function params args body) end | Tpackage(p, fl) -> Tpackage(modtype_path s p, @@ -314,7 +375,7 @@ let type_declaration' copy_scope s decl = type_arity = decl.type_arity; type_kind = begin match decl.type_kind with - Type_abstract -> Type_abstract + Type_abstract r -> Type_abstract r | Type_variant (cstrs, rep) -> Type_variant (List.map (constructor_declaration copy_scope s) cstrs, rep) diff --git a/src/ocaml/typing/subst.mli b/src/ocaml/typing/subst.mli index 3a1c85c871..d278d01c24 100644 --- a/src/ocaml/typing/subst.mli +++ b/src/ocaml/typing/subst.mli @@ -85,11 +85,6 @@ val module_declaration: scoping -> t -> module_declaration -> module_declaration apply (compose s1 s2) x = apply s2 (apply s1 x) *) val compose: t -> t -> t -(* A forward reference to be filled in ctype.ml. *) -val ctype_apply_env_empty: - (type_expr list -> type_expr -> type_expr list -> type_expr) ref - - module Lazy : sig type module_decl = { diff --git a/src/ocaml/typing/tast_iterator.ml b/src/ocaml/typing/tast_iterator.ml index 049dded4ff..6831fc1783 100644 --- a/src/ocaml/typing/tast_iterator.ml +++ b/src/ocaml/typing/tast_iterator.ml @@ -62,6 +62,7 @@ type iterator = value_bindings: iterator -> (rec_flag * value_binding list) -> unit; value_description: iterator -> value_description -> unit; with_constraint: iterator -> with_constraint -> unit; + item_declaration: iterator -> item_declaration -> unit; } let iter_snd f (_, y) = f y @@ -92,18 +93,23 @@ let class_infos sub f x = f x.ci_expr let module_type_declaration sub x = + sub.item_declaration sub (Module_type x); sub.location sub x.mtd_loc; sub.attributes sub x.mtd_attributes; iter_loc sub x.mtd_name; Option.iter (sub.module_type sub) x.mtd_type -let module_declaration sub {md_loc; md_name; md_type; md_attributes; _} = +let module_declaration sub md = + let {md_loc; md_name; md_type; md_attributes; _} = md in + sub.item_declaration sub (Module md); sub.location sub md_loc; sub.attributes sub md_attributes; iter_loc sub md_name; sub.module_type sub md_type -let module_substitution sub {ms_loc; ms_name; ms_txt; ms_attributes; _} = +let module_substitution sub ms = + let {ms_loc; ms_name; ms_txt; ms_attributes; _} = ms in + sub.item_declaration sub (Module_substitution ms); sub.location sub ms_loc; sub.attributes sub ms_attributes; iter_loc sub ms_name; @@ -115,9 +121,11 @@ let include_infos sub f {incl_loc; incl_mod; incl_attributes; _} = f incl_mod let class_type_declaration sub x = + sub.item_declaration sub (Class_type x); class_infos sub (sub.class_type sub) x let class_declaration sub x = + sub.item_declaration sub (Class x); class_infos sub (sub.class_expr sub) x let structure_item sub {str_loc; str_desc; str_env; _} = @@ -143,12 +151,14 @@ let structure_item sub {str_loc; str_desc; str_env; _} = | Tstr_attribute attr -> sub.attribute sub attr let value_description sub x = + sub.item_declaration sub (Value x); sub.location sub x.val_loc; sub.attributes sub x.val_attributes; iter_loc sub x.val_name; sub.typ sub x.val_desc -let label_decl sub {ld_loc; ld_name; ld_type; ld_attributes; _} = +let label_decl sub ({ld_loc; ld_name; ld_type; ld_attributes; _} as ld) = + sub.item_declaration sub (Label ld); sub.location sub ld_loc; sub.attributes sub ld_attributes; iter_loc sub ld_name; @@ -159,6 +169,7 @@ let constructor_args sub = function | Cstr_record l -> List.iter (label_decl sub) l let constructor_decl sub x = + sub.item_declaration sub (Constructor x); sub.location sub x.cd_loc; sub.attributes sub x.cd_attributes; iter_loc sub x.cd_name; @@ -173,6 +184,7 @@ let type_kind sub = function | Ttype_open -> () let type_declaration sub x = + sub.item_declaration sub (Type x); sub.location sub x.typ_loc; sub.attributes sub x.typ_attributes; iter_loc sub x.typ_name; @@ -200,7 +212,9 @@ let type_exception sub {tyexn_loc; tyexn_constructor; tyexn_attributes; _} = sub.attributes sub tyexn_attributes; sub.extension_constructor sub tyexn_constructor -let extension_constructor sub {ext_loc; ext_name; ext_kind; ext_attributes; _} = +let extension_constructor sub ec = + let {ext_loc; ext_name; ext_kind; ext_attributes; _} = ec in + sub.item_declaration sub (Extension_constructor ec); sub.location sub ext_loc; sub.attributes sub ext_attributes; iter_loc sub ext_name; @@ -229,7 +243,7 @@ let pat List.iter (pat_extra sub) extra; match pat_desc with | Tpat_any -> () - | Tpat_var (_, s) -> iter_loc sub s + | Tpat_var (_, s, _) -> iter_loc sub s | Tpat_constant _ -> () | Tpat_tuple l -> List.iter (sub.pat sub) l | Tpat_construct (lid, _, l, vto) -> @@ -241,7 +255,7 @@ let pat | Tpat_record (l, _) -> List.iter (fun (lid, _, i) -> iter_loc sub lid; sub.pat sub i) l | Tpat_array l -> List.iter (sub.pat sub) l - | Tpat_alias (p, _, s) -> sub.pat sub p; iter_loc sub s + | Tpat_alias (p, _, s, _) -> sub.pat sub p; iter_loc sub s | Tpat_lazy p -> sub.pat sub p | Tpat_value p -> sub.pat sub (p :> pattern) | Tpat_exception p -> sub.pat sub p @@ -249,16 +263,36 @@ let pat sub.pat sub p1; sub.pat sub p2 +let extra sub = function + | Texp_constraint cty -> sub.typ sub cty + | Texp_coerce (cty1, cty2) -> + Option.iter (sub.typ sub) cty1; + sub.typ sub cty2 + | Texp_newtype _ | Texp_newtype' _ -> () + | Texp_poly cto -> Option.iter (sub.typ sub) cto + +let function_param sub fp = + sub.location sub fp.fp_loc; + match fp.fp_kind with + | Tparam_pat pat -> sub.pat sub pat + | Tparam_optional_default (pat, default_arg) -> + sub.pat sub pat; + sub.expr sub default_arg + +let function_body sub body = + match[@warning "+9"] body with + | Tfunction_body body -> + sub.expr sub body + | Tfunction_cases + { cases; loc; exp_extra; attributes; partial = _; param = _ } + -> + List.iter (sub.case sub) cases; + sub.location sub loc; + Option.iter (extra sub) exp_extra; + sub.attributes sub attributes + let expr sub {exp_loc; exp_extra; exp_desc; exp_env; exp_attributes; _} = - let extra = function - | Texp_constraint cty -> sub.typ sub cty - | Texp_coerce (cty1, cty2) -> - Option.iter (sub.typ sub) cty1; - sub.typ sub cty2 - | Texp_newtype _ -> () - | Texp_newtype' _ -> () - | Texp_poly cto -> Option.iter (sub.typ sub) cto - in + let extra x = extra sub x in sub.location sub exp_loc; sub.attributes sub exp_attributes; List.iter (fun (e, loc, _) -> extra e; sub.location sub loc) exp_extra; @@ -269,8 +303,9 @@ let expr sub {exp_loc; exp_extra; exp_desc; exp_env; exp_attributes; _} = | Texp_let (rec_flag, list, exp) -> sub.value_bindings sub (rec_flag, list); sub.expr sub exp - | Texp_function {cases; _} -> - List.iter (sub.case sub) cases + | Texp_function (params, body) -> + List.iter (function_param sub) params; + function_body sub body | Texp_apply (exp, list) -> sub.expr sub exp; List.iter (fun (_, o) -> Option.iter (sub.expr sub) o) list @@ -379,6 +414,7 @@ let signature_item sub {sig_loc; sig_desc; sig_env; _} = | Tsig_attribute _ -> () let class_description sub x = + sub.item_declaration sub (Class_type x); class_infos sub (sub.class_type sub) x let functor_parameter sub = function @@ -464,7 +500,8 @@ let module_expr sub {mod_loc; mod_desc; mod_env; mod_attributes; _} = sub.module_coercion sub c | Tmod_unpack (exp, _) -> sub.expr sub exp -let module_binding sub {mb_loc; mb_name; mb_expr; mb_attributes; _} = +let module_binding sub ({mb_loc; mb_name; mb_expr; mb_attributes; _} as mb) = + sub.item_declaration sub (Module_binding mb); sub.location sub mb_loc; sub.attributes sub mb_attributes; iter_loc sub mb_name; @@ -551,6 +588,9 @@ let typ sub {ctyp_loc; ctyp_desc; ctyp_env; ctyp_attributes; _} = | Ttyp_variant (list, _, _) -> List.iter (sub.row_field sub) list | Ttyp_poly (_, ct) -> sub.typ sub ct | Ttyp_package pack -> sub.package_type sub pack + | Ttyp_open (_, mod_ident, t) -> + iter_loc sub mod_ident; + sub.typ sub t let class_structure sub {cstr_self; cstr_fields; _} = sub.pat sub cstr_self; @@ -594,7 +634,8 @@ let case sub {c_lhs; c_guard; c_rhs} = Option.iter (sub.expr sub) c_guard; sub.expr sub c_rhs -let value_binding sub {vb_loc; vb_pat; vb_expr; vb_attributes; _} = +let value_binding sub ({vb_loc; vb_pat; vb_expr; vb_attributes; _} as vb) = + sub.item_declaration sub (Value_binding vb); sub.location sub vb_loc; sub.attributes sub vb_attributes; sub.pat sub vb_pat; @@ -602,6 +643,8 @@ let value_binding sub {vb_loc; vb_pat; vb_expr; vb_attributes; _} = let env _sub _ = () +let item_declaration _sub _ = () + let default_iterator = { attribute; @@ -648,4 +691,5 @@ let default_iterator = value_bindings; value_description; with_constraint; + item_declaration; } diff --git a/src/ocaml/typing/tast_iterator.mli b/src/ocaml/typing/tast_iterator.mli index 96352fc351..38cd4eac94 100644 --- a/src/ocaml/typing/tast_iterator.mli +++ b/src/ocaml/typing/tast_iterator.mli @@ -66,6 +66,7 @@ type iterator = value_bindings: iterator -> (rec_flag * value_binding list) -> unit; value_description: iterator -> value_description -> unit; with_constraint: iterator -> with_constraint -> unit; + item_declaration: iterator -> item_declaration -> unit; } val default_iterator: iterator diff --git a/src/ocaml/typing/tast_mapper.ml b/src/ocaml/typing/tast_mapper.ml index 500c07c4ab..bcb0461741 100644 --- a/src/ocaml/typing/tast_mapper.ml +++ b/src/ocaml/typing/tast_mapper.ml @@ -279,7 +279,7 @@ let pat match x.pat_desc with | Tpat_any | Tpat_constant _ -> x.pat_desc - | Tpat_var (id, s) -> Tpat_var (id, map_loc sub s) + | Tpat_var (id, s, uid) -> Tpat_var (id, map_loc sub s, uid) | Tpat_tuple l -> Tpat_tuple (List.map (sub.pat sub) l) | Tpat_construct (loc, cd, l, vto) -> let vto = Option.map (fun (vl,cty) -> @@ -290,7 +290,8 @@ let pat | Tpat_record (l, closed) -> Tpat_record (List.map (tuple3 (map_loc sub) id (sub.pat sub)) l, closed) | Tpat_array l -> Tpat_array (List.map (sub.pat sub) l) - | Tpat_alias (p, id, s) -> Tpat_alias (sub.pat sub p, id, map_loc sub s) + | Tpat_alias (p, id, s, uid) -> + Tpat_alias (sub.pat sub p, id, map_loc sub s, uid) | Tpat_lazy p -> Tpat_lazy (sub.pat sub p) | Tpat_value p -> (as_computation_pattern (sub.pat sub (p :> pattern))).pat_desc @@ -302,16 +303,45 @@ let pat let pat_attributes = sub.attributes sub x.pat_attributes in {x with pat_loc; pat_extra; pat_desc; pat_env; pat_attributes} -let expr sub x = - let extra = function - | Texp_constraint cty -> - Texp_constraint (sub.typ sub cty) - | Texp_coerce (cty1, cty2) -> - Texp_coerce (Option.map (sub.typ sub) cty1, sub.typ sub cty2) - | Texp_newtype _ as d -> d - | Texp_newtype' _ as d -> d - | Texp_poly cto -> Texp_poly (Option.map (sub.typ sub) cto) +let function_param sub fp = + let fp_kind = + match fp.fp_kind with + | Tparam_pat pat -> Tparam_pat (sub.pat sub pat) + | Tparam_optional_default (pat, expr) -> + let pat = sub.pat sub pat in + let expr = sub.expr sub expr in + Tparam_optional_default (pat, expr) in + let fp_loc = sub.location sub fp.fp_loc in + { fp_kind; + fp_param = fp.fp_param; + fp_arg_label = fp.fp_arg_label; + fp_partial = fp.fp_partial; + fp_newtypes = fp.fp_newtypes; + fp_loc; + } + +let extra sub = function + | Texp_constraint cty -> + Texp_constraint (sub.typ sub cty) + | Texp_coerce (cty1, cty2) -> + Texp_coerce (Option.map (sub.typ sub) cty1, sub.typ sub cty2) + | (Texp_newtype _ | Texp_newtype' _) as d -> d + | Texp_poly cto -> Texp_poly (Option.map (sub.typ sub) cto) + +let function_body sub body = + match body with + | Tfunction_body body -> + Tfunction_body (sub.expr sub body) + | Tfunction_cases { cases; partial; param; loc; exp_extra; attributes } -> + let loc = sub.location sub loc in + let cases = List.map (sub.case sub) cases in + let exp_extra = Option.map (extra sub) exp_extra in + let attributes = sub.attributes sub attributes in + Tfunction_cases { cases; partial; param; loc; exp_extra; attributes } + +let expr sub x = + let extra x = extra sub x in let exp_loc = sub.location sub x.exp_loc in let exp_extra = List.map (tuple3 extra (sub.location sub) id) x.exp_extra in let exp_env = sub.env sub x.exp_env in @@ -323,9 +353,10 @@ let expr sub x = | Texp_let (rec_flag, list, exp) -> let (rec_flag, list) = sub.value_bindings sub (rec_flag, list) in Texp_let (rec_flag, list, sub.expr sub exp) - | Texp_function { arg_label; param; cases; partial; } -> - let cases = List.map (sub.case sub) cases in - Texp_function { arg_label; param; cases; partial; } + | Texp_function (params, body) -> + let params = List.map (function_param sub) params in + let body = function_body sub body in + Texp_function (params, body) | Texp_apply (exp, list) -> Texp_apply ( sub.expr sub exp, @@ -752,6 +783,8 @@ let typ sub x = Ttyp_poly (sl, sub.typ sub ct) | Ttyp_package pack -> Ttyp_package (sub.package_type sub pack) + | Ttyp_open (path, mod_ident, t) -> + Ttyp_open (path, map_loc sub mod_ident, sub.typ sub t) in let ctyp_attributes = sub.attributes sub x.ctyp_attributes in {x with ctyp_loc; ctyp_desc; ctyp_env; ctyp_attributes} @@ -825,7 +858,8 @@ let value_binding sub x = let vb_pat = sub.pat sub x.vb_pat in let vb_expr = sub.expr sub x.vb_expr in let vb_attributes = sub.attributes sub x.vb_attributes in - {vb_loc; vb_pat; vb_expr; vb_attributes} + let vb_rec_kind = x.vb_rec_kind in + {vb_loc; vb_pat; vb_expr; vb_attributes; vb_rec_kind} let env _sub x = x diff --git a/src/ocaml/typing/typeclass.ml b/src/ocaml/typing/typeclass.ml index 82b8c55251..0c14185f47 100644 --- a/src/ocaml/typing/typeclass.ml +++ b/src/ocaml/typing/typeclass.ml @@ -21,6 +21,7 @@ open Typecore open Typetexp open Format + type 'a class_info = { cls_id : Ident.t; cls_id_loc : string loc; @@ -268,9 +269,15 @@ let type_constraint val_env sty sty' loc = let make_method loc cl_num expr = let open Ast_helper in let mkid s = mkloc s loc in - Exp.fun_ ~loc:expr.pexp_loc Nolabel None - (Pat.alias ~loc (Pat.var ~loc (mkid "self-*")) (mkid ("self-" ^ cl_num))) - expr + let pat = + Pat.alias ~loc (Pat.var ~loc (mkid "self-*")) (mkid ("self-" ^ cl_num)) + in + Exp.function_ ~loc:expr.pexp_loc + [ { pparam_desc = Pparam_val (Nolabel, None, pat); + pparam_loc = pat.ppat_loc; + } + ] + None (Pfunction_body expr) (*******************************) @@ -772,7 +779,7 @@ let rec class_field_first_pass self_loc cl_num sign self_scope acc cf = Ctype.unify val_env (Ctype.newty (Tpoly (ty', []))) ty; Ctype.unify val_env (type_approx val_env sbody) ty' | Tpoly (ty1, tl) -> - let _, ty1' = Ctype.instance_poly false tl ty1 in + let _, ty1' = Ctype.instance_poly ~fixed:false tl ty1 in let ty2 = type_approx val_env sbody in Ctype.unify val_env ty2 ty1' | _ -> assert false @@ -1175,7 +1182,7 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = in let partial = let dummy = type_exp val_env (Ast_helper.Exp.unreachable ()) in - Typecore.check_partial Modules_rejected val_env pat.pat_type pat.pat_loc + Typecore.check_partial val_env pat.pat_type pat.pat_loc [{c_lhs = pat; c_guard = None; c_rhs = dummy}] in let cl = @@ -1302,7 +1309,7 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = Typecore.type_let In_class_def val_env rec_flag sdefs in let (vals, met_env) = List.fold_right - (fun (id, _id_loc, _typ) (vals, met_env) -> + (fun (id, _id_loc, _typ, _uid) (vals, met_env) -> let path = Pident id in (* do not mark the value as used *) let vd = Env.find_value path val_env in @@ -1335,8 +1342,9 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = ([], met_env) in let cl = class_expr cl_num val_env met_env virt self_scope scl' in - let () = if rec_flag = Recursive then - check_recursive_bindings val_env defs + let defs = match rec_flag with + | Recursive -> annotate_recursive_bindings val_env defs + | Nonrecursive -> defs in rc {cl_desc = Tcl_let (rec_flag, defs, vals, cl); cl_loc = scl.pcl_loc; @@ -1440,7 +1448,7 @@ let temp_abbrev loc arity uid = let ty_td = {type_params = !params; type_arity = arity; - type_kind = Type_abstract; + type_kind = Type_abstract Definition; type_private = Public; type_manifest = Some ty; type_variance = Variance.unknown_signature ~injective:false ~arity; @@ -1664,7 +1672,7 @@ let class_infos define_class kind { type_params = obj_params; type_arity = arity; - type_kind = Type_abstract; + type_kind = Type_abstract Definition; type_private = Public; type_manifest = Some obj_ty; type_variance = Variance.unknown_signature ~injective:false ~arity; @@ -1974,12 +1982,19 @@ let approx_class_declarations env sdecls = open Format -let non_virtual_string_of_kind = function +let non_virtual_string_of_kind : kind -> string = function | Object -> "object" | Class -> "non-virtual class" | Class_type -> "non-virtual class type" -let report_error env ppf = function +module Style=Misc.Style + +let report_error env ppf = + let pp_args ppf args = + let args = List.map (Printtyp.tree_of_typexp Type) args in + Style.as_inline_code !Oprint.out_type_args ppf args + in + function | Repeated_parameter -> fprintf ppf "A type parameter occurs several times" | Unconsistent_constraint err -> @@ -1991,50 +2006,58 @@ let report_error env ppf = function | Field_type_mismatch (k, m, err) -> Printtyp.report_unification_error ppf env err (function ppf -> - fprintf ppf "The %s %s@ has type" k m) + fprintf ppf "The %s %a@ has type" k Style.inline_code m) (function ppf -> fprintf ppf "but is expected to have type") | Unexpected_field (ty, lab) -> fprintf ppf "@[@[<2>This object is expected to have type :@ %a@]\ - @ This type does not have a method %s." - Printtyp.type_expr ty lab + @ This type does not have a method %a." + (Style.as_inline_code Printtyp.type_expr) ty + Style.inline_code lab | Structure_expected clty -> fprintf ppf "@[This class expression is not a class structure; it has type@ %a@]" - Printtyp.class_type clty + (Style.as_inline_code Printtyp.class_type) clty | Cannot_apply _ -> fprintf ppf "This class expression is not a class function, it cannot be applied" | Apply_wrong_label l -> - let mark_label = function - | Nolabel -> "out label" - | l -> sprintf " label %s" (Btype.prefixed_label_name l) in - fprintf ppf "This argument cannot be applied with%s" (mark_label l) + let mark_label ppf = function + | Nolabel -> fprintf ppf "without label" + | l -> fprintf ppf "with label %a" + Style.inline_code (Btype.prefixed_label_name l) + in + fprintf ppf "This argument cannot be applied %a" mark_label l | Pattern_type_clash ty -> (* XXX Trace *) (* XXX Revoir message d'erreur | Improve error message *) fprintf ppf "@[%s@ %a@]" "This pattern cannot match self: it only matches values of type" - Printtyp.type_expr ty + (Style.as_inline_code Printtyp.type_expr) ty | Unbound_class_2 cl -> fprintf ppf "@[The class@ %a@ is not yet completely defined@]" - Printtyp.longident cl + (Style.as_inline_code Printtyp.longident) cl | Unbound_class_type_2 cl -> fprintf ppf "@[The class type@ %a@ is not yet completely defined@]" - Printtyp.longident cl + (Style.as_inline_code Printtyp.longident) cl | Abbrev_type_clash (abbrev, actual, expected) -> (* XXX Afficher une trace ? | Print a trace? *) Printtyp.prepare_for_printing [abbrev; actual; expected]; fprintf ppf "@[The abbreviation@ %a@ expands to type@ %a@ \ but is used with type@ %a@]" - !Oprint.out_type (Printtyp.tree_of_typexp Type abbrev) - !Oprint.out_type (Printtyp.tree_of_typexp Type actual) - !Oprint.out_type (Printtyp.tree_of_typexp Type expected) + (Style.as_inline_code !Oprint.out_type) + (Printtyp.tree_of_typexp Type abbrev) + (Style.as_inline_code !Oprint.out_type) + (Printtyp.tree_of_typexp Type actual) + (Style.as_inline_code !Oprint.out_type) + (Printtyp.tree_of_typexp Type expected) | Constructor_type_mismatch (c, err) -> Printtyp.report_unification_error ppf env err (function ppf -> - fprintf ppf "The expression \"new %s\" has type" c) + fprintf ppf "The expression %a has type" + Style.inline_code ("new " ^ c) + ) (function ppf -> fprintf ppf "but is used with type") | Virtual_class (kind, mets, vals) -> @@ -2049,18 +2072,18 @@ let report_error env ppf = function "@[This %s has virtual %s.@ \ @[<2>The following %s are virtual : %a@]@]" kind missings missings - (pp_print_list ~pp_sep:pp_print_space pp_print_string) (mets @ vals) + (pp_print_list ~pp_sep:pp_print_space Style.inline_code) (mets @ vals) | Undeclared_methods(kind, mets) -> let kind = non_virtual_string_of_kind kind in fprintf ppf "@[This %s has undeclared virtual methods.@ \ @[<2>The following methods were not declared : %a@]@]" - kind (pp_print_list ~pp_sep:pp_print_space pp_print_string) mets + kind (pp_print_list ~pp_sep:pp_print_space Style.inline_code) mets | Parameter_arity_mismatch(lid, expected, provided) -> fprintf ppf "@[The class constructor %a@ expects %i type argument(s),@ \ but is here applied to %i type argument(s)@]" - Printtyp.longident lid expected provided + (Style.as_inline_code Printtyp.longident) lid expected provided | Parameter_mismatch err -> Printtyp.report_unification_error ppf env err (function ppf -> @@ -2072,22 +2095,23 @@ let report_error env ppf = function fprintf ppf "@[The abbreviation %a@ is used with parameter(s)@ %a@ \ which are incompatible with constraint(s)@ %a@]" - Printtyp.ident id - !Oprint.out_type_args (List.map (Printtyp.tree_of_typexp Type) params) - !Oprint.out_type_args (List.map (Printtyp.tree_of_typexp Type) cstrs) + (Style.as_inline_code Printtyp.ident) id + pp_args params + pp_args cstrs | Bad_class_type_parameters (id, params, cstrs) -> + let pp_hash ppf id = fprintf ppf "#%a" Printtyp.ident id in Printtyp.prepare_for_printing (params @ cstrs); fprintf ppf - "@[The class type #%a@ is used with parameter(s)@ %a,@ \ + "@[The class type %a@ is used with parameter(s)@ %a,@ \ whereas the class type definition@ constrains@ \ those parameters to be@ %a@]" - Printtyp.ident id - !Oprint.out_type_args (List.map (Printtyp.tree_of_typexp Type) params) - !Oprint.out_type_args (List.map (Printtyp.tree_of_typexp Type) cstrs) + (Style.as_inline_code pp_hash) id + pp_args params + pp_args cstrs | Class_match_failure error -> Includeclass.report_error Type ppf error | Unbound_val lab -> - fprintf ppf "Unbound instance variable %s" lab + fprintf ppf "Unbound instance variable %a" Style.inline_code lab | Unbound_type_var (printer, reason) -> let print_reason ppf { Ctype.free_variable; meth; meth_ty; } = let (ty0, kind) = free_variable in @@ -2098,11 +2122,12 @@ let report_error env ppf = function in Printtyp.add_type_to_preparation meth_ty; Printtyp.add_type_to_preparation ty1; + let pp_type ppf ty = Style.as_inline_code !Oprint.out_type ppf ty in fprintf ppf - "The method %s@ has type@;<1 2>%a@ where@ %a@ is unbound" - meth - !Oprint.out_type (Printtyp.tree_of_typexp Type meth_ty) - !Oprint.out_type (Printtyp.tree_of_typexp Type ty0) + "The method %a@ has type@;<1 2>%a@ where@ %a@ is unbound" + Style.inline_code meth + pp_type (Printtyp.tree_of_typexp Type meth_ty) + pp_type (Printtyp.tree_of_typexp Type ty0) in fprintf ppf "@[@[Some type variables are unbound in this type:@;<1 2>%t@]@ \ @@ -2114,9 +2139,10 @@ let report_error env ppf = function fprintf ppf "@[The type of this class,@ %a,@ \ contains the non-generalizable type variable(s): %a.@ %a@]" - (Printtyp.class_declaration id) clty + (Style.as_inline_code @@ Printtyp.class_declaration id) clty (pp_print_list ~pp_sep:(fun f () -> fprintf f ",@ ") - Printtyp.prepared_type_scheme) nongen_vars + (Style.as_inline_code Printtyp.prepared_type_scheme) + ) nongen_vars Misc.print_see_manual manual_ref | Cannot_coerce_self ty -> @@ -2124,12 +2150,12 @@ let report_error env ppf = function "@[The type of self cannot be coerced to@ \ the type of the current class:@ %a.@.\ Some occurrences are contravariant@]" - Printtyp.type_scheme ty + (Style.as_inline_code Printtyp.type_scheme) ty | Non_collapsable_conjunction (id, clty, err) -> fprintf ppf "@[The type of this class,@ %a,@ \ contains non-collapsible conjunctive types in constraints.@ %t@]" - (Printtyp.class_declaration id) clty + (Style.as_inline_code @@ Printtyp.class_declaration id) clty (fun ppf -> Printtyp.report_unification_error ppf env err (fun ppf -> fprintf ppf "Type") (fun ppf -> fprintf ppf "is not compatible with type") @@ -2148,19 +2174,23 @@ let report_error env ppf = function "@[The instance variable is %s;@ it cannot be redefined as %s@]" mut1 mut2 | No_overriding (_, "") -> - fprintf ppf "@[This inheritance does not override any method@ %s@]" - "instance variable" + fprintf ppf + "@[This inheritance does not override any methods@ \ + or instance variables@ but is explicitly marked as@ \ + overriding with %a.@]" + Style.inline_code "!" | No_overriding (kind, name) -> - fprintf ppf "@[The %s `%s'@ has no previous definition@]" kind name + fprintf ppf "@[The %s %a@ has no previous definition@]" kind + Style.inline_code name | Duplicate (kind, name) -> - fprintf ppf "@[The %s `%s'@ has multiple definitions in this object@]" - kind name + fprintf ppf "@[The %s %a@ has multiple definitions in this object@]" + kind Style.inline_code name | Closing_self_type sign -> fprintf ppf "@[Cannot close type of object literal:@ %a@,\ it has been unified with the self type of a class that is not yet@ \ completely defined.@]" - Printtyp.type_scheme sign.csig_self + (Style.as_inline_code Printtyp.type_scheme) sign.csig_self let report_error env ppf err = Printtyp.wrap_printing_env ~error:true diff --git a/src/ocaml/typing/typecore.ml b/src/ocaml/typing/typecore.ml index 5240dd01f3..e579f4ee27 100644 --- a/src/ocaml/typing/typecore.ml +++ b/src/ocaml/typing/typecore.ml @@ -15,6 +15,9 @@ (* Typechecking for the core language *) +[@@@ocaml.warning "-60"] module Str = Ast_helper.Str (* For ocamldep *) +[@@@ocaml.warning "+60"] + open Misc open Asttypes open Parsetree @@ -25,6 +28,8 @@ open Ctype let raise_error = Msupport.raise_error +module Style = Misc.Style + type type_forcing_context = | If_conditional | If_no_else_branch @@ -72,6 +77,10 @@ type wrong_kind_sort = | List | Unit +type contains_gadt = + | Contains_gadt + | No_gadt + let wrong_kind_sort_of_constructor (lid : Longident.t) = match lid with | Lident "true" | Lident "false" | Ldot(_, "true") | Ldot(_, "false") -> @@ -100,6 +109,24 @@ type error = | Expr_type_clash of Errortrace.unification_error * type_forcing_context option * Parsetree.expression_desc option + | Function_arity_type_clash of + { syntactic_arity : int; + type_constraint : type_expr; + trace : Errortrace.unification_error; + } + (* [Function_arity_type_clash { syntactic_arity = n; type_constraint; trace }] + is the type error for the specific case where an n-ary function is + constrained at a type with an arity less than n, e.g.: + {[ + type (_, _) eq = Eq : ('a, 'a) eq + let bad : type a. ?opt:(a, int -> int) eq -> unit -> a = + fun ?opt:(Eq = assert false) () x -> x + 1 + ]} + + [type_constraint] is the user-written polymorphic type (in this example + [?opt:(a, int -> int) eq -> unit -> a]) that causes this type clash, and + [trace] is the unification error that signaled the issue. + *) | Apply_non_function of { funct : Typedtree.expression; func_ty : type_expr; @@ -144,7 +171,7 @@ type error = | Modules_not_allowed | Cannot_infer_signature | Not_a_packed_module of type_expr - | Unexpected_existential of existential_restriction * string * string list + | Unexpected_existential of existential_restriction * string | Invalid_interval | Invalid_for_loop_index | No_value_clauses @@ -327,16 +354,6 @@ type recarg = | Required | Rejected -(* Whether or not patterns of the form (module M) are accepted. (If they are, - the idents will be created at the provided scope.) When module patterns are - allowed, the caller should take care to check that the introduced module - bindings' types don't escape their scope; see the callsites in [type_let] - and [type_cases] for examples. -*) -type module_patterns_restriction = - | Modules_allowed of { scope : int } - | Modules_rejected - let mk_expected ?explanation ty = { ty; explanation; } let case lhs rhs = @@ -464,49 +481,45 @@ let unify_exp_types loc env ty expected_ty = | Tags(l1,l2) -> raise(Typetexp.Error(loc, env, Typetexp.Variant_tags (l1, l2))) -(* level at which to create the local type declarations *) -let gadt_equations_level = ref None -let get_gadt_equations_level () = - match !gadt_equations_level with - Some y -> y - | None -> assert false +(* helper notation for Pattern_env.t *) +let (!!) (penv : Pattern_env.t) = penv.env -let nothing_equated = TypePairs.create 0 +(* Unification inside type_pat *) +let unify_pat_types loc env ty ty' = + try unify env ty ty' with + | Unify err -> + raise(Error(loc, env, Pattern_type_clash(err, None))) + | Tags(l1,l2) -> + raise(Typetexp.Error(loc, env, Typetexp.Variant_tags (l1, l2))) -(* unification inside type_pat*) -let unify_pat_types_return_equated_pairs ?(refine = None) loc env ty ty' = +(* GADT unification inside solve_Ppat_construct and check_counter_example_pat *) +let nothing_equated = TypePairs.create 0 +let unify_pat_types_return_equated_pairs ~refine loc penv ty ty' = try - match refine with - | Some allow_recursive_equations -> - unify_gadt ~equations_level:(get_gadt_equations_level ()) - ~allow_recursive_equations env ty ty' - | None -> - unify !env ty ty'; - nothing_equated + if refine then unify_gadt penv ty ty' + else (unify !!penv ty ty'; nothing_equated) with | Unify err -> - raise(error(loc, !env, Pattern_type_clash(err, None))) + raise(error(loc, !!penv, Pattern_type_clash(err, None))) | Tags(l1,l2) -> - raise(Typetexp.Error(loc, !env, Typetexp.Variant_tags (l1, l2))) - -let unify_pat_types ?refine loc env ty ty' = - ignore (unify_pat_types_return_equated_pairs ?refine loc env ty ty') - + raise(Typetexp.Error(loc, !!penv, Typetexp.Variant_tags (l1, l2))) +let unify_pat_types_refine ~refine loc penv ty ty' = + ignore (unify_pat_types_return_equated_pairs ~refine loc penv ty ty') (** [sdesc_for_hint] is used by error messages to report literals in their original formatting *) -let unify_pat ?refine ?sdesc_for_hint env pat expected_ty = - try unify_pat_types ?refine pat.pat_loc env pat.pat_type expected_ty +let unify_pat ?sdesc_for_hint env pat expected_ty = + try unify_pat_types pat.pat_loc env pat.pat_type expected_ty with Error (loc, env, Pattern_type_clash(err, None)) -> raise(error(loc, env, Pattern_type_clash(err, sdesc_for_hint))) (* unification of a type with a Tconstr with freshly created arguments *) -let unify_head_only ~refine loc env ty constr = +let unify_head_only ~refine loc penv ty constr = let path = cstr_type_path constr in - let decl = Env.find_type path !env in + let decl = Env.find_type path !!penv in let ty' = Ctype.newconstr path (Ctype.instance_list decl.type_params) in - unify_pat_types ~refine loc env ty' ty + unify_pat_types_refine ~refine loc penv ty' ty (* Creating new conjunctive types is not allowed when typing patterns *) (* make all Reither present in open variants *) @@ -524,8 +537,7 @@ let finalize_variant pat tag opat r = | Reither (false, ty::tl, _) when not (row_closed row) -> link_row_field_ext ~inside:f (rf_present (Some ty)); begin match opat with None -> assert false - | Some pat -> - let env = ref pat.pat_env in List.iter (unify_pat env pat) (ty::tl) + | Some pat -> List.iter (unify_pat pat.pat_env pat) (ty::tl) end | Reither (c, _l, true) when not (has_fixed_explanation row) -> link_row_field_ext ~inside:f (rf_either [] ~no_arg:c ~matched:false) @@ -549,7 +561,9 @@ let finalize_variants p = finalize_variant p tag opat r | _ -> () } p -(* pattern environment *) +(* [type_pat_state] and related types for pattern environment; + these should not be confused with Pattern_env.t, which is a part of the + interface to unification functions in [Ctype] *) type pattern_variable = { pv_id: Ident.t; @@ -557,6 +571,7 @@ type pattern_variable = pv_loc: Location.t; pv_as_var: bool; pv_attributes: attributes; + pv_uid : Uid.t; } type module_variable = @@ -567,15 +582,73 @@ type module_variable = mv_uid: Uid.t } -let pattern_variables = ref ([] : pattern_variable list) -let pattern_force = ref ([] : (unit -> unit) list) -let allow_modules = ref Modules_rejected -let module_variables = ref ([] : module_variable list) -let reset_pattern allow = - pattern_variables := []; - pattern_force := []; - allow_modules := allow; - module_variables := [] +(* Whether or not patterns of the form (module M) are accepted. (If they are, + the idents will be created at the provided scope.) When module patterns are + allowed, the caller should take care to check that the introduced module + bindings' types don't escape their scope; see the callsites in [type_let] + and [type_cases] for examples. + [Modules_ignored] indicates that the typing of patterns should not accumulate + a list of module patterns to unpack. It's no different than using + [Modules_allowed] and then ignoring the accumulated [module_variables] list, + but signals more clearly that the module patterns aren't used in an + interesting way. +*) +type module_patterns_restriction = + | Modules_allowed of { scope: int } + | Modules_rejected + | Modules_ignored + +(* A parallel type to [module_patterns_restriction], though also + tracking the module variables encountered. +*) +type module_variables = + | Modvars_allowed of + { scope: int; + module_variables: module_variable list; + } + | Modvars_rejected + | Modvars_ignored + +type type_pat_state = + { mutable tps_pattern_variables: pattern_variable list; + mutable tps_pattern_force: (unit -> unit) list; + mutable tps_module_variables: module_variables; + (* Mutation will not change the constructor of [tps_module_variables], just + the contained [module_variables] list. [module_variables] could be made + mutable instead, but we felt this made the code more awkward. + *) + } + +let create_type_pat_state allow_modules = + let tps_module_variables = + match allow_modules with + | Modules_allowed { scope } -> + Modvars_allowed { scope; module_variables = [] } + | Modules_ignored -> Modvars_ignored + | Modules_rejected -> Modvars_rejected + in + { tps_pattern_variables = []; + tps_module_variables; + tps_pattern_force = []; + } + +(* Copy mutable fields. Used in typechecking or-patterns. *) +let copy_type_pat_state + { tps_pattern_variables; + tps_module_variables; + tps_pattern_force; + } + = + { tps_pattern_variables; + tps_module_variables; + tps_pattern_force; + } + +let blit_type_pat_state ~src ~dst = + dst.tps_pattern_variables <- src.tps_pattern_variables; + dst.tps_module_variables <- src.tps_module_variables; + dst.tps_pattern_force <- src.tps_pattern_force; +;; let maybe_add_pattern_variables_ghost loc_let env pv = List.fold_right @@ -588,39 +661,45 @@ let maybe_add_pattern_variables_ghost loc_let env pv = end ) pv env -let enter_variable ?(is_module=false) ?(is_as_variable=false) loc name ty +let enter_variable ?(is_module=false) ?(is_as_variable=false) tps loc name ty attrs = if List.exists (fun {pv_id; _} -> Ident.name pv_id = name.txt) - !pattern_variables + tps.tps_pattern_variables then raise(error(loc, Env.empty, Multiply_bound_variable name.txt)); let id = if is_module then begin (* Unpack patterns result in both a module declaration and a value variable of the same name being entered into the environment. (The - module is via [module_variables], and the variable is via - [pattern_variables].) *) - match !allow_modules with - | Modules_rejected -> + module is via [tps_module_variables], and the variable is via + [tps_pattern_variables].) *) + match tps.tps_module_variables with + | Modvars_ignored -> Ident.create_local name.txt + | Modvars_rejected -> raise (error (loc, Env.empty, Modules_not_allowed)); - | Modules_allowed { scope } -> + | Modvars_allowed { scope; module_variables } -> let id = Ident.create_scoped name.txt ~scope in - module_variables := + let module_variables = { mv_id = id; mv_name = name; mv_loc = loc; mv_uid = Uid.mk ~current_unit:(Env.get_unit_name ()); - } :: !module_variables; + } :: module_variables + in + tps.tps_module_variables <- + Modvars_allowed { scope; module_variables; }; id end else Ident.create_local name.txt in - pattern_variables := + let pv_uid = Uid.mk ~current_unit:(Env.get_unit_name ()) in + tps.tps_pattern_variables <- {pv_id = id; pv_type = ty; pv_loc = loc; pv_as_var = is_as_variable; - pv_attributes = attrs} :: !pattern_variables; - id + pv_attributes = attrs; + pv_uid} :: tps.tps_pattern_variables; + id, pv_uid let sort_pattern_variables vs = List.sort @@ -662,31 +741,35 @@ let enter_orpat_variables loc env p1_vs p2_vs = raise (error (loc, env, err)) in unify_vars p1_vs p2_vs -let rec build_as_type ~refine (env : Env.t ref) p = - let as_ty = build_as_type_aux ~refine env p in - (* Cf. #1655 *) - List.fold_left (fun as_ty (extra, _loc, _attrs) -> - match extra with - | Tpat_type _ | Tpat_open _ | Tpat_unpack -> as_ty - | Tpat_constraint cty -> +let rec build_as_type (env : Env.t) p = + build_as_type_extra env p p.pat_extra + +and build_as_type_extra env p = function + | [] -> build_as_type_aux env p + | ((Tpat_type _ | Tpat_open _ | Tpat_unpack), _, _) :: rest -> + build_as_type_extra env p rest + | (Tpat_constraint {ctyp_type = ty; _}, _, _) :: rest -> + (* If the type constraint is ground, then this is the best type + we can return, so just return an instance (cf. #12313) *) + if free_variables ty = [] then instance ty else + (* Otherwise we combine the inferred type for the pattern with + then non-ground constraint in a non-ambivalent way *) + let as_ty = build_as_type_extra env p rest in (* [generic_instance] can only be used if the variables of the original type ([cty.ctyp_type] here) are not at [generic_level], which they are here. If we used [generic_instance] we would lose the sharing between [instance ty] and [ty]. *) let ty = - with_local_level ~post:generalize_structure - (fun () -> instance cty.ctyp_type) + with_local_level ~post:generalize_structure (fun () -> instance ty) in - (* This call to unify can't fail since the pattern is well typed. *) - unify_pat_types ~refine p.pat_loc env (instance as_ty) (instance ty); + (* This call to unify may only fail due to missing GADT equations *) + unify_pat_types p.pat_loc env (instance as_ty) (instance ty); ty - ) as_ty p.pat_extra -and build_as_type_aux ~refine (env : Env.t ref) p = - let build_as_type = build_as_type ~refine in +and build_as_type_aux (env : Env.t) p = match p.pat_desc with - Tpat_alias(p1,_, _) -> build_as_type env p1 + Tpat_alias(p1,_, _, _) -> build_as_type env p1 | Tpat_tuple pl -> let tyl = List.map (build_as_type env) pl in newty (Ttuple tyl) @@ -699,7 +782,7 @@ and build_as_type_aux ~refine (env : Env.t ref) p = let ty_args, ty_res, _ = instance_constructor Keep_existentials_flexible cstr in - List.iter2 (fun (p,ty) -> unify_pat ~refine env {p with pat_type = ty}) + List.iter2 (fun (p,ty) -> unify_pat env {p with pat_type = ty}) (List.combine pl tyl) ty_args; ty_res | Tpat_variant(l, p', _) -> @@ -713,19 +796,18 @@ and build_as_type_aux ~refine (env : Env.t ref) p = let ty = newvar () in let ppl = List.map (fun (_, l, p) -> l.lbl_pos, p) lpl in let do_label lbl = - let _, ty_arg, ty_res = instance_label false lbl in - unify_pat ~refine env {p with pat_type = ty} ty_res; + let _, ty_arg, ty_res = instance_label ~fixed:false lbl in + unify_pat env {p with pat_type = ty} ty_res; let refinable = lbl.lbl_mut = Immutable && List.mem_assoc lbl.lbl_pos ppl && match get_desc lbl.lbl_arg with Tpoly _ -> false | _ -> true in if refinable then begin let arg = List.assoc lbl.lbl_pos ppl in - unify_pat ~refine env - {arg with pat_type = build_as_type env arg} ty_arg + unify_pat env {arg with pat_type = build_as_type env arg} ty_arg end else begin - let _, ty_arg', ty_res' = instance_label false lbl in - unify_pat_types ~refine p.pat_loc env ty_arg ty_arg'; - unify_pat ~refine env p ty_res' + let _, ty_arg', ty_res' = instance_label ~fixed:false lbl in + unify_pat_types p.pat_loc env ty_arg ty_arg'; + unify_pat env p ty_res' end in Array.iter do_label lbl.lbl_all; ty @@ -733,7 +815,7 @@ and build_as_type_aux ~refine (env : Env.t ref) p = begin match row with None -> let ty1 = build_as_type env p1 and ty2 = build_as_type env p2 in - unify_pat ~refine env {p2 with pat_type = ty2} ty1; + unify_pat env {p2 with pat_type = ty2} ty1; ty1 | Some row -> let Row {fields; fixed; name} = row_repr row in @@ -745,56 +827,57 @@ and build_as_type_aux ~refine (env : Env.t ref) p = (* Constraint solving during typing of patterns *) -let solve_Ppat_poly_constraint ~refine env loc sty expected_ty = - let cty, ty, force = Typetexp.transl_simple_type_delayed !env sty in - unify_pat_types ~refine loc env ty (instance expected_ty); - pattern_force := force :: !pattern_force; +let solve_Ppat_poly_constraint tps env loc sty expected_ty = + let cty, ty, force = Typetexp.transl_simple_type_delayed env sty in + unify_pat_types loc env ty (instance expected_ty); + tps.tps_pattern_force <- force :: tps.tps_pattern_force; match get_desc ty with | Tpoly (body, tyl) -> let _, ty' = with_level ~level:generic_level - (fun () -> instance_poly ~keep_names:true false tyl body) + (fun () -> instance_poly ~keep_names:true ~fixed:false tyl body) in (cty, ty, ty') | _ -> assert false -let solve_Ppat_alias ~refine env pat = - with_local_level ~post:generalize (fun () -> build_as_type ~refine env pat) +let solve_Ppat_alias env pat = + with_local_level ~post:generalize (fun () -> build_as_type env pat) let solve_Ppat_tuple (type a) ~refine loc env (args : a list) expected_ty = let vars = List.map (fun _ -> newgenvar ()) args in let ty = newgenty (Ttuple vars) in let expected_ty = generic_instance expected_ty in - unify_pat_types ~refine loc env ty expected_ty; + unify_pat_types_refine ~refine loc env ty expected_ty; vars -let solve_constructor_annotation env name_list sty ty_args ty_ex = - let expansion_scope = get_gadt_equations_level () in +let solve_constructor_annotation + tps (penv : Pattern_env.t) name_list sty ty_args ty_ex = + let expansion_scope = penv.equations_scope in let ids = List.map (fun name -> - let decl = new_local_type ~loc:name.loc () in + let decl = new_local_type ~loc:name.loc Definition in let (id, new_env) = - Env.enter_type ~scope:expansion_scope name.txt decl !env in - env := new_env; + Env.enter_type ~scope:expansion_scope name.txt decl !!penv in + Pattern_env.set_env penv new_env; {name with txt = id}) name_list in let cty, ty, force = with_local_level ~post:(fun (_,ty,_) -> generalize_structure ty) - (fun () -> Typetexp.transl_simple_type_delayed !env sty) + (fun () -> Typetexp.transl_simple_type_delayed !!penv sty) in - pattern_force := force :: !pattern_force; + tps.tps_pattern_force <- force :: tps.tps_pattern_force; let ty_args = let ty1 = instance ty and ty2 = instance ty in match ty_args with [] -> assert false | [ty_arg] -> - unify_pat_types cty.ctyp_loc env ty1 ty_arg; + unify_pat_types cty.ctyp_loc !!penv ty1 ty_arg; [ty2] | _ -> - unify_pat_types cty.ctyp_loc env ty1 (newty (Ttuple ty_args)); - match get_desc (expand_head !env ty2) with + unify_pat_types cty.ctyp_loc !!penv ty1 (newty (Ttuple ty_args)); + match get_desc (expand_head !!penv ty2) with Ttuple tyl -> tyl | _ -> assert false in @@ -807,50 +890,44 @@ let solve_constructor_annotation env name_list sty ty_args ty_ex = Tconstr(Path.Pident id, [], _) when List.mem id rem -> list_remove id rem | _ -> - raise (Error (cty.ctyp_loc, !env, + raise (Error (cty.ctyp_loc, !!penv, Unbound_existential (ids, ty)))) ids ty_ex in if rem <> [] then - raise (Error (cty.ctyp_loc, !env, + raise (Error (cty.ctyp_loc, !!penv, Unbound_existential (ids, ty))) end; ty_args, Some (ids, cty) -let solve_Ppat_construct ~refine env loc constr no_existentials +let solve_Ppat_construct ~refine tps penv loc constr no_existentials existential_styp expected_ty = (* if constructor is gadt, we must verify that the expected type has the correct head *) if constr.cstr_generalized then - unify_head_only ~refine loc env (instance expected_ty) constr; + unify_head_only ~refine loc penv (instance expected_ty) constr; (* PR#7214: do not use gadt unification for toplevel lets *) let unify_res ty_res expected_ty = let refine = - match refine, no_existentials with - | None, None when constr.cstr_generalized -> Some false - | _ -> refine - in - unify_pat_types_return_equated_pairs ~refine loc env ty_res expected_ty + refine || constr.cstr_generalized && no_existentials = None in + unify_pat_types_return_equated_pairs ~refine loc penv ty_res expected_ty in let ty_args, equated_types, existential_ctyp = with_local_level_iter ~post: generalize_structure begin fun () -> let expected_ty = instance expected_ty in - let expansion_scope = get_gadt_equations_level () in let ty_args, ty_res, equated_types, existential_ctyp = match existential_styp with None -> let ty_args, ty_res, _ = - instance_constructor - (Make_existentials_abstract { env; scope = expansion_scope }) - constr + instance_constructor (Make_existentials_abstract penv) constr in ty_args, ty_res, unify_res ty_res expected_ty, None | Some (name_list, sty) -> let existential_treatment = if name_list = [] then - Make_existentials_abstract { env; scope = expansion_scope } + Make_existentials_abstract penv else (* we will unify them (in solve_constructor_annotation) with the local types provided by the user *) @@ -861,16 +938,17 @@ let solve_Ppat_construct ~refine env loc constr no_existentials in let equated_types = unify_res ty_res expected_ty in let ty_args, existential_ctyp = - solve_constructor_annotation env name_list sty ty_args ty_ex in + solve_constructor_annotation tps penv name_list sty ty_args ty_ex + in ty_args, ty_res, equated_types, existential_ctyp in if constr.cstr_existentials <> [] then - lower_variables_only !env expansion_scope ty_res; + lower_variables_only !!penv penv.Pattern_env.equations_scope ty_res; ((ty_args, equated_types, existential_ctyp), expected_ty :: ty_res :: ty_args) end in - if !Clflags.principal && refine = None then begin + if !Clflags.principal && not refine then begin (* Do not warn for counter-examples *) let exception Warn_only_once in try @@ -894,13 +972,13 @@ let solve_Ppat_construct ~refine env loc constr no_existentials end; (ty_args, existential_ctyp) -let solve_Ppat_record_field ~refine loc env label label_lid record_ty = +let solve_Ppat_record_field ~refine loc penv label label_lid record_ty = with_local_level_iter ~post:generalize_structure begin fun () -> - let (_, ty_arg, ty_res) = instance_label false label in + let (_, ty_arg, ty_res) = instance_label ~fixed:false label in begin try - unify_pat_types ~refine loc env ty_res (instance record_ty) + unify_pat_types_refine ~refine loc penv ty_res (instance record_ty) with Error(_loc, _env, Pattern_type_clash(err, _)) -> - raise(error(label_lid.loc, !env, + raise(error(label_lid.loc, !!penv, Label_mismatch(label_lid.txt, err))) end; (ty_arg, [ty_res; ty_arg]) @@ -909,24 +987,24 @@ let solve_Ppat_record_field ~refine loc env label label_lid record_ty = let solve_Ppat_array ~refine loc env expected_ty = let ty_elt = newgenvar() in let expected_ty = generic_instance expected_ty in - unify_pat_types ~refine + unify_pat_types_refine ~refine loc env (Predef.type_array ty_elt) expected_ty; ty_elt -let solve_Ppat_lazy ~refine loc env expected_ty = +let solve_Ppat_lazy ~refine loc env expected_ty = let nv = newgenvar () in - unify_pat_types ~refine loc env (Predef.type_lazy_t nv) + unify_pat_types_refine ~refine loc env (Predef.type_lazy_t nv) (generic_instance expected_ty); nv -let solve_Ppat_constraint ~refine loc env sty expected_ty = +let solve_Ppat_constraint tps loc env sty expected_ty = let cty, ty, force = with_local_level ~post:(fun (_, ty, _) -> generalize_structure ty) - (fun () -> Typetexp.transl_simple_type_delayed !env sty) + (fun () -> Typetexp.transl_simple_type_delayed env sty) in - pattern_force := force :: !pattern_force; + tps.tps_pattern_force <- force :: tps.tps_pattern_force; let ty, expected_ty' = instance ty, ty in - unify_pat_types ~refine loc env ty (instance expected_ty); + unify_pat_types loc env ty (instance expected_ty); (cty, ty, expected_ty') let solve_Ppat_variant ~refine loc env tag no_arg expected_ty = @@ -940,7 +1018,7 @@ let solve_Ppat_variant ~refine loc env tag no_arg expected_ty = (* PR#7404: allow some_private_tag blindly, as it would not unify with the abstract row variable *) if tag <> Parmatch.some_private_tag then - unify_pat_types ~refine loc env (newgenty(Tvariant row)) expected_ty; + unify_pat_types_refine ~refine loc env (newgenty(Tvariant row)) expected_ty; (arg_type, make_row (newvar ()), instance expected_ty) (* Building the or-pattern corresponding to a polymorphic variant type *) @@ -997,19 +1075,6 @@ let build_or_pat env loc lid = pat pats in (path, rp { r with pat_loc = loc }) -let split_cases env cases = - let add_case lst case = function - | None -> lst - | Some c_lhs -> { case with c_lhs } :: lst - in - List.fold_right (fun ({ c_lhs; c_guard } as case) (vals, exns) -> - match split_pattern c_lhs with - | Some _, Some _ when c_guard <> None -> - raise (error (c_lhs.pat_loc, env, - Mixed_value_and_exception_patterns_under_guard)) - | vp, ep -> add_case vals case vp, add_case exns case ep - ) cases ([], []) - (* Type paths *) let rec expand_path env p = @@ -1463,19 +1528,39 @@ end) (* Typing of patterns *) -(* "half typed" cases are produced in [type_cases] when we've just typechecked - the pattern but haven't type-checked the body yet. - At this point we might have added some type equalities to the environment, - but haven't yet added identifiers bound by the pattern. *) -type 'case_pattern half_typed_case = +(* "untyped" cases are prior to checking the pattern. *) +type untyped_case = Parsetree.pattern Parmatch.parmatch_case + +(* "half typed" cases are produced in [map_half_typed_cases] when we've just + typechecked the pattern but haven't type-checked the body yet. At this point + we might have added some type equalities to the environment, but haven't yet + added identifiers bound by the pattern. *) +type ('case_pattern, 'case_data) half_typed_case = { typed_pat: 'case_pattern; pat_type_for_unif: type_expr; - untyped_case: Parsetree.case; + untyped_case : untyped_case; + case_data : 'case_data; branch_env: Env.t; pat_vars: pattern_variable list; - module_vars: module_variable list; + module_vars: module_variables; contains_gadt: bool; } +(* Used to split patterns into value cases and exception cases. *) +let split_half_typed_cases env zipped_cases = + let add_case lst htc data = function + | None -> lst + | Some split_pat -> + ({ htc.untyped_case with pattern = split_pat }, data) :: lst + in + List.fold_right (fun (htc, data) (vals, exns) -> + let pat = htc.typed_pat in + match split_pattern pat with + | Some _, Some _ when htc.untyped_case.has_guard -> + raise (Error (pat.pat_loc, env, + Mixed_value_and_exception_patterns_under_guard)) + | vp, ep -> add_case vals htc data vp, add_case exns htc data ep + ) zipped_cases ([], []) + let rec has_literal_pattern p = match p.ppat_desc with | Ppat_constant _ | Ppat_interval _ -> @@ -1566,16 +1651,17 @@ let as_comp_pattern (** [type_pat] propagates the expected type, and unification may update the typing environment. *) let rec type_pat - : type k . k pattern_category -> + : type k . type_pat_state -> k pattern_category -> no_existentials: existential_restriction option -> - env: Env.t ref -> Parsetree.pattern -> type_expr -> k general_pattern - = fun category ~no_existentials ~env sp expected_ty -> + penv: Pattern_env.t -> Parsetree.pattern -> type_expr -> + k general_pattern + = fun tps category ~no_existentials ~penv sp expected_ty -> Msupport.with_saved_types ~warning_attribute:sp.ppat_attributes ?save_part:None (fun () -> let saved = save_levels () in try - type_pat_aux category ~no_existentials ~env sp expected_ty + type_pat_aux tps category ~no_existentials ~penv sp expected_ty with Error _ as exn -> (* We only want to catch error, not internal exceptions such as [Need_backtrack], etc. *) @@ -1589,7 +1675,7 @@ let rec type_pat pat_loc = loc; pat_extra = []; pat_type = expected_ty; - pat_env = !env; + pat_env = !!penv; pat_attributes = Msupport.recovery_attributes sp.ppat_attributes; } in @@ -1599,16 +1685,15 @@ let rec type_pat ) and type_pat_aux - : type k . k pattern_category -> no_existentials:_ -> - env:_ -> _ -> _ -> k general_pattern - = fun category ~no_existentials ~env sp expected_ty -> - let type_pat category ?(env=env) = - type_pat category ~no_existentials ~env + : type k . type_pat_state -> k pattern_category -> no_existentials:_ -> + penv:Pattern_env.t -> _ -> _ -> k general_pattern + = fun tps category ~no_existentials ~penv sp expected_ty -> + let type_pat tps category ?(penv=penv) = + type_pat tps category ~no_existentials ~penv in let loc = sp.ppat_loc in - let refine = None in let solve_expected (x : pattern) : pattern = - unify_pat ~refine ~sdesc_for_hint:sp.ppat_desc env x (instance expected_ty); + unify_pat ~sdesc_for_hint:sp.ppat_desc !!penv x (instance expected_ty); x in let crp (x : k general_pattern) : k general_pattern = @@ -1627,16 +1712,16 @@ and type_pat_aux pat_loc = loc; pat_extra=[]; pat_type = instance expected_ty; pat_attributes = sp.ppat_attributes; - pat_env = !env } + pat_env = !!penv } | Ppat_var name -> let ty = instance expected_ty in - let id = enter_variable loc name ty sp.ppat_attributes in + let id, uid = enter_variable tps loc name ty sp.ppat_attributes in rvp { - pat_desc = Tpat_var (id, name); + pat_desc = Tpat_var (id, name, uid); pat_loc = loc; pat_extra=[]; pat_type = ty; pat_attributes = sp.ppat_attributes; - pat_env = !env } + pat_env = !!penv } | Ppat_unpack name -> let t = instance expected_ty in begin match name.txt with @@ -1647,53 +1732,56 @@ and type_pat_aux pat_extra=[Tpat_unpack, name.loc, sp.ppat_attributes]; pat_type = t; pat_attributes = []; - pat_env = !env } + pat_env = !!penv } | Some s -> let v = { name with txt = s } in (* We're able to pass ~is_module:true here without an error because [Ppat_unpack] is a case identified by [may_contain_modules]. See the comment on [may_contain_modules]. *) - let id = enter_variable loc v t ~is_module:true sp.ppat_attributes in + let id, uid = + enter_variable tps loc v t ~is_module:true sp.ppat_attributes + in rvp { - pat_desc = Tpat_var (id, v); + pat_desc = Tpat_var (id, v, uid); pat_loc = sp.ppat_loc; pat_extra=[Tpat_unpack, loc, sp.ppat_attributes]; pat_type = t; pat_attributes = []; - pat_env = !env } + pat_env = !!penv } end | Ppat_constraint( {ppat_desc=Ppat_var name; ppat_loc=lloc; ppat_attributes = attrs}, ({ptyp_desc=Ptyp_poly _} as sty)) -> (* explicitly polymorphic type *) let cty, ty, ty' = - solve_Ppat_poly_constraint ~refine env lloc sty expected_ty in - let id = enter_variable lloc name ty' attrs in - rvp { pat_desc = Tpat_var (id, name); + solve_Ppat_poly_constraint tps !!penv lloc sty expected_ty in + let id, uid = enter_variable tps lloc name ty' attrs in + rvp { pat_desc = Tpat_var (id, name, uid); pat_loc = lloc; pat_extra = [Tpat_constraint cty, loc, sp.ppat_attributes]; pat_type = ty; pat_attributes = []; - pat_env = !env } + pat_env = !!penv } | Ppat_alias(sq, name) -> - let q = type_pat Value sq expected_ty in - let ty_var = solve_Ppat_alias ~refine env q in - let id = - enter_variable ~is_as_variable:true loc name ty_var sp.ppat_attributes + let q = type_pat tps Value sq expected_ty in + let ty_var = solve_Ppat_alias !!penv q in + let id, uid = + enter_variable + ~is_as_variable:true tps name.loc name ty_var sp.ppat_attributes in - rvp { pat_desc = Tpat_alias(q, id, name); + rvp { pat_desc = Tpat_alias(q, id, name, uid); pat_loc = loc; pat_extra=[]; pat_type = q.pat_type; pat_attributes = sp.ppat_attributes; - pat_env = !env } + pat_env = !!penv } | Ppat_constant cst -> - let cst = constant_or_raise !env loc cst in + let cst = constant_or_raise !!penv loc cst in rvp @@ solve_expected { pat_desc = Tpat_constant cst; pat_loc = loc; pat_extra=[]; pat_type = type_constant cst; pat_attributes = sp.ppat_attributes; - pat_env = !env } + pat_env = !!penv } | Ppat_interval (Pconst_char c1, Pconst_char c2) -> let open Ast_helper.Pat in let gloc = {loc with Location.loc_ghost=true} in @@ -1706,45 +1794,45 @@ and type_pat_aux in let p = if c1 <= c2 then loop c1 c2 else loop c2 c1 in let p = {p with ppat_loc=loc} in - type_pat category p expected_ty + type_pat tps category p expected_ty (* TODO: record 'extra' to remember about interval *) | Ppat_interval _ -> - raise (error (loc, !env, Invalid_interval)) + raise (error (loc, !!penv, Invalid_interval)) | Ppat_tuple spl -> assert (List.length spl >= 2); - let expected_tys = solve_Ppat_tuple ~refine loc env spl expected_ty in - let pl = List.map2 (type_pat Value) spl expected_tys in + let expected_tys = + solve_Ppat_tuple ~refine:false loc penv spl expected_ty in + let pl = List.map2 (type_pat tps Value) spl expected_tys in rvp { pat_desc = Tpat_tuple pl; pat_loc = loc; pat_extra=[]; pat_type = newty (Ttuple(List.map (fun p -> p.pat_type) pl)); pat_attributes = sp.ppat_attributes; - pat_env = !env } + pat_env = !!penv } | Ppat_construct(lid, sarg) -> let expected_type = - match extract_concrete_variant !env expected_ty with + match extract_concrete_variant !!penv expected_ty with | Variant_type(p0, p, _) -> Some (p0, p, is_principal expected_ty) | Maybe_a_variant_type -> None | Not_a_variant_type -> let srt = wrong_kind_sort_of_constructor lid.txt in let err = Wrong_expected_kind(srt, Pattern, expected_ty) in - raise (error (loc, !env, err)) + raise (error (loc, !!penv, err)) in let constr = let candidates = - Env.lookup_all_constructors Env.Pattern ~loc:lid.loc lid.txt !env in + Env.lookup_all_constructors Env.Pattern ~loc:lid.loc lid.txt !!penv in wrap_disambiguate "This variant pattern is expected to have" (mk_expected expected_ty) - (Constructor.disambiguate Env.Pattern lid !env expected_type) + (Constructor.disambiguate Env.Pattern lid !!penv expected_type) candidates in begin match no_existentials, constr.cstr_existentials with | None, _ | _, [] -> () - | Some r, (_ :: _ as exs) -> - let exs = List.map (Ctype.existential_name constr) exs in + | Some r, (_ :: _) -> let name = constr.cstr_name in - raise (error (loc, !env, Unexpected_existential (r, name, exs))) + raise (error (loc, !!penv, Unexpected_existential (r, name))) end; let sarg', existential_styp = match sarg with @@ -1755,7 +1843,7 @@ and type_pat_aux | Some ([], sp) -> Some sp, None | Some (_, sp) -> - raise (error (sp.ppat_loc, !env, Missing_type_constraint)) + raise (error (sp.ppat_loc, !!penv, Missing_type_constraint)) in let sargs = match sarg' with @@ -1780,11 +1868,11 @@ and type_pat_aux | _ -> () end; if List.length sargs <> constr.cstr_arity then - raise(error(loc, !env, Constructor_arity_mismatch(lid.txt, + raise(error(loc, !!penv, Constructor_arity_mismatch(lid.txt, constr.cstr_arity, List.length sargs))); let (ty_args, existential_ctyp) = - solve_Ppat_construct ~refine env loc constr no_existentials + solve_Ppat_construct ~refine:false tps penv loc constr no_existentials existential_styp expected_ty in @@ -1796,7 +1884,7 @@ and type_pat_aux | Ppat_alias (p, _) -> check_non_escaping p | Ppat_constraint _ -> - raise (error (p.ppat_loc, !env, Inlined_record_escape)) + raise (error (p.ppat_loc, !!penv, Inlined_record_escape)) | _ -> () in @@ -1805,21 +1893,21 @@ and type_pat_aux Option.iter (fun (_, sarg) -> check_non_escaping sarg) sarg end; - let args = List.map2 (type_pat Value) sargs ty_args in + let args = List.map2 (type_pat tps Value) sargs ty_args in rvp { pat_desc=Tpat_construct(lid, constr, args, existential_ctyp); pat_loc = loc; pat_extra=[]; pat_type = instance expected_ty; pat_attributes = sp.ppat_attributes; - pat_env = !env } + pat_env = !!penv } | Ppat_variant(tag, sarg) -> assert (tag <> Parmatch.some_private_tag); let constant = (sarg = None) in let arg_type, row, pat_type = - solve_Ppat_variant ~refine loc env tag constant expected_ty in + solve_Ppat_variant ~refine:false loc penv tag constant expected_ty in let arg = (* PR#6235: propagate type information *) match sarg, arg_type with - Some sp, [ty] -> Some (type_pat Value sp ty) + Some sp, [ty] -> Some (type_pat tps Value sp ty) | _ -> None in rvp { @@ -1827,23 +1915,24 @@ and type_pat_aux pat_loc = loc; pat_extra = []; pat_type = pat_type; pat_attributes = sp.ppat_attributes; - pat_env = !env } + pat_env = !!penv } | Ppat_record(lid_sp_list, closed) -> assert (lid_sp_list <> []); let expected_type, record_ty = - match extract_concrete_record !env expected_ty with + match extract_concrete_record !!penv expected_ty with | Record_type(p0, p, _) -> let ty = generic_instance expected_ty in Some (p0, p, is_principal expected_ty), ty | Maybe_a_record_type -> None, newvar () | Not_a_record_type -> let err = Wrong_expected_kind(Record, Pattern, expected_ty) in - raise (error (loc, !env, err)) + raise (error (loc, !!penv, err)) in let type_label_pat (label_lid, label, sarg) = let ty_arg = - solve_Ppat_record_field ~refine loc env label label_lid record_ty in - (label_lid, label, type_pat Value sarg ty_arg) + solve_Ppat_record_field ~refine:false loc penv label label_lid + record_ty in + (label_lid, label, type_pat tps Value sarg ty_arg) in let make_record_pat lbl_pat_list = check_recordpat_labels loc lbl_pat_list closed; @@ -1852,146 +1941,157 @@ and type_pat_aux pat_loc = loc; pat_extra=[]; pat_type = instance record_ty; pat_attributes = sp.ppat_attributes; - pat_env = !env; + pat_env = !!penv; } in let lbl_a_list = wrap_disambiguate "This record pattern is expected to have" (mk_expected expected_ty) - (type_label_a_list loc false !env Env.Projection + (type_label_a_list loc false !!penv Env.Projection type_label_pat expected_type) lid_sp_list in rvp @@ solve_expected (make_record_pat lbl_a_list) | Ppat_array spl -> - let ty_elt = solve_Ppat_array ~refine loc env expected_ty in - let pl = List.map (fun p -> type_pat Value p ty_elt) spl in + let ty_elt = solve_Ppat_array ~refine:false loc penv expected_ty in + let pl = List.map (fun p -> type_pat tps Value p ty_elt) spl in rvp { pat_desc = Tpat_array pl; pat_loc = loc; pat_extra=[]; pat_type = instance expected_ty; pat_attributes = sp.ppat_attributes; - pat_env = !env } + pat_env = !!penv } | Ppat_or(sp1, sp2) -> - let initial_pattern_variables = !pattern_variables in - let initial_module_variables = !module_variables in - let equation_level = !gadt_equations_level in - let outter_lev = get_current_level () in + (* Reset pattern forces for just [tps2] because later we append [tps1] and + [tps2]'s pattern forces, and we don't want to duplicate [tps]'s pattern + forces. *) + let tps1 = copy_type_pat_state tps in + let tps2 = {(copy_type_pat_state tps) with tps_pattern_force = []} in (* Introduce a new scope using with_local_level without generalizations *) - let env1, p1, p1_variables, p1_module_variables, env2, p2 = + let env1, p1, env2, p2 = with_local_level begin fun () -> - let lev = get_current_level () in - gadt_equations_level := Some lev; - let type_pat_rec env sp = type_pat category sp expected_ty ~env in - let env1 = ref !env in - let p1 = type_pat_rec env1 sp1 in - let p1_variables = !pattern_variables in - let p1_module_variables = !module_variables in - pattern_variables := initial_pattern_variables; - module_variables := initial_module_variables; - let env2 = ref !env in - let p2 = type_pat_rec env2 sp2 in - (env1, p1, p1_variables, p1_module_variables, env2, p2) + let type_pat_rec tps penv sp = + type_pat tps category sp expected_ty ~penv + in + let penv1 = + Pattern_env.copy ~equations_scope:(get_current_level ()) penv in + let penv2 = Pattern_env.copy penv1 in + let p1 = type_pat_rec tps1 penv1 sp1 in + let p2 = type_pat_rec tps2 penv2 sp2 in + (penv1.env, p1, penv2.env, p2) end in - gadt_equations_level := equation_level; - let p2_variables = !pattern_variables in + let p1_variables = tps1.tps_pattern_variables in + let p2_variables = tps2.tps_pattern_variables in (* Make sure no variable with an ambiguous type gets added to the environment. *) + let outer_lev = get_current_level () in List.iter (fun { pv_type; pv_loc; _ } -> - check_scope_escape pv_loc !env1 outter_lev pv_type + check_scope_escape pv_loc env1 outer_lev pv_type ) p1_variables; List.iter (fun { pv_type; pv_loc; _ } -> - check_scope_escape pv_loc !env2 outter_lev pv_type + check_scope_escape pv_loc env2 outer_lev pv_type ) p2_variables; let alpha_env = - enter_orpat_variables loc !env p1_variables p2_variables in + enter_orpat_variables loc !!penv p1_variables p2_variables in + (* Propagate the outcome of checking the or-pattern back to + the type_pat_state that the caller passed in. + *) + blit_type_pat_state + ~src: + { tps_pattern_variables = tps1.tps_pattern_variables; + (* We want to propagate all pattern forces, regardless of + which branch they were found in. + *) + tps_pattern_force = + tps2.tps_pattern_force @ tps1.tps_pattern_force; + tps_module_variables = tps1.tps_module_variables; + } + ~dst:tps; let p2 = alpha_pat alpha_env p2 in - pattern_variables := p1_variables; - module_variables := p1_module_variables; rp { pat_desc = Tpat_or (p1, p2, None); pat_loc = loc; pat_extra = []; pat_type = instance expected_ty; pat_attributes = sp.ppat_attributes; - pat_env = !env } + pat_env = !!penv } | Ppat_lazy sp1 -> - let nv = solve_Ppat_lazy ~refine loc env expected_ty in - let p1 = type_pat Value sp1 nv in + let nv = solve_Ppat_lazy ~refine:false loc penv expected_ty in + let p1 = type_pat tps Value sp1 nv in rvp { pat_desc = Tpat_lazy p1; pat_loc = loc; pat_extra=[]; pat_type = instance expected_ty; pat_attributes = sp.ppat_attributes; - pat_env = !env } + pat_env = !!penv } | Ppat_constraint(sp, sty) -> (* Pretend separate = true *) let cty, ty, expected_ty' = - solve_Ppat_constraint ~refine loc env sty expected_ty in - let p = type_pat category sp expected_ty' in + solve_Ppat_constraint tps loc !!penv sty expected_ty in + let p = type_pat tps category sp expected_ty' in let extra = (Tpat_constraint cty, loc, sp.ppat_attributes) in begin match category, (p : k general_pattern) with - | Value, {pat_desc = Tpat_var (id,s); _} -> + | Value, {pat_desc = Tpat_var (id,s,uid); _} -> { p with pat_type = ty; pat_desc = Tpat_alias - ({p with pat_desc = Tpat_any; pat_attributes = []}, id,s); + ({p with pat_desc = Tpat_any; pat_attributes = []}, id,s, uid); pat_extra = [extra]; } | _, p -> { p with pat_type = ty; pat_extra = extra::p.pat_extra } end | Ppat_type lid -> - let (path, p) = build_or_pat !env loc lid in + let (path, p) = build_or_pat !!penv loc lid in pure category @@ solve_expected { p with pat_extra = (Tpat_type (path, lid), loc, sp.ppat_attributes) :: p.pat_extra } | Ppat_open (lid,p) -> let path, new_env = - !type_open Asttypes.Fresh !env sp.ppat_loc lid in - env := new_env; - let p = type_pat category ~env p expected_ty in - let new_env = !env in + !type_open Asttypes.Fresh !!penv sp.ppat_loc lid in + Pattern_env.set_env penv new_env; + let p = type_pat tps category ~penv p expected_ty in + let new_env = !!penv in begin match Env.remove_last_open path new_env with | None -> assert false - | Some closed_env -> env := closed_env + | Some closed_env -> Pattern_env.set_env penv closed_env end; { p with pat_extra = (Tpat_open (path,lid,new_env), loc, sp.ppat_attributes) :: p.pat_extra } | Ppat_exception p -> - let p_exn = type_pat Value p Predef.type_exn in + let p_exn = type_pat tps Value p Predef.type_exn in rcp { pat_desc = Tpat_exception p_exn; pat_loc = sp.ppat_loc; pat_extra = []; pat_type = expected_ty; - pat_env = !env; + pat_env = !!penv; pat_attributes = sp.ppat_attributes; } | Ppat_extension ext -> raise (Error_forward (Builtin_attributes.error_of_extension ext)) -let type_pat category ?no_existentials - ?(lev=get_current_level()) env sp expected_ty = - Misc.protect_refs [Misc.R (gadt_equations_level, Some lev)] - (fun () -> type_pat category ~no_existentials ~env sp expected_ty) - let iter_pattern_variables_type f : pattern_variable list -> unit = List.iter (fun {pv_type; _} -> f pv_type) let add_pattern_variables ?check ?check_as env pv = List.fold_right - (fun {pv_id; pv_type; pv_loc; pv_as_var; pv_attributes} env -> + (fun {pv_id; pv_type; pv_loc; pv_as_var; pv_attributes; pv_uid} env -> let check = if pv_as_var then check_as else check in Env.add_value ?check pv_id {val_type = pv_type; val_kind = Val_reg; Types.val_loc = pv_loc; val_attributes = pv_attributes; - val_uid = Uid.mk ~current_unit:(Env.get_unit_name ()); + val_uid = pv_uid; } env ) pv env let add_module_variables env module_variables = + let module_variables_as_list = + match module_variables with + | Modvars_allowed mvs -> mvs.module_variables + | Modvars_ignored | Modvars_rejected -> [] + in List.fold_left (fun env { mv_id; mv_loc; mv_name; mv_uid } -> Typetexp.TyVarEnv.with_local_scope begin fun () -> (* This code is parallel to the typing of Pexp_letmodule. However we @@ -2021,43 +2121,56 @@ let add_module_variables env module_variables = in Env.add_module_declaration ~shape:md_shape ~check:true mv_id pres md env end - ) env module_variables + ) env module_variables_as_list + +let type_pat tps category ?no_existentials penv = + type_pat tps category ~no_existentials ~penv let type_pattern category ~lev env spat expected_ty allow_modules = - reset_pattern allow_modules; - let new_env = ref env in - let pat = type_pat category ~lev new_env spat expected_ty in - let pvs = get_ref pattern_variables in - let mvs = get_ref module_variables in - (pat, !new_env, get_ref pattern_force, pvs, mvs) + let tps = create_type_pat_state allow_modules in + let new_penv = Pattern_env.make env + ~equations_scope:lev ~allow_recursive_equations:false in + let pat = type_pat tps category new_penv spat expected_ty in + let { tps_pattern_variables = pvs; + tps_module_variables = mvs; + tps_pattern_force = pattern_forces; + } = tps in + (pat, !!new_penv, pattern_forces, pvs, mvs) let type_pattern_list category no_existentials env spatl expected_tys allow_modules = - reset_pattern allow_modules; - let new_env = ref env in + let tps = create_type_pat_state allow_modules in + let equations_scope = get_current_level () in + let new_penv = Pattern_env.make env + ~equations_scope ~allow_recursive_equations:false in let type_pat (attrs, pat) ty = Builtin_attributes.warning_scope ~ppwarning:false attrs (fun () -> - type_pat category ~no_existentials new_env pat ty + type_pat tps category ~no_existentials new_penv pat ty ) in let patl = List.map2 type_pat spatl expected_tys in - let pvs = get_ref pattern_variables in - let mvs = get_ref module_variables in - (patl, !new_env, get_ref pattern_force, pvs, mvs) + let { tps_pattern_variables = pvs; + tps_module_variables = mvs; + tps_pattern_force = pattern_forces; + } = tps in + (patl, !!new_penv, pattern_forces, pvs, mvs) let type_class_arg_pattern cl_num val_env met_env l spat = - reset_pattern Modules_rejected; + let tps = create_type_pat_state Modules_rejected in let nv = newvar () in + let equations_scope = get_current_level () in + let new_penv = Pattern_env.make val_env + ~equations_scope ~allow_recursive_equations:false in let pat = - type_pat Value ~no_existentials:In_class_args (ref val_env) spat nv in + type_pat tps Value ~no_existentials:In_class_args new_penv spat nv in if has_variants pat then begin Parmatch.pressure_variants val_env [pat]; finalize_variants pat; end; - List.iter (fun f -> f()) (get_ref pattern_force); - if is_optional l then unify_pat (ref val_env) pat (type_option (newvar ())); + List.iter (fun f -> f()) tps.tps_pattern_force; + if is_optional l then unify_pat val_env pat (type_option (newvar ())); let (pv, val_env, met_env) = List.fold_right (fun {pv_id; pv_type; pv_loc; pv_as_var; pv_attributes} @@ -2088,21 +2201,22 @@ let type_class_arg_pattern cl_num val_env met_env l spat = met_env in ((id', pv_id, pv_type)::pv, val_env, met_env)) - !pattern_variables ([], val_env, met_env) + tps.tps_pattern_variables ([], val_env, met_env) in (pat, pv, val_env, met_env) let type_self_pattern env spat = let open Ast_helper in let spat = Pat.mk(Ppat_alias (spat, mknoloc "selfpat-*")) in - reset_pattern Modules_rejected; + let tps = create_type_pat_state Modules_rejected in let nv = newvar() in + let equations_scope = get_current_level () in + let new_penv = Pattern_env.make env + ~equations_scope ~allow_recursive_equations:false in let pat = - type_pat Value ~no_existentials:In_self_pattern (ref env) spat nv in - List.iter (fun f -> f()) (get_ref pattern_force); - let pv = !pattern_variables in - pattern_variables := []; - pat, pv + type_pat tps Value ~no_existentials:In_self_pattern new_penv spat nv in + List.iter (fun f -> f()) tps.tps_pattern_force; + pat, tps.tps_pattern_variables type delayed_check = ((unit -> unit) * Warnings.state) @@ -2233,12 +2347,12 @@ type abort_reason = Adds_constraints | Empty type unification_state = { snapshot: snapshot; env: Env.t; } -let save_state env = +let save_state penv = { snapshot = Btype.snapshot (); - env = !env; } -let set_state s env = + env = !!penv; } +let set_state s penv = Btype.backtrack s.snapshot; - env := s.env + Pattern_env.set_env penv s.env (** Find the first alternative in the tree of or-patterns for which [f] does not raise an error. If all fail, the last error is @@ -2262,19 +2376,21 @@ let enter_nonsplit_or info = Refine_or {inside_nonsplit_or = true} in { info with splitting_mode } -let rec check_counter_example_pat ~info ~env tp expected_ty k = - let check_rec ?(info=info) ?(env=env) = - check_counter_example_pat ~info ~env in +let rec check_counter_example_pat + ~info ~(penv : Pattern_env.t) type_pat_state tp expected_ty k = + let check_rec ?(info=info) ?(penv=penv) = + check_counter_example_pat ~info ~penv type_pat_state in let loc = tp.pat_loc in - let refine = Some true in + let refine = true in let solve_expected (x : pattern) : pattern = - unify_pat ~refine env x (instance expected_ty); + unify_pat_types_refine ~refine x.pat_loc penv x.pat_type + (instance expected_ty); x in (* "make pattern" and "make pattern then continue" *) let mp ?(pat_type = expected_ty) desc = { pat_desc = desc; pat_loc = loc; pat_extra=[]; - pat_type = instance pat_type; pat_attributes = []; pat_env = !env } in + pat_type = instance pat_type; pat_attributes = []; pat_env = !!penv } in let mkp k ?pat_type desc = k (mp ?pat_type desc) in let must_backtrack_on_gadt = match info.splitting_mode with @@ -2286,7 +2402,7 @@ let rec check_counter_example_pat ~info ~env tp expected_ty k = let k' () = mkp k tp.pat_desc in if info.explosion_fuel <= 0 then k' () else let decrease n = {info with explosion_fuel = info.explosion_fuel - n} in - begin match Parmatch.pats_of_type !env expected_ty with + begin match Parmatch.pats_of_type !!penv expected_ty with | [] -> raise Empty_branch | [{pat_desc = Tpat_any}] -> k' () | [tp] -> check_rec ~info:(decrease 1) tp expected_ty k @@ -2299,13 +2415,13 @@ let rec check_counter_example_pat ~info ~env tp expected_ty k = in check_rec ~info:(decrease 5) tp expected_ty k end - | Tpat_alias (p, _, _) -> check_rec ~info p expected_ty k + | Tpat_alias (p, _, _, _) -> check_rec ~info p expected_ty k | Tpat_constant cst -> - let cst = constant_or_raise !env loc (Untypeast.constant cst) in + let cst = constant_or_raise !!penv loc (Untypeast.constant cst) in k @@ solve_expected (mp (Tpat_constant cst) ~pat_type:(type_constant cst)) | Tpat_tuple tpl -> assert (List.length tpl >= 2); - let expected_tys = solve_Ppat_tuple ~refine loc env tpl expected_ty in + let expected_tys = solve_Ppat_tuple ~refine loc penv tpl expected_ty in let tpl_ann = List.combine tpl expected_tys in map_fold_cont (fun (p,t) -> check_rec p t) tpl_ann (fun pl -> mkp k (Tpat_tuple pl) @@ -2314,7 +2430,8 @@ let rec check_counter_example_pat ~info ~env tp expected_ty k = if constr.cstr_generalized && must_backtrack_on_gadt then raise Need_backtrack; let (ty_args, existential_ctyp) = - solve_Ppat_construct ~refine env loc constr None None expected_ty + solve_Ppat_construct + ~refine type_pat_state penv loc constr None None expected_ty in map_fold_cont (fun (p,t) -> check_rec p t) @@ -2324,7 +2441,7 @@ let rec check_counter_example_pat ~info ~env tp expected_ty k = | Tpat_variant(tag, targ, _) -> let constant = (targ = None) in let arg_type, row, pat_type = - solve_Ppat_variant ~refine loc env tag constant expected_ty in + solve_Ppat_variant ~refine loc penv tag constant expected_ty in let k arg = mkp k ~pat_type (Tpat_variant(tag, arg, ref row)) in begin @@ -2337,13 +2454,13 @@ let rec check_counter_example_pat ~info ~env tp expected_ty k = let record_ty = generic_instance expected_ty in let type_label_pat (label_lid, label, targ) k = let ty_arg = - solve_Ppat_record_field ~refine loc env label label_lid record_ty in + solve_Ppat_record_field ~refine loc penv label label_lid record_ty in check_rec targ ty_arg (fun arg -> k (label_lid, label, arg)) in map_fold_cont type_label_pat fields (fun fields -> mkp k (Tpat_record (fields, closed))) | Tpat_array tpl -> - let ty_elt = solve_Ppat_array ~refine loc env expected_ty in + let ty_elt = solve_Ppat_array ~refine loc penv expected_ty in map_fold_cont (fun p -> check_rec p ty_elt) tpl (fun pl -> mkp k (Tpat_array pl)) | Tpat_or(tp1, tp2, _) -> @@ -2352,22 +2469,22 @@ let rec check_counter_example_pat ~info ~env tp expected_ty k = match info.splitting_mode with | Backtrack_or -> true | Refine_or _ -> false in - let state = save_state env in + let state = save_state penv in let split_or tp = let type_alternative pat = - set_state state env; check_rec pat expected_ty k in + set_state state penv; check_rec pat expected_ty k in find_valid_alternative type_alternative tp in if must_split then split_or tp else - let check_rec_result env tp : (_, abort_reason) result = + let check_rec_result penv tp : (_, abort_reason) result = let info = enter_nonsplit_or info in - match check_rec ~info tp expected_ty ~env (fun x -> x) with + match check_rec ~info tp expected_ty ~penv (fun x -> x) with | res -> Ok res | exception Need_backtrack -> Error Adds_constraints | exception Empty_branch -> Error Empty in - let p1 = check_rec_result (ref !env) tp1 in - let p2 = check_rec_result (ref !env) tp2 in + let p1 = check_rec_result (Pattern_env.copy penv) tp1 in + let p2 = check_rec_result (Pattern_env.copy penv) tp2 in begin match p1, p2 with | Error Empty, Error Empty -> raise Empty_branch @@ -2387,56 +2504,57 @@ let rec check_counter_example_pat ~info ~env tp expected_ty k = mkp k (Tpat_or (p1, p2, None)) end | Tpat_lazy tp1 -> - let nv = solve_Ppat_lazy ~refine loc env expected_ty in + let nv = solve_Ppat_lazy ~refine loc penv expected_ty in (* do not explode under lazy: PR#7421 *) check_rec ~info:(no_explosion info) tp1 nv (fun p1 -> mkp k (Tpat_lazy p1)) -let check_counter_example_pat ~counter_example_args - ?(lev=get_current_level()) env tp expected_ty = - Misc.protect_refs [Misc.R (gadt_equations_level, Some lev)] (fun () -> - check_counter_example_pat - ~info:counter_example_args ~env tp expected_ty (fun x -> x) - ) +let check_counter_example_pat ~counter_example_args penv tp expected_ty = + (* [check_counter_example_pat] doesn't use [type_pat_state] in an interesting + way -- one of the functions it calls writes an entry into + [tps_pattern_forces] -- so we can just ignore module patterns. *) + let type_pat_state = create_type_pat_state Modules_ignored in + check_counter_example_pat + ~info:counter_example_args ~penv type_pat_state tp expected_ty (fun x -> x) (* this function is passed to Partial.parmatch to type check gadt nonexhaustiveness *) -let partial_pred ~lev ~allow_modules ~splitting_mode ?(explode=0) - env expected_ty p = - let env = ref env in - let state = save_state env in +let partial_pred ~lev ~splitting_mode ?(explode=0) env expected_ty p = + let penv = Pattern_env.make env + ~equations_scope:lev ~allow_recursive_equations:true in + let state = save_state penv in let counter_example_args = { splitting_mode; explosion_fuel = explode; } in try - reset_pattern allow_modules; let typed_p = - check_counter_example_pat ~lev ~counter_example_args env p expected_ty in - set_state state env; + check_counter_example_pat ~counter_example_args penv p expected_ty + in + set_state state penv; (* types are invalidated but we don't need them here *) Some typed_p with Error _ | Empty_branch -> - set_state state env; + set_state state penv; None let check_partial - ?(lev=get_current_level ()) allow_modules env expected_ty loc cases + ?(lev=get_current_level ()) env expected_ty loc cases = let explode = match cases with [_] -> 5 | _ -> 0 in let splitting_mode = Refine_or {inside_nonsplit_or = false} in Parmatch.check_partial - (partial_pred ~lev ~allow_modules ~splitting_mode ~explode env expected_ty) + (partial_pred ~lev ~splitting_mode ~explode env expected_ty) loc cases let check_unused - ?(lev=get_current_level ()) allow_modules env expected_ty cases + ?(lev=get_current_level ()) env expected_ty cases = Parmatch.check_unused (fun refute pat -> match - partial_pred ~lev ~allow_modules ~splitting_mode:Backtrack_or ~explode:5 + partial_pred ~lev ~splitting_mode:Backtrack_or ~explode:5 env expected_ty pat with Some pat' when refute -> @@ -2619,19 +2737,21 @@ and is_nonexpansive_opt = function let maybe_expansive e = not (is_nonexpansive e) -let check_recursive_bindings env valbinds = +let annotate_recursive_bindings env valbinds = let ids = let_bound_idents valbinds in - List.iter - (fun {vb_expr} -> - if not (Rec_check.is_valid_recursive_expression ids vb_expr) then + List.map + (fun {vb_pat; vb_expr; vb_rec_kind = _; vb_attributes; vb_loc} -> + match (Value_rec_check.is_valid_recursive_expression ids vb_expr) with + | None -> raise(error(vb_expr.exp_loc, env, Illegal_letrec_expr)) - ) + | Some vb_rec_kind -> + { vb_pat; vb_expr; vb_rec_kind; vb_attributes; vb_loc}) valbinds let check_recursive_class_bindings env ids exprs = List.iter (fun expr -> - if not (Rec_check.is_valid_class_expr ids expr) then + if not (Value_rec_check.is_valid_class_expr ids expr) then raise(error(expr.cl_loc, env, Illegal_class_expr))) exprs @@ -2660,14 +2780,55 @@ let rec approx_type env sty = approx_type env sty | _ -> newvar () +let type_pattern_approx env spat = + match spat.ppat_desc with + | Ppat_constraint (_, sty) -> approx_type env sty + | _ -> newvar () + +let type_approx_fun env label default spat ret_ty = + let ty = type_pattern_approx env spat in + let ty = + match label, default with + | (Nolabel | Labelled _), _ -> ty + | Optional _, None -> + unify_pat_types spat.ppat_loc env ty (type_option (newvar ())); + ty + | Optional _, Some _ -> + type_option ty + in + newty (Tarrow (label, ty, ret_ty, commu_ok)) + +let type_approx_constraint env ty constraint_ ~loc = + match constraint_ with + | Pconstraint constrain -> + let ty_constrain = approx_type env constrain in + begin try unify env ty ty_constrain with Unify err -> + raise (error (loc, env, Expr_type_clash (err, None, None))) + end; + ty_constrain + | Pcoerce (constrain, coerce) -> + let approx_ty_opt = function + | None -> newvar () + | Some sty -> approx_type env sty + in + let ty_constrain = approx_ty_opt constrain + and ty_coerce = approx_type env coerce in + begin try unify env ty ty_constrain with Unify err -> + raise (error (loc, env, Expr_type_clash (err, None, None))) + end; + ty_coerce + +let type_approx_constraint_opt env ty constraint_ ~loc = + match constraint_ with + | None -> ty + | Some constraint_ -> type_approx_constraint env ty constraint_ ~loc + let rec type_approx env sexp = + let loc = sexp.pexp_loc in match sexp.pexp_desc with Pexp_let (_, _, e) -> type_approx env e - | Pexp_fun (p, _, _, e) -> - let ty = if is_optional p then type_option (newvar ()) else newvar () in - newty (Tarrow(p, ty, type_approx env e, commu_ok)) - | Pexp_function ({pc_rhs=e}::_) -> - newty (Tarrow(Nolabel, newvar (), type_approx env e, commu_ok)) + | Pexp_function (params, c, body) -> + type_approx_function env params c body ~loc | Pexp_match (_, {pc_rhs=e}::_) -> type_approx env e | Pexp_try (e, _) -> type_approx env e | Pexp_tuple l -> newty (Ttuple(List.map (type_approx env) l)) @@ -2675,25 +2836,34 @@ let rec type_approx env sexp = | Pexp_sequence (_,e) -> type_approx env e | Pexp_constraint (e, sty) -> let ty = type_approx env e in - let ty1 = approx_type env sty in - begin try unify env ty ty1 with Unify err -> - raise(error(sexp.pexp_loc, env, Expr_type_clash (err, None, None))) - end; - ty1 + type_approx_constraint env ty (Pconstraint sty) ~loc | Pexp_coerce (e, sty1, sty2) -> - let approx_ty_opt = function - | None -> newvar () - | Some sty -> approx_type env sty - in - let ty = type_approx env e - and ty1 = approx_ty_opt sty1 - and ty2 = approx_type env sty2 in - begin try unify env ty ty1 with Unify err -> - raise(error(sexp.pexp_loc, env, Expr_type_clash (err, None, None))) - end; - ty2 + let ty = type_approx env e in + type_approx_constraint env ty (Pcoerce (sty1, sty2)) ~loc | _ -> newvar () +and type_approx_function env params c body ~loc = + (* We can approximate types up to the first newtype parameter, whereupon + we give up. + *) + match params with + | { pparam_desc = Pparam_val (label, default, pat) } :: params -> + type_approx_fun env label default pat + (type_approx_function env params c body ~loc) + | { pparam_desc = Pparam_newtype _ } :: _ -> + newvar () + | [] -> + let body_ty = + match body with + | Pfunction_body body -> + type_approx env body + | Pfunction_cases ({pc_rhs = e} :: _, _, _) -> + newty (Tarrow (Nolabel, newvar (), type_approx env e, commu_ok)) + | Pfunction_cases ([], _, _) -> + newvar () + in + type_approx_constraint_opt env body_ty c ~loc + (* List labels in a function type, and whether return type is a variable *) let rec list_labels_aux env visited ls ty_fun = let ty = expand_head env ty_fun in @@ -2719,7 +2889,7 @@ let check_univars env kind exp ty_expected vars = (* Enforce scoping for type_let: since body is not generic, instance_poly only makes copies of nodes that have a Tunivar as descendant *) - let _, ty' = instance_poly true tl body in + let _, ty' = instance_poly ~fixed:true tl body in let vars, exp_ty = instance_parameterized_type vars exp.exp_type in unify_exp_types exp.exp_loc env exp_ty ty'; ((exp_ty, vars), exp_ty::vars) @@ -2973,8 +3143,8 @@ let check_absent_variant env = create_row ~fields ~more:(newvar ()) ~closed:false ~fixed:None ~name:None in (* Should fail *) - unify_pat (ref env) {pat with pat_type = newty (Tvariant row')} - (correct_levels pat.pat_type) + unify_pat env {pat with pat_type = newty (Tvariant row')} + (correct_levels pat.pat_type) | _ -> () } (* Getting proper location of already typed expressions. @@ -3004,8 +3174,8 @@ let rec name_pattern default = function [] -> Ident.create_local default | p :: rem -> match p.pat_desc with - Tpat_var (id, _) -> id - | Tpat_alias(_, id, _) -> id + Tpat_var (id, _, _) -> id + | Tpat_alias(_, id, _, _) -> id | _ -> name_pattern default rem let name_cases default lst = @@ -3121,6 +3291,24 @@ let vb_pat_constraint ({pvb_pat=pat; pvb_expr = exp; _ } as vb) = Pat.constraint_ ~loc:{pat.ppat_loc with Location.loc_ghost=true} pat sty | _ -> pat +(** The body of a constraint or coercion. The "body" may be either an expression + or a list of function cases. This type is polymorphic in the data returned + out of typing so that typing an expression body can return an expression + and typing a function cases body can return the cases. +*) +type 'ret constraint_arg = + { type_without_constraint: Env.t -> 'ret * type_expr; + (** [type_without_constraint] types a body (e :> t) where there is no + constraint. + *) + type_with_constraint: Env.t -> type_expr -> 'ret; + (** [type_with_constraint] types a body (e : t) or (e : t :> t') in + the presence of a constraint. + *) + is_self: 'ret -> bool; + (** Whether the thing being constrained is a [Val_self] ident. *) + } + let rec type_exp ?recarg env sexp = (* We now delegate everything to type_expect *) type_expect ?recarg env sexp (mk_expected (newvar ())) @@ -3132,13 +3320,13 @@ let rec type_exp ?recarg env sexp = at [generic_level] (but its variables no higher than [!current_level]). *) -and type_expect ?in_function ?recarg env sexp ty_expected_explained = +and type_expect ?recarg env sexp ty_expected_explained = Msupport.with_saved_types ~warning_attribute:sexp.pexp_attributes ?save_part:None (fun () -> let saved = save_levels () in try - type_expect_ ?in_function ?recarg env sexp ty_expected_explained + type_expect_ ?recarg env sexp ty_expected_explained with exn -> Msupport.erroneous_type_register ty_expected_explained.ty; raise_error exn; @@ -3163,7 +3351,7 @@ and type_expect ?in_function ?recarg env sexp ty_expected_explained = }) and type_expect_ - ?in_function ?(recarg=Rejected) + ?(recarg=Rejected) env sexp ty_expected_explained = let { ty = ty_expected; explanation } = ty_expected_explained in let loc = sexp.pexp_loc in @@ -3222,7 +3410,7 @@ and type_expect_ if is_format then let format_parsetree = { (type_format loc str env) with pexp_loc = sexp.pexp_loc } in - type_expect ?in_function env format_parsetree ty_expected_explained + type_expect env format_parsetree ty_expected_explained else rue { exp_desc = Texp_constant cst; @@ -3244,7 +3432,7 @@ and type_expect_ when may_contain_gadts spat -> (* TODO: allow non-empty attributes? *) let sval = vb_exp_constraint vb in - type_expect ?in_function env + type_expect env {sexp with pexp_desc = Pexp_match (sval, [Ast_helper.Exp.case spat sbody])} ty_expected_explained @@ -3276,9 +3464,9 @@ and type_expect_ allow_modules in let body = type_expect new_env sbody ty_expected_explained in - let () = - if rec_flag = Recursive then - check_recursive_bindings env pat_exp_list + let pat_exp_list = match rec_flag with + | Recursive -> annotate_recursive_bindings env pat_exp_list + | Nonrecursive -> pat_exp_list in (* The "bound expressions" component of the scope escape check. @@ -3318,49 +3506,60 @@ and type_expect_ exp_type = body.exp_type; exp_attributes = sexp.pexp_attributes; exp_env = env } - | Pexp_fun (l, Some default, spat, sbody) -> - assert(is_optional l); (* default allowed only with optional argument *) - let open Ast_helper in - let default_loc = default.pexp_loc in - let default_ghost = {default.pexp_loc with loc_ghost = true} in - let scases = [ - Exp.case - (Pat.construct ~loc:default_ghost - (mknoloc (Longident.(Ldot (Lident "*predef*", "Some")))) - (Some ([], Pat.var ~loc:default_ghost (mknoloc "*sth*")))) - (Exp.ident ~loc:default_ghost (mknoloc (Longident.Lident "*sth*"))); - - Exp.case - (Pat.construct ~loc:default_loc - (mknoloc (Longident.(Ldot (Lident "*predef*", "None")))) - None) - default; - ] - in - let sloc = - { Location.loc_start = spat.ppat_loc.Location.loc_start; - loc_end = default_loc.Location.loc_end; - loc_ghost = true } - in - let smatch = - Exp.match_ ~loc:sloc - (Exp.ident ~loc (mknoloc (Longident.Lident "*opt*"))) - scases - in - let pat = Pat.var ~loc:sloc (mknoloc "*opt*") in - let body = - Exp.let_ ~loc Nonrecursive - ~attrs:[Attr.mk (mknoloc "#default") (PStr [])] - [Vb.mk spat smatch] sbody + | Pexp_function (params, body_constraint, body) -> + let in_function = ty_expected_explained, loc in + let exp_type, params, body, newtypes, contains_gadt = + type_function env params body_constraint body ty_expected ~in_function + ~first:true in - type_function ?in_function loc sexp.pexp_attributes env - ty_expected_explained l [Exp.case pat body] - | Pexp_fun (l, None, spat, sbody) -> - type_function ?in_function loc sexp.pexp_attributes env - ty_expected_explained l [Ast_helper.Exp.case spat sbody] - | Pexp_function caselist -> - type_function ?in_function - loc sexp.pexp_attributes env ty_expected_explained Nolabel caselist + (* Require that the n-ary function is known to have at least n arrows + in the type. This prevents GADT equations introduced by the parameters + from hiding arrows from the resulting type. + + Performance hack: Only do this check when any of [params] contains a + GADT, as this is the only opportunity for arrows to be hidden from the + resulting type. + *) + begin match contains_gadt with + | No_gadt -> () + | Contains_gadt -> + let ty_function = + List.fold_right + (fun param rest_ty -> + newty + (Tarrow (param.fp_arg_label, newvar (), rest_ty, commu_ok))) + params + (match body with + | Tfunction_body _ -> newvar () + | Tfunction_cases _ -> + newty (Tarrow (Nolabel, newvar (), newvar (), commu_ok))) + in + try unify env ty_function exp_type + with Unify trace -> + let syntactic_arity = + List.length params + + (match body with + | Tfunction_body _ -> 0 + | Tfunction_cases _ -> 1) + in + let err = + Function_arity_type_clash + { syntactic_arity; + type_constraint = exp_type; + trace; + } + in + raise (Error (loc, env, err)) + end; + re + { exp_desc = Texp_function (params, body); + exp_loc = loc; + exp_extra = + List.map (fun { txt; loc } -> Texp_newtype txt, loc, []) newtypes; + exp_type; + exp_attributes = sexp.pexp_attributes; + exp_env = env; + } | Pexp_apply(sfunct, sargs) -> assert (sargs <> []); let rec lower_args seen ty_fun = @@ -3417,7 +3616,8 @@ and type_expect_ in let cases, partial = type_cases Computation env - arg.exp_type ty_expected_explained true loc caselist in + arg.exp_type ty_expected_explained + ~check_if_total:true loc caselist in if List.for_all (fun c -> pattern_needs_partial_application_check c.c_lhs) cases @@ -3432,7 +3632,8 @@ and type_expect_ let body = type_expect env sbody ty_expected_explained in let cases, _ = type_cases Value env - Predef.type_exn ty_expected_explained false loc caselist in + Predef.type_exn ty_expected_explained + ~check_if_total:false loc caselist in re { exp_desc = Texp_try(body, cases); exp_loc = loc; exp_extra = []; @@ -3605,14 +3806,14 @@ and type_expect_ | Some exp -> let ty_exp = instance exp.exp_type in let unify_kept lbl = - let _, ty_arg1, ty_res1 = instance_label false lbl in + let _, ty_arg1, ty_res1 = instance_label ~fixed:false lbl in unify_exp_types exp.exp_loc env ty_exp ty_res1; match matching_label lbl with | lid, _lbl, lbl_exp -> (* do not connect result types for overridden labels *) Overridden (lid, lbl_exp) | exception Not_found -> begin - let _, ty_arg2, ty_res2 = instance_label false lbl in + let _, ty_arg2, ty_res2 = instance_label ~fixed:false lbl in unify_exp_types loc env ty_arg1 ty_arg2; with_explanation (fun () -> unify_exp_types loc env (instance ty_expected) ty_res2); @@ -3661,7 +3862,7 @@ and type_expect_ let (record, label, _) = type_label_access env srecord Env.Projection lid in - let (_, ty_arg, ty_res) = instance_label false label in + let (_, ty_arg, ty_res) = instance_label ~fixed:false label in unify_exp env record ty_res; rue { exp_desc = Texp_field(record, lid, label); @@ -3736,11 +3937,16 @@ and type_expect_ | Pexp_while(scond, sbody) -> let cond = type_expect env scond (mk_expected ~explanation:While_loop_conditional Predef.type_bool) in + let exp_type = + match cond.exp_desc with + | Texp_construct(_, {cstr_name="true"}, _) -> instance ty_expected + | _ -> instance Predef.type_unit + in let body = type_statement ~explanation:While_loop_body env sbody in rue { exp_desc = Texp_while(cond, body); exp_loc = loc; exp_extra = []; - exp_type = instance Predef.type_unit; + exp_type; exp_attributes = sexp.pexp_attributes; exp_env = env } | Pexp_for(param, slow, shigh, dir, sbody) -> @@ -3771,98 +3977,20 @@ and type_expect_ exp_attributes = sexp.pexp_attributes; exp_env = env } | Pexp_constraint (sarg, sty) -> - (* Pretend separate = true, 1% slowdown for lablgtk *) - let cty = - with_local_level begin fun () -> - Typetexp.transl_simple_type env ~closed:false sty - end - ~post:(fun cty -> generalize_structure cty.ctyp_type) - in - let ty = cty.ctyp_type in - let (arg, ty') = (type_argument env sarg ty (instance ty), instance ty) in + let (ty, exp_extra) = type_constraint env sty in + let arg = type_argument env sarg ty (instance ty) in rue { exp_desc = arg.exp_desc; exp_loc = arg.exp_loc; - exp_type = ty'; + exp_type = instance ty; exp_attributes = arg.exp_attributes; exp_env = env; - exp_extra = - (Texp_constraint cty, loc, sexp.pexp_attributes) :: arg.exp_extra; + exp_extra = (exp_extra, loc, sexp.pexp_attributes) :: arg.exp_extra; } | Pexp_coerce(sarg, sty, sty') -> - (* Pretend separate = true, 1% slowdown for lablgtk *) - (* Also see PR#7199 for a problem with the following: - let separate = !Clflags.principal || Env.has_local_constraints env in*) - let (arg, ty',cty,cty') = - match sty with - | None -> - let (cty', ty', force) = - Typetexp.transl_simple_type_delayed env sty' - in - let arg, gen = - let lv = get_current_level () in - with_local_level begin fun () -> - let arg = type_exp env sarg in - (arg, generalizable lv arg.exp_type) - end - ~post:(fun (arg,_) -> enforce_current_level env arg.exp_type) - in - begin match arg.exp_desc, !self_coercion, get_desc ty' with - Texp_ident(_, _, {val_kind=Val_self _}), (path,r) :: _, - Tconstr(path',_,_) when Path.same path path' -> - (* prerr_endline "self coercion"; *) - r := loc :: !r; - force () - | _ when free_variables ~env arg.exp_type = [] - && free_variables ~env ty' = [] -> - if not gen && (* first try a single coercion *) - let snap = snapshot () in - let ty, _b = enlarge_type env ty' in - try - force (); Ctype.unify env arg.exp_type ty; true - with Unify _ -> - backtrack snap; false - then () - else begin try - let force' = subtype env arg.exp_type ty' in - force (); force' (); - if not gen && !Clflags.principal then - Location.prerr_warning loc - (Warnings.Not_principal "this ground coercion"); - with Subtype err -> - (* prerr_endline "coercion failed"; *) - raise(error(loc, env, Not_subtype err)) - end; - | _ -> - let ty, b = enlarge_type env ty' in - force (); - begin try Ctype.unify env arg.exp_type ty with Unify err -> - let expanded = full_expand ~may_forget_scope:true env ty' in - raise(error(sarg.pexp_loc, env, - Coercion_failure({ty = ty'; expanded}, err, b))) - end - end; - (arg, ty', None, cty') - | Some sty -> - let cty, ty, force, cty', ty', force' = - with_local_level_iter ~post:generalize_structure begin fun () -> - let (cty, ty, force) = - Typetexp.transl_simple_type_delayed env sty - and (cty', ty', force') = - Typetexp.transl_simple_type_delayed env sty' - in - ((cty, ty, force, cty', ty', force'), - [ty; ty']) - end - in - begin try - let force'' = subtype env (instance ty) (instance ty') in - force (); force' (); force'' () - with Subtype err -> - raise(error(loc, env, Not_subtype err)) - end; - (type_argument env sarg ty (instance ty), - instance ty', Some cty, cty') + let arg, ty', exp_extra = + type_coerce (expression_constraint sarg) env loc sty sty' + ~loc_arg:sarg.pexp_loc in rue { exp_desc = arg.exp_desc; @@ -3870,8 +3998,7 @@ and type_expect_ exp_type = ty'; exp_attributes = arg.exp_attributes; exp_env = env; - exp_extra = (Texp_coerce (cty, cty'), loc, sexp.pexp_attributes) :: - arg.exp_extra; + exp_extra = (exp_extra, loc, sexp.pexp_attributes) :: arg.exp_extra; } | Pexp_send (e, {txt=met}) -> let obj = type_exp env e in @@ -3889,7 +4016,7 @@ and type_expect_ if !Clflags.principal && get_level typ <> generic_level then Location.prerr_warning loc (Warnings.Not_principal "this use of a polymorphic method"); - snd (instance_poly false tl ty) + snd (instance_poly ~fixed:false tl ty) | Tvar _ -> let ty' = newvar () in unify env (instance typ) (newty(Tpoly(ty',[]))); @@ -4019,10 +4146,12 @@ and type_expect_ | _ -> Mp_present in let scope = create_scope () in + let md_uid = Uid.mk ~current_unit:(Env.get_unit_name ()) in + let md_shape = Shape.set_uid_if_none md_shape md_uid in let md = { md_type = modl.mod_type; md_attributes = []; md_loc = name.loc; - md_uid = Uid.mk ~current_unit:(Env.get_unit_name ()); } + md_uid; } in let (id, new_env) = match name.txt with @@ -4058,7 +4187,7 @@ and type_expect_ exp_attributes = sexp.pexp_attributes; exp_env = env } | Pexp_letexception(cd, sbody) -> - let (cd, newenv) = Typedecl.transl_exception env cd in + let (cd, newenv, _shape) = Typedecl.transl_exception env cd in let body = type_expect newenv sbody ty_expected_explained in re { exp_desc = Texp_letexception(cd, body); @@ -4138,7 +4267,7 @@ and type_expect_ with_local_level begin fun () -> let vars, ty'' = with_local_level_if_principal - (fun () -> instance_poly true tl ty') + (fun () -> instance_poly ~fixed:true tl ty') ~post:(fun (_,ty'') -> generalize_structure ty'') in let exp = type_expect env sbody (mk_expected ty'') in @@ -4159,36 +4288,9 @@ and type_expect_ re { exp with exp_extra = (Texp_poly cty, loc, sexp.pexp_attributes) :: exp.exp_extra } | Pexp_newtype({txt=name} as label_loc, sbody) -> - let ty = - if Typetexp.valid_tyvar_name name then - newvar ~name () - else - newvar () - in - (* Use [with_local_level] just for scoping *) - let body, ety, id = with_local_level begin fun () -> - (* Create a fake abstract type declaration for [name]. *) - let decl = new_local_type ~loc () in - let scope = create_scope () in - let (id, new_env) = Env.enter_type ~scope name decl env in - - let body = type_exp new_env sbody in - (* Replace every instance of this type constructor in the resulting - type. *) - let seen = Hashtbl.create 8 in - let rec replace t = - if Hashtbl.mem seen (get_id t) then () - else begin - Hashtbl.add seen (get_id t) (); - match get_desc t with - | Tconstr (Path.Pident id', _, _) when id == id' -> link_type t ty - | _ -> Btype.iter_type_expr replace t - end - in - let ety = Subst.type_expr Subst.identity body.exp_type in - replace ety; - (body, ety, id) - end + let body, ety, id = type_newtype loc env name (fun env -> + let expr = type_exp env sbody in + expr, expr.exp_type) in (* non-expansive if the body is non-expansive, so we don't introduce any new extra node in the typed AST. *) @@ -4285,7 +4387,8 @@ and type_expect_ let scase = Ast_helper.Exp.case spat_params sbody in let cases, partial = type_cases Value env - ty_params (mk_expected ty_func_result) true loc [scase] + ty_params (mk_expected ty_func_result) + ~check_if_total:true loc [scase] in let body = match cases with @@ -4354,6 +4457,177 @@ and type_expect_ exp_attributes = sexp.pexp_attributes; exp_env = env } +and expression_constraint pexp = + { type_without_constraint = (fun env -> + let expr = type_exp env pexp in + expr, expr.exp_type); + type_with_constraint = + (fun env ty -> type_argument env pexp ty (instance ty)); + is_self = + (fun expr -> + match expr.exp_desc with + | Texp_ident (_, _, { val_kind = Val_self _ }) -> true + | _ -> false); + } + +(** Types a body in the scope of a coercion (with an optional constraint) + and returns the inferred type. See the comment on {!constraint_arg} for + an explanation of how this typechecking is polymorphic in the body. +*) +and type_coerce + : type a. a constraint_arg -> _ -> _ -> _ -> _ -> loc_arg:_ + -> a * type_expr * exp_extra = + fun constraint_arg env loc sty sty' ~loc_arg -> + (* Pretend separate = true, 1% slowdown for lablgtk *) + (* Also see PR#7199 for a problem with the following: + let separate = !Clflags.principal || Env.has_local_constraints env in*) + let { is_self; type_with_constraint; type_without_constraint } = + constraint_arg + in + match sty with + | None -> + let (cty', ty', force) = + Typetexp.transl_simple_type_delayed env sty' + in + let arg, arg_type, gen = + let lv = get_current_level () in + with_local_level begin fun () -> + let arg, arg_type = type_without_constraint env in + arg, arg_type, generalizable lv arg_type + end + ~post:(fun (_, arg_type, _) -> enforce_current_level env arg_type) + in + begin match !self_coercion, get_desc ty' with + | ((path, r) :: _, Tconstr (path', _, _)) + when is_self arg && Path.same path path' -> + (* prerr_endline "self coercion"; *) + r := loc :: !r; + force () + | _ when free_variables ~env arg_type = [] + && free_variables ~env ty' = [] -> + if not gen && (* first try a single coercion *) + let snap = snapshot () in + let ty, _b = enlarge_type env ty' in + try + force (); Ctype.unify env arg_type ty; true + with Unify _ -> + backtrack snap; false + then () + else begin try + let force' = subtype env arg_type ty' in + force (); force' (); + if not gen && !Clflags.principal then + Location.prerr_warning loc + (Warnings.Not_principal "this ground coercion"); + with Subtype err -> + (* prerr_endline "coercion failed"; *) + raise (Error (loc, env, Not_subtype err)) + end; + | _ -> + let ty, b = enlarge_type env ty' in + force (); + begin try Ctype.unify env arg_type ty with Unify err -> + let expanded = full_expand ~may_forget_scope:true env ty' in + raise(Error(loc_arg, env, + Coercion_failure ({ ty = ty'; expanded }, err, b))) + end + end; + (arg, ty', Texp_coerce (None, cty')) + | Some sty -> + let cty, ty, force, cty', ty', force' = + with_local_level_iter ~post:generalize_structure begin fun () -> + let (cty, ty, force) = + Typetexp.transl_simple_type_delayed env sty + and (cty', ty', force') = + Typetexp.transl_simple_type_delayed env sty' + in + ((cty, ty, force, cty', ty', force'), + [ ty; ty' ]) + end + in + begin try + let force'' = subtype env (instance ty) (instance ty') in + force (); force' (); force'' () + with Subtype err -> + raise (Error (loc, env, Not_subtype err)) + end; + (type_with_constraint env ty, + instance ty', Texp_coerce (Some cty, cty')) + +and type_constraint env sty = + (* Pretend separate = true, 1% slowdown for lablgtk *) + let cty = + with_local_level begin fun () -> + Typetexp.transl_simple_type env ~closed:false sty + end + ~post:(fun cty -> generalize_structure cty.ctyp_type) + in + cty.ctyp_type, Texp_constraint cty + +(** Types a body in the scope of a coercion (:>) or a constraint (:), and + unifies the inferred type with the expected type. + + @param loc the location of the overall constraint + @param loc_arg the location of the thing being constrained +*) +and type_constraint_expect + : type a. a constraint_arg -> _ -> _ -> loc_arg:_ -> _ -> _ -> a * _ * _ = + fun constraint_arg env loc ~loc_arg constraint_ ty_expected -> + let ret, ty, exp_extra = + match constraint_ with + | Pcoerce (ty_constrain, ty_coerce) -> + type_coerce constraint_arg env loc ty_constrain ty_coerce ~loc_arg + | Pconstraint ty_constrain -> + let ty, exp_extra = type_constraint env ty_constrain in + constraint_arg.type_with_constraint env ty, ty, exp_extra + in + unify_exp_types loc env ty (instance ty_expected); + ret, ty, exp_extra + +(** Typecheck the body of a newtype. The "body" of a newtype may be: + - an expression + - a suffix of function parameters together with a function body + That's why this function is polymorphic over the body. + + @param type_body A function that produces a type for the body given the + environment. When typechecking an expression, this is [type_exp]. + @return The type returned by [type_body] but with the Tconstr + nodes for the newtype properly linked. +*) +and type_newtype + : type a. _ -> _ -> _ -> (Env.t -> a * type_expr) -> a * type_expr * Ident.t = + fun loc env name type_body -> + let ty = + if Typetexp.valid_tyvar_name name then + newvar ~name () + else + newvar () + in + (* Use [with_local_level] just for scoping *) + with_local_level begin fun () -> + (* Create a fake abstract type declaration for [name]. *) + let decl = new_local_type ~loc Definition in + let scope = create_scope () in + let (id, new_env) = Env.enter_type ~scope name decl env in + + let result, exp_type = type_body new_env in + (* Replace every instance of this type constructor in the resulting + type. *) + let seen = Hashtbl.create 8 in + let rec replace t = + if Hashtbl.mem seen (get_id t) then () + else begin + Hashtbl.add seen (get_id t) (); + match get_desc t with + | Tconstr (Path.Pident id', _, _) when id == id' -> link_type t ty + | _ -> Btype.iter_type_expr replace t + end + in + let ety = Subst.type_expr Subst.identity exp_type in + replace ety; + (result, ety, id) + end + and type_ident env ?(recarg=Rejected) lid = let (path, desc) = Env.lookup_value ~loc:lid.loc lid.txt env in let is_recarg = @@ -4389,66 +4663,276 @@ and type_binding_op_ident env s = in path, desc -and type_function ?(in_function : (Location.t * type_expr) option) - loc attrs env ty_expected_explained arg_label caselist = - let { ty = ty_expected; explanation } = ty_expected_explained in - let (loc_fun, ty_fun) = - match in_function with Some p -> p - | None -> (loc, instance ty_expected) - in +(** Returns the argument type and then the return type. + + @param first Whether the parameter corresponding to the argument of + [ty_expected] is the first parameter to the (n-ary) function. This only + affects error messages. + @param in_function Information about the [Pexp_function] node that's in the + process of being typechecked (its overall type and its location). Again, + this is only used to improve error messages. +*) +and split_function_ty env ty_expected ~arg_label ~first ~in_function = + let { ty = ty_fun; explanation }, loc = in_function in let separate = !Clflags.principal || Env.has_local_constraints env in - let ty_arg, ty_res = - with_local_level_iter_if separate ~post:generalize_structure begin fun () -> - let (ty_arg, ty_res) = - try filter_arrow env (instance ty_expected) arg_label - with Filter_arrow_failed err -> - let err = match err with - | Unification_error unif_err -> - Expr_type_clash(unif_err, explanation, None) - | Label_mismatch { got; expected; expected_type} -> - Abstract_wrong_label { got; expected; expected_type; explanation } - | Not_a_function -> begin - match in_function with - | Some _ -> Too_many_arguments(ty_fun, explanation) - | None -> Not_a_function(ty_fun, explanation) - end + with_local_level_iter_if separate ~post:generalize_structure begin fun () -> + let ty_arg, ty_res = + try filter_arrow env (instance ty_expected) arg_label + with Filter_arrow_failed err -> + let err = match err with + | Unification_error unif_err -> + Expr_type_clash (unif_err, explanation, None) + | Label_mismatch { got; expected; expected_type } -> + Abstract_wrong_label { got; expected; expected_type; explanation } + | Not_a_function -> + if first + then Not_a_function (ty_fun, explanation) + else Too_many_arguments (ty_fun, explanation) + in + raise (Error(loc, env, err)) + in + let ty_arg = + if is_optional arg_label then + let tv = newvar () in + begin + try unify env ty_arg (type_option tv) + with Unify _ -> assert false + end; + type_option tv + else ty_arg + in + (ty_arg, ty_res), [ ty_arg; ty_res ] + end + +(* Typecheck parameters one at a time followed by the body. Later parameters + are checked in the scope of earlier ones. That's necessary to support + constructs like [fun (type a) (x : a) -> ...] and + [fun (module M : S) (x : M.t) -> ...]. + + Operates like [type_expect] in that it unifies the "type of the remaining + function params + body" with [ty_expected], and returns out the inferred + type. + + See [split_function_ty] for the meaning of [first] and [in_function]. + + Returns (inferred_ty, params, body, newtypes, contains_gadt), where: + - [newtypes] are the newtypes immediately bound by the prefix of function + parameters. These should be added to an [exp_extra] node. + - [contains_gadt] is whether any of [params] contains a GADT. Note + this does not indicate whether [body] contains a GADT (if it's + [Tfunction_cases]). +*) +and type_function + env params_suffix body_constraint body ty_expected ~first ~in_function + = + let ty_fun, (loc_function : Location.t) = in_function in + (* The "rest of the function" extends from the start of the first parameter + to the end of the overall function. The parser does not construct such + a location so we forge one for type errors. + *) + let loc : Location.t = + match params_suffix, body with + | param :: _, _ -> + { loc_start = param.pparam_loc.loc_start; + loc_end = loc_function.loc_end; + loc_ghost = true; + } + | [], Pfunction_body pexp -> pexp.pexp_loc + | [], Pfunction_cases (_, loc_cases, _) -> loc_cases + in + match params_suffix with + | { pparam_desc = Pparam_newtype newtype; pparam_loc = _ } :: rest -> + (* Check everything else in the scope of (type a). *) + let (params, body, newtypes, contains_gadt), exp_type, _ = + type_newtype loc env newtype.txt (fun env -> + let exp_type, params, body, newtypes, contains_gadt = + (* mimic the typing of Pexp_newtype by minting a new type var, + like [type_exp]. + *) + type_function env rest body_constraint body (newvar ()) + ~first:false ~in_function in + (params, body, newtypes, contains_gadt), exp_type) (* Merlin: we recover with an expected type of 'a -> 'b *) - let level = get_level (instance ty_expected) in + (* let level = get_level (instance ty_expected) in raise_error (error(loc_fun, env, err)); - (newvar2 level, newvar2 level) + (newvar2 level, newvar2 level) *) in - let ty_arg = - if is_optional arg_label then - let tv = newvar() in - begin - try unify env ty_arg (type_option tv) - with Unify _ -> assert false - end; - type_option tv - else ty_arg + with_explanation ty_fun.explanation (fun () -> + unify_exp_types loc env exp_type (instance ty_expected)); + exp_type, params, body, newtype :: newtypes, contains_gadt + | { pparam_desc = Pparam_val (arg_label, default_arg, pat); pparam_loc } + :: rest + -> + let ty_arg, ty_res = + split_function_ty env ty_expected ~arg_label ~first ~in_function in - ((ty_arg, ty_res), [ty_arg; ty_res]) - end - in - let cases, partial = - type_cases Value ~in_function:(loc_fun,ty_fun) env - ty_arg (mk_expected ty_res) true loc caselist in - let not_nolabel_function ty = - let ls, tvar = list_labels env ty in - List.for_all ((<>) Nolabel) ls && not tvar - in - if is_optional arg_label && not_nolabel_function ty_res then - Location.prerr_warning (List.hd cases).c_lhs.pat_loc - Warnings.Unerasable_optional_argument; - let param = name_cases "param" cases in - re { - exp_desc = Texp_function { arg_label; param; cases; partial; }; - exp_loc = loc; exp_extra = []; - exp_type = - instance (newgenty (Tarrow(arg_label, ty_arg, ty_res, commu_ok))); - exp_attributes = attrs; - exp_env = env } + (* [ty_arg_internal] is the type of the parameter viewed internally + to the function. This is different than [ty_arg] exactly for + optional arguments with defaults, where the external [ty_arg] + is optional and the internal view is not optional. + *) + let ty_arg_internal, default_arg = + match default_arg with + | None -> ty_arg, None + | Some default -> + assert (is_optional arg_label); + let ty_default = newvar () in + begin + try unify env (type_option ty_default) ty_arg + with Unify _ -> assert false; + end; + (* Issue#12668: Retain type-directed disambiguation of + ?x:(y : Variant.t = Constr) + *) + let default = + match pat.ppat_desc with + | Ppat_constraint (_, sty) -> + let gloc = { default.pexp_loc with loc_ghost = true } in + Ast_helper.Exp.constraint_ default sty ~loc:gloc + | _ -> default + in + let default = type_expect env default (mk_expected ty_default) in + ty_default, Some default + in + let (pat, params, body, newtypes, contains_gadt), partial = + (* Check everything else in the scope of the parameter. *) + map_half_typed_cases Value env ty_arg_internal ty_res pat.ppat_loc + ~check_if_total:true + (* We don't make use of [case_data] here so we pass unit. *) + [ { pattern = pat; has_guard = false; needs_refute = false }, () ] + ~type_body:begin + fun () pat ~ext_env ~ty_expected ~ty_infer:_ + ~contains_gadt:param_contains_gadt -> + let _, params, body, newtypes, suffix_contains_gadt = + type_function ext_env rest body_constraint body + ty_expected ~first:false ~in_function + in + let contains_gadt = + if param_contains_gadt then + Contains_gadt + else + suffix_contains_gadt + in + (pat, params, body, newtypes, contains_gadt) + end + |> function + (* The result must be a singleton because we passed a singleton + list above. *) + | [ result ], partial -> result, partial + | ([] | _ :: _ :: _), _ -> assert false + in + let exp_type = + instance (newgenty (Tarrow (arg_label, ty_arg, ty_res, commu_ok))) + in + (* This is quadratic, as it operates over the entire tail of the + type for each new parameter. Now that functions are n-ary, we + could possibly run this once. + *) + with_explanation ty_fun.explanation (fun () -> + unify_exp_types loc env exp_type (instance ty_expected)); + (* This is quadratic, as it extracts all of the parameters from an arrow + type for each parameter that's added. Now that functions are n-ary, + there might be an opportunity to improve this. + *) + let not_nolabel_function ty = + let ls, tvar = list_labels env ty in + List.for_all (( <> ) Nolabel) ls && not tvar + in + if is_optional arg_label && not_nolabel_function ty_res + then + Location.prerr_warning + pat.pat_loc + Warnings.Unerasable_optional_argument; + let fp_kind, fp_param = + match default_arg with + | None -> + let param = name_pattern "param" [ pat ] in + Tparam_pat pat, param + | Some default_arg -> + let param = Ident.create_local "*opt*" in + Tparam_optional_default (pat, default_arg), param + in + let param = + { fp_kind; + fp_arg_label = arg_label; + fp_param; + fp_partial = partial; + fp_newtypes = newtypes; + fp_loc = pparam_loc; + } + in + exp_type, param :: params, body, [], contains_gadt + | [] -> + let exp_type, body = + match body with + | Pfunction_body body -> + let body = + match body_constraint with + | None -> type_expect env body (mk_expected ty_expected) + | Some constraint_ -> + let body_loc = body.pexp_loc in + let body, exp_type, exp_extra = + type_constraint_expect (expression_constraint body) + env body_loc ~loc_arg:body_loc constraint_ ty_expected + in + { body with + exp_extra = (exp_extra, body_loc, []) :: body.exp_extra; + exp_type; + } + in + body.exp_type, Tfunction_body body + | Pfunction_cases (cases, _, attributes) -> + let type_cases_expect env ty_expected = + type_function_cases_expect + env ty_expected loc cases attributes ~first ~in_function + in + let (cases, partial, exp_type), exp_extra = + match body_constraint with + | None -> type_cases_expect env ty_expected, None + | Some constraint_ -> + (* The typing of function case coercions/constraints is + analogous to the typing of expression coercions/constraints. + + - [type_with_constraint]: If there is a constraint, then call + [type_argument] on the cases, and discard the cases' + inferred type in favor of the constrained type. (Function + cases aren't inferred, so [type_argument] would just call + [type_expect] straightaway, so we do the same here.) + - [type_without_constraint]: If there is just a coercion and + no constraint, call [type_exp] on the cases and surface the + cases' inferred type to [type_constraint_expect]. *) + let function_cases_constraint_arg = + { is_self = (fun _ -> false); + type_with_constraint = (fun env ty -> + let cases, partial, _ = type_cases_expect env ty in + cases, partial); + type_without_constraint = (fun env -> + let cases, partial, ty_fun = + (* The analogy to [type_exp] for expressions. *) + type_cases_expect env (newvar ()) + in + (cases, partial), ty_fun); + } + in + let (cases, partial), exp_type, exp_extra = + type_constraint_expect function_cases_constraint_arg + env loc constraint_ ty_expected ~loc_arg:loc + in + (cases, partial, exp_type), Some exp_extra + in + let param = name_cases "param" cases in + let body = + Tfunction_cases + { cases; partial; param; loc; exp_extra; attributes } + in + exp_type, body + in + (* [No_gadt] is fine because this return value is only meant to indicate + whether [params] (here, the empty list) contains any GADT, not whether + the body is a [Tfunction_cases] whose patterns include a GADT. + *) + exp_type, [], body, [], No_gadt and type_label_access env srecord usage lid = @@ -4751,7 +5235,8 @@ and type_label_exp create env loc ty_expected let (vars, ty_arg, ty_res) = with_local_level_iter_if separate ~post:generalize_structure begin fun () -> - let ((_, ty_arg, ty_res) as r) = instance_label true label in + let ((_, ty_arg, ty_res) as r) = + instance_label ~fixed:true label in (r, [ty_arg; ty_res]) end in @@ -4878,7 +5363,10 @@ and type_argument ?explanation ?recarg env sarg ty_expected' ty_expected = } in let exp_env = Env.add_value id desc env in - {pat_desc = Tpat_var (id, mknoloc name); pat_type = ty;pat_extra=[]; + {pat_desc = + Tpat_var (id, mknoloc name, desc.val_uid); + pat_type = ty; + pat_extra=[]; pat_attributes = []; pat_loc = Location.none; pat_env = env}, {exp_type = ty; exp_loc = Location.none; exp_env = exp_env; @@ -4894,11 +5382,16 @@ and type_argument ?explanation ?recarg env sarg ty_expected' ty_expected = (texp, args @ [Nolabel, Some eta_var])} in - let cases = [case eta_pat e] in + let cases = [ case eta_pat e ] in + let cases_loc = { texp.exp_loc with loc_ghost = true } in let param = name_cases "param" cases in { texp with exp_type = ty_fun; exp_desc = - Texp_function { arg_label = Nolabel; param; cases; - partial = Total; } } + Texp_function ([], + Tfunction_cases + { cases; partial = Total; param; loc = cases_loc; + exp_extra = None; attributes = []; + }) + } in Location.prerr_warning texp.exp_loc (Warnings.Eliminated_optional_arguments @@ -4910,7 +5403,7 @@ and type_argument ?explanation ?recarg env sarg ty_expected' ty_expected = re { texp with exp_type = ty_fun; exp_desc = Texp_let (Nonrecursive, [{vb_pat=let_pat; vb_expr=texp; vb_attributes=[]; - vb_loc=Location.none; + vb_loc=Location.none; vb_rec_kind = Not_recursive; }], func let_var) } end @@ -5233,12 +5726,29 @@ and type_construct env loc lid sarg ty_expected_explained attrs = and type_statement ?explanation env sexp = let has_errors = Msupport.monitor_errors () in + (* OCaml 5.2.0 changed the type of 'while' to give 'while true do e done' + a polymorphic type. The change has the potential to trigger a + nonreturning-statement warning in existing code that follows + 'while true' with some other statement, e.g. + + while true do e done; assert false + + To avoid this issue, we disable the warning in this particular case. + We might consider re-enabling it at a point when most users have + migrated to OCaml 5.2.0 or later. *) + let allow_polymorphic e = match e.exp_desc with + | Texp_while _ -> true + | _ -> false + in (* Raise the current level to detect non-returning functions *) let exp = with_local_level (fun () -> type_exp env sexp) in + let subexp = final_subexpression exp in let ty = expand_head env exp.exp_type in - if is_Tvar ty && get_level ty > get_current_level () && not !has_errors then + if is_Tvar ty && not !has_errors + && get_level ty > get_current_level () + && not (allow_polymorphic subexp) then Location.prerr_warning - (final_subexpression exp).exp_loc + subexp.exp_loc Warnings.Nonreturning_statement; if !Clflags.strict_sequence then let expected_ty = instance Predef.type_unit in @@ -5251,17 +5761,38 @@ and type_statement ?explanation env sexp = exp end -(* Typing of match cases *) -and type_cases - : type k . k pattern_category -> - ?in_function:_ -> _ -> _ -> _ -> _ -> _ -> Parsetree.case list -> - k case list * partial - = fun category ?in_function env - ty_arg ty_res_explained partial_flag loc caselist -> +(* Most of the arguments are the same as [type_cases]. + + Takes a callback which is responsible for typing the body of the case. + The arguments are documented inline in the type signature. + + It takes a callback rather than returning the half-typed cases directly + because the typing of the body must take place at an increased level. + + The overall function returns: + - The data returned by the callback + - Whether the cases' patterns are partial or total +*) +and map_half_typed_cases + : type k ret case_data. + ?additional_checks_for_split_cases:((_ * ret) list -> unit) + -> k pattern_category -> _ -> _ -> _ -> _ + -> (untyped_case * case_data) list + -> type_body:( + case_data + -> k general_pattern (* the typed pattern *) + -> ext_env:_ (* environment with module variables / pattern variables *) + -> ty_expected:_ (* type to check body in scope of *) + -> ty_infer:_ (* type to infer for body *) + -> contains_gadt:_ (* whether the pattern contains a GADT *) + -> ret) + -> check_if_total:bool (* if false, assume Partial right away *) + -> ret list * partial + = fun ?additional_checks_for_split_cases + category env ty_arg ty_res loc caselist ~type_body ~check_if_total -> let has_errors = Msupport.monitor_errors () in (* ty_arg is _fully_ generalized *) - let { ty = ty_res; explanation } = ty_res_explained in - let patterns = List.map (fun {pc_lhs=p} -> p) caselist in + let patterns = List.map (fun ((x : untyped_case), _) -> x.pattern) caselist in let contains_polyvars = List.exists contains_polymorphic_variant patterns in let erase_either = contains_polyvars && contains_variant_either ty_arg in let may_contain_gadts = List.exists may_contain_gadts patterns in @@ -5278,8 +5809,8 @@ and type_cases | _ -> false in let needs_exhaust_check = match caselist with - [{pc_rhs = {pexp_desc = Pexp_unreachable}}] -> true - | [{pc_lhs}] when is_var pc_lhs -> false + [ ({ needs_refute = true }, _) ] -> true + | [ ({ pattern }, _) ] when is_var pattern -> false | _ -> true in let outer_level = get_current_level () in @@ -5307,7 +5838,7 @@ and type_cases Printtyp.raw_type_expr ty_arg; *) let half_typed_cases = List.map - (fun ({pc_lhs; pc_guard = _; pc_rhs = _} as case) -> + (fun ({ Parmatch.pattern; _ } as untyped_case, case_data) -> let htc = with_local_level_if_principal begin fun () -> let ty_arg = @@ -5316,16 +5847,18 @@ and type_cases (fun () -> instance ?partial:take_partial_instance ty_arg) in let (pat, ext_env, force, pvs, mvs) = - type_pattern category ~lev env pc_lhs ty_arg allow_modules + type_pattern category ~lev env pattern ty_arg allow_modules in pattern_force := force @ !pattern_force; { typed_pat = pat; pat_type_for_unif = ty_arg; - untyped_case = case; + untyped_case; + case_data; branch_env = ext_env; pat_vars = pvs; module_vars = mvs; - contains_gadt = contains_gadt (as_comp_pattern category pat); } + contains_gadt = contains_gadt (as_comp_pattern category pat); + } end ~post: begin fun htc -> iter_pattern_variables_type generalize_structure htc.pat_vars; @@ -5352,7 +5885,7 @@ and type_cases let ty_arg' = newvar () in let unify_pats ty = List.iter (fun { typed_pat = pat; pat_type_for_unif = pat_ty; _ } -> - unify_pat_types pat.pat_loc (ref env) pat_ty ty + unify_pat_types pat.pat_loc env pat_ty ty ) half_typed_cases in unify_pats ty_arg'; @@ -5379,20 +5912,23 @@ and type_cases end in (* type bodies *) - let in_function = if List.length caselist = 1 then in_function else None in let ty_res' = instance ty_res in - let cases = with_local_level_if_principal ~post:ignore begin fun () -> + let result = with_local_level_if_principal ~post:ignore begin fun () -> List.map - (fun { typed_pat = pat; branch_env = ext_env; - pat_vars = pvs; module_vars = mvs; - untyped_case = {pc_lhs = _; pc_guard; pc_rhs}; - contains_gadt; _ } -> + (fun { typed_pat = pat; branch_env = ext_env; + pat_vars = pvs; module_vars = mvs; + case_data; contains_gadt; _ } + -> let ext_env = if contains_gadt then do_copy_types ext_env else ext_env in + (* Before handing off the cases to the callback, first set up the the + branch environments by adding the variables (and module variables) + from the patterns. + *) let ext_env = add_pattern_variables ext_env pvs ~check:(fun s -> Warnings.Unused_var_strict s) @@ -5402,28 +5938,12 @@ and type_cases let ty_expected = if contains_gadt && not !Clflags.principal then (* Take a generic copy of [ty_res] again to allow propagation of - type information from preceding branches *) + type information from preceding branches *) correct_levels ty_res else ty_res in - let guard = - match pc_guard with - | None -> None - | Some scond -> - Some - (type_expect ext_env scond - (mk_expected ~explanation:When_guard Predef.type_bool)) - in - let exp = - type_expect ?in_function ext_env - pc_rhs (mk_expected ?explanation ty_expected) - in - { - c_lhs = pat; - c_guard = guard; - c_rhs = {exp with exp_type = ty_res'} - } - ) - half_typed_cases + type_body case_data pat ~ext_env ~ty_expected ~ty_infer:ty_res' + ~contains_gadt) + half_typed_cases end in let do_init = may_contain_gadts || needs_exhaust_check in let ty_arg_check = @@ -5432,15 +5952,37 @@ and type_cases Subst.type_expr (Subst.for_saving Subst.identity) ty_arg' else ty_arg' in - let val_cases, exn_cases = + (* Split the cases into val and exn cases so we can do the appropriate checks + for exhaustivity and unused variables. + + The caller of this function can define custom checks. For some of these + checks, the half-typed case doesn't provide enough info on its own -- for + instance, the check for ambiguous bindings in when guards needs to know the + case body's expression -- so the code pairs each case with its + corresponding element in [result] before handing it off to the caller's + custom checks. + *) + let val_cases_with_result, exn_cases_with_result = match category with - | Value -> (cases : value case list), [] - | Computation -> split_cases env cases in + | Value -> + let val_cases = + List.map2 + (fun htc res -> + { htc.untyped_case with pattern = htc.typed_pat }, res) + half_typed_cases + result + in + (val_cases : (pattern Parmatch.parmatch_case * ret) list), [] + | Computation -> + split_half_typed_cases env (List.combine half_typed_cases result) + in + let val_cases = List.map fst val_cases_with_result in + let exn_cases = List.map fst exn_cases_with_result in if val_cases = [] && exn_cases <> [] then raise (error (loc, env, No_value_clauses)); let partial = - if partial_flag then - check_partial ~lev allow_modules env ty_arg_check loc val_cases + if check_if_total then + check_partial ~lev env ty_arg_check loc val_cases else Partial in @@ -5449,11 +5991,9 @@ and type_cases check_absent_variant branch_env (as_comp_pattern category typed_pat) ) half_typed_cases; with_level_if delayed ~level:lev begin fun () -> - check_unused ~lev allow_modules env ty_arg_check val_cases ; - check_unused ~lev allow_modules env Predef.type_exn exn_cases ; + check_unused ~lev env ty_arg_check val_cases ; + check_unused ~lev env Predef.type_exn exn_cases ; end; - Parmatch.check_ambiguous_bindings val_cases ; - Parmatch.check_ambiguous_bindings exn_cases in if not !has_errors then ( if contains_polyvars then @@ -5462,11 +6002,87 @@ and type_cases (* Check for unused cases, do not delay because of gadts *) unused_check false ); - ((cases, partial), [ty_res']) + begin + match additional_checks_for_split_cases with + | None -> () + | Some check -> + check val_cases_with_result; + check exn_cases_with_result; + end; + (result, partial), [ty_res'] end (* Ensure that existential types do not escape *) ~post:(fun ty_res' -> unify_exp_types loc env ty_res' (newvar ())) +(* Typing of match cases *) +and type_cases + : type k . k pattern_category -> + _ -> _ -> _ -> check_if_total:bool -> _ -> Parsetree.case list -> + k case list * partial + = fun category env + ty_arg ty_res_explained ~check_if_total loc caselist -> + let { ty = ty_res; explanation } = ty_res_explained in + let caselist = + List.map (fun case -> Parmatch.untyped_case case, case) caselist + in + (* Most of the work is done by [map_half_typed_cases]. All that's left + is to typecheck the guards and the cases, and then to check for some + warnings that can fire in the presence of guards. + *) + map_half_typed_cases category env ty_arg ty_res loc caselist ~check_if_total + ~type_body:begin + fun { pc_guard; pc_rhs } pat ~ext_env ~ty_expected ~ty_infer + ~contains_gadt:_ -> + let guard = + match pc_guard with + | None -> None + | Some scond -> + Some + (type_expect ext_env scond + (mk_expected ~explanation:When_guard Predef.type_bool)) + in + let exp = + type_expect ext_env pc_rhs (mk_expected ?explanation ty_expected) + in + { + c_lhs = pat; + c_guard = guard; + c_rhs = {exp with exp_type = ty_infer} + } + end + ~additional_checks_for_split_cases:(fun cases -> + let cases = + List.map + (fun (case_with_pat, case) -> + { case with c_lhs = case_with_pat.Parmatch.pattern }) cases + in + Parmatch.check_ambiguous_bindings cases) + + +(** A version of [type_expect], but that operates over function cases instead + of expressions. The input type is like the [ty_expected] argument to + [type_expect], and the returned type is like the [exp_type] of the + expression returned by [type_expect]. + + See [split_function_ty] for the meaning of [first] and [in_function]. +*) +and type_function_cases_expect + env ty_expected loc cases attrs ~first ~in_function = + Builtin_attributes.warning_scope attrs begin fun () -> + let ty_arg, ty_res = + split_function_ty env ty_expected ~arg_label:Nolabel ~first ~in_function + in + let cases, partial = + type_cases Value env ty_arg (mk_expected ty_res) + ~check_if_total:true loc cases + in + let ty_fun = + instance (newgenty (Tarrow (Nolabel, ty_arg, ty_res, commu_ok))) + in + unify_exp_types loc env ty_fun (instance ty_expected); + cases, partial, ty_fun + end + (* Typing of let bindings *) and type_let ?check ?check_strict @@ -5493,11 +6109,11 @@ and type_let ?check ?check_strict match get_desc pat.pat_type with | Tpoly (ty, tl) -> {pat with pat_type = - snd (instance_poly ~keep_names:true false tl ty)} + snd (instance_poly ~keep_names:true ~fixed:false tl ty)} | _ -> pat in let bound_expr = vb_exp_constraint binding in - unify_pat (ref env) pat (type_approx env bound_expr)) + unify_pat env pat (type_approx env bound_expr)) pat_list spat_sexp_list; (* Polymorphic variant processing *) List.iter @@ -5552,7 +6168,7 @@ and type_let ?check ?check_strict let vars, ty' = with_local_level_if_principal ~post:(fun (_,ty') -> generalize_structure ty') - (fun () -> instance_poly ~keep_names:true true tl ty) + (fun () -> instance_poly ~keep_names:true ~fixed:true tl ty) in let exp = Builtin_attributes.warning_scope pvb_attributes (fun () -> @@ -5570,8 +6186,9 @@ and type_let ?check ?check_strict (fun pat (attrs, exp) -> Builtin_attributes.warning_scope ~ppwarning:false attrs (fun () -> - ignore(check_partial allow_modules env pat.pat_type pat.pat_loc - [case pat exp] : Typedtree.partial) + let case = Parmatch.typed_case (case pat exp) in + ignore(check_partial env pat.pat_type pat.pat_loc + [case] : Typedtree.partial) ) ) pat_list @@ -5611,8 +6228,9 @@ and type_let ?check ?check_strict let l = List.map2 (fun (p, (e, _)) pvb -> + (* vb_rec_kind will be computed later for recursive bindings *) {vb_pat=p; vb_expr=e; vb_attributes=pvb.pvb_attributes; - vb_loc=pvb.pvb_loc; + vb_loc=pvb.pvb_loc; vb_rec_kind = Not_recursive; }) l spat_sexp_list in @@ -5620,7 +6238,7 @@ and type_let ?check ?check_strict List.iter (fun {vb_pat=pat} -> match pat.pat_desc with Tpat_var _ -> () - | Tpat_alias ({pat_desc=Tpat_any}, _, _) -> () + | Tpat_alias ({pat_desc=Tpat_any}, _, _, _) -> () | _ -> raise(error(pat.pat_loc, env, Illegal_letrec_pat))) l; List.iter (fun vb -> @@ -5655,7 +6273,7 @@ and type_let_def_wrap_warnings in let sexp_is_fun { pvb_expr = sexp; _ } = match sexp.pexp_desc with - | Pexp_fun _ | Pexp_function _ -> true + | Pexp_function _ -> true | _ -> false in let exp_env = @@ -5958,9 +6576,13 @@ let report_literal_type_constraint expected_type const = Some '.' else None in + let pp_const ppf (c,s) = Format.fprintf ppf "%s%c" c s in match const_str, suffix with - | Some c, Some s -> [ Location.msg "@[@{Hint@}: Did you \ - mean `%s%c'?@]" c s ] + | Some c, Some s -> [ + Location.msg + "@[@{Hint@}: Did you mean %a?@]" + (Style.as_inline_code pp_const) (c,s) + ] | _, _ -> [] let report_literal_type_constraint const = function @@ -6033,7 +6655,8 @@ let report_unification_error ~loc ?sub env err let report_this_function ppf funct = if Typedtree.exp_is_nominal funct then let pexp = Untypeast.untype_expression funct in - Format.fprintf ppf "The function '%a'" Pprintast.expression pexp + Format.fprintf ppf "The function %a" + (Style.as_inline_code Pprintast.expression) pexp else Format.fprintf ppf "This function" let report_too_many_arg_error ~funct ~func_ty ~previous_arg_loc @@ -6071,12 +6694,12 @@ let report_error ~loc env = function Location.errorf ~loc "@[The constructor %a@ expects %i argument(s),@ \ but is applied here to %i argument(s)@]" - longident lid expected provided + (Style.as_inline_code longident) lid expected provided | Label_mismatch(lid, err) -> report_unification_error ~loc env err (function ppf -> fprintf ppf "The record field %a@ belongs to the type" - longident lid) + (Style.as_inline_code longident) lid) (function ppf -> fprintf ppf "but is mixed here with fields of type") | Pattern_type_clash (err, pat) -> @@ -6091,19 +6714,21 @@ let report_error ~loc env = function | Or_pattern_type_clash (id, err) -> report_unification_error ~loc env err (function ppf -> - fprintf ppf "The variable %s on the left-hand side of this \ - or-pattern has type" (Ident.name id)) + fprintf ppf "The variable %a on the left-hand side of this \ + or-pattern has type" Style.inline_code (Ident.name id)) (function ppf -> fprintf ppf "but on the right-hand side it has type") | Multiply_bound_variable name -> Location.errorf ~loc - "Variable %s is bound several times in this matching" - name + "Variable %a is bound several times in this matching" + Style.inline_code name | Orpat_vars (id, valid_idents) -> Location.error_of_printer ~loc (fun ppf () -> fprintf ppf - "Variable %s must occur on both sides of this | pattern" - (Ident.name id); + "Variable %a must occur on both sides of this %a pattern" + Style.inline_code (Ident.name id) + Style.inline_code "|" + ; spellcheck_idents ppf id valid_idents ) () | Expr_type_clash (err, explanation, exp) -> @@ -6116,6 +6741,46 @@ let report_error ~loc env = function fprintf ppf "This expression has type") (function ppf -> fprintf ppf "but an expression was expected of type"); + | Function_arity_type_clash { + syntactic_arity; type_constraint; trace = { trace }; + } -> + (* The last diff's expected type will be the locally-abstract type + that the GADT pattern introduced an equation on. + *) + let type_with_local_equation = + let last_diff = + List.find_map + (function Errortrace.Diff diff -> Some diff | _ -> None) + (List.rev trace) + in + match last_diff with + | None -> None + | Some diff -> Some diff.expected.ty + in + (* [syntactic_arity>1] for this error, so "arguments" is always plural. *) + Location.errorf ~loc + "@[\ + @[\ + The syntactic arity of the function doesn't match the type constraint:@ \ + @[<2>\ + This function has %d syntactic arguments, but its type is constrained \ + to@ %a.\ + @]@ \ + @]@ \ + @[\ + @[<2>@{Hint@}: \ + consider splitting the function definition into@ %a@ \ + where %a is the pattern with the GADT constructor that@ \ + introduces the local type equation%t.\ + @]" + syntactic_arity + (Style.as_inline_code Printtyp.type_expr) type_constraint + Style.inline_code "fun ... gadt_pat -> fun ..." + Style.inline_code "gadt_pat" + (fun ppf -> + Option.iter + (fprintf ppf " on %a" (Style.as_inline_code Printtyp.type_expr)) + type_with_local_equation) | Apply_non_function { funct; func_ty; res_ty; previous_arg_loc; extra_arg_loc } -> @@ -6129,13 +6794,15 @@ let report_error ~loc env = function ~extra_arg_loc ~returns_unit loc | _ -> Location.errorf ~loc "@[@[<2>This expression has type@ %a@]@ %s@]" - Printtyp.type_expr func_ty + (Style.as_inline_code Printtyp.type_expr) func_ty "This is not a function; it cannot be applied." end | Apply_wrong_label (l, ty, extra_info) -> let print_label ppf = function | Nolabel -> fprintf ppf "without label" - | l -> fprintf ppf "with label %s" (prefixed_label_name l) + | l -> + fprintf ppf "with label %a" + Style.inline_code (prefixed_label_name l) in let extra_info = if not extra_info then @@ -6153,30 +6820,32 @@ let report_error ~loc env = function Location.errorf ~loc "The record field label %s is defined several times" s | Label_missing labels -> - let print_labels ppf = - List.iter (fun lbl -> fprintf ppf "@ %s" (Ident.name lbl)) in + let print_label ppf lbl = Style.inline_code ppf (Ident.name lbl) in + let print_labels ppf = List.iter (fprintf ppf "@ %a" print_label) in Location.errorf ~loc "@[Some record fields are undefined:%a@]" print_labels labels | Label_not_mutable lid -> - Location.errorf ~loc "The record field %a is not mutable" longident lid + Location.errorf ~loc "The record field %a is not mutable" + (Style.as_inline_code longident) lid | Wrong_name (eorp, ty_expected, { type_path; kind; name; valid_names; }) -> Location.error_of_printer ~loc (fun ppf () -> Printtyp.wrap_printing_env ~error:true env (fun () -> let { ty; explanation } = ty_expected in if Path.is_constructor_typath type_path then begin fprintf ppf - "@[The field %s is not part of the record \ + "@[The field %a is not part of the record \ argument for the %a constructor@]" - name.txt - Printtyp.type_path type_path; + Style.inline_code name.txt + (Style.as_inline_code Printtyp.type_path) type_path; end else begin fprintf ppf "@[@[<2>%s type@ %a%t@]@ \ - There is no %s %s within type %a@]" - eorp Printtyp.type_expr ty + There is no %s %a within type %a@]" + eorp (Style.as_inline_code Printtyp.type_expr) ty (report_type_expected_explanation_opt explanation) (Datatype_kind.label_name kind) - name.txt (*kind*) Printtyp.type_path type_path; + Style.inline_code name.txt + (Style.as_inline_code Printtyp.type_path) type_path; end; spellcheck ppf name.txt valid_names )) () @@ -6187,10 +6856,11 @@ let report_error ~loc env = function Printtyp.report_ambiguous_type_error ppf env tp tpl (function ppf -> fprintf ppf "The %s %a@ belongs to the %s type" - name longident lid type_name) + name (Style.as_inline_code longident) lid + type_name) (function ppf -> fprintf ppf "The %s %a@ belongs to one of the following %s types:" - name longident lid type_name) + name (Style.as_inline_code longident) lid type_name) (function ppf -> fprintf ppf "but a %s was expected belonging to the %s type" name type_name) @@ -6201,7 +6871,7 @@ let report_error ~loc env = function Location.error_of_printer ~loc (fun ppf () -> fprintf ppf "This expression is not an object;@ \ it has type %a" - Printtyp.type_expr ty; + (Style.as_inline_code Printtyp.type_expr) ty; report_type_expected_explanation_opt explanation ppf ) () | Undefined_method (ty, me, valid_methods) -> @@ -6209,7 +6879,9 @@ let report_error ~loc env = function Printtyp.wrap_printing_env ~error:true env (fun () -> fprintf ppf "@[@[This expression has type@;<1 2>%a@]@,\ - It has no method %s@]" Printtyp.type_expr ty me; + It has no method %a@]" + (Style.as_inline_code Printtyp.type_expr) ty + Style.inline_code me; begin match valid_methods with | None -> () | Some valid_methods -> spellcheck ppf me valid_methods @@ -6217,19 +6889,20 @@ let report_error ~loc env = function )) () | Undefined_self_method (me, valid_methods) -> Location.error_of_printer ~loc (fun ppf () -> - fprintf ppf "This expression has no method %s" me; + fprintf ppf "This expression has no method %a" Style.inline_code me; spellcheck ppf me valid_methods; ) () | Virtual_class cl -> Location.errorf ~loc "Cannot instantiate the virtual class %a" - longident cl + (Style.as_inline_code longident) cl | Unbound_instance_variable (var, valid_vars) -> Location.error_of_printer ~loc (fun ppf () -> - fprintf ppf "Unbound instance variable %s" var; + fprintf ppf "Unbound instance variable %a" Style.inline_code var; spellcheck ppf var valid_vars; ) () | Instance_variable_not_mutable v -> - Location.errorf ~loc "The instance variable %s is not mutable" v + Location.errorf ~loc "The instance variable %a is not mutable" + Style.inline_code v | Not_subtype err -> Location.error_of_printer ~loc (fun ppf () -> Printtyp.Subtype.report_error ppf env err "is not a subtype of" @@ -6239,8 +6912,8 @@ let report_error ~loc env = function "This object duplication occurs outside a method definition" | Value_multiply_overridden v -> Location.errorf ~loc - "The instance variable %s is overridden several times" - v + "The instance variable %a is overridden several times" + Style.inline_code v | Coercion_failure (ty_exp, err, b) -> Location.error_of_printer ~loc (fun ppf () -> Printtyp.report_unification_error ppf env err @@ -6248,31 +6921,36 @@ let report_error ~loc env = function let ty_exp = Printtyp.prepare_expansion ty_exp in fprintf ppf "This expression cannot be coerced to type@;<1 2>%a;@ \ it has type" - (Printtyp.type_expansion Type) ty_exp) + (Style.as_inline_code @@ Printtyp.type_expansion Type) ty_exp) (function ppf -> fprintf ppf "but is here used with type"); if b then - fprintf ppf ".@.@[%s@ @{Hint@}: Consider using a fully \ - explicit coercion@ %s@]" - "This simple coercion was not fully general." - "of the form: `(foo : ty1 :> ty2)'." + fprintf ppf + ".@.@[This simple coercion was not fully general.@ \ + @{Hint@}: Consider using a fully explicit coercion@ \ + of the form: %a@]" + Style.inline_code "(foo : ty1 :> ty2)" ) () | Not_a_function (ty, explanation) -> Location.errorf ~loc "This expression should not be a function,@ \ the expected type is@ %a%t" - Printtyp.type_expr ty + (Style.as_inline_code Printtyp.type_expr) ty (report_type_expected_explanation_opt explanation) | Too_many_arguments (ty, explanation) -> Location.errorf ~loc "This function expects too many arguments,@ \ it should have type@ %a%t" - Printtyp.type_expr ty + (Style.as_inline_code Printtyp.type_expr) ty (report_type_expected_explanation_opt explanation) | Abstract_wrong_label {got; expected; expected_type; explanation} -> - let label ~long = function - | Nolabel -> "unlabeled" - | l -> (if long then "labeled " else "") ^ prefixed_label_name l + let label ~long ppf = function + | Nolabel -> fprintf ppf "unlabeled" + | l -> + if long then + fprintf ppf "labeled %a" Style.inline_code (prefixed_label_name l) + else + Style.inline_code ppf (prefixed_label_name l) in let second_long = match got, expected with | Nolabel, _ | _, Nolabel -> true @@ -6280,29 +6958,34 @@ let report_error ~loc env = function in Location.errorf ~loc "@[@[<2>This function should have type@ %a%t@]@,\ - @[but its first argument is %s@ instead of %s%s@]@]" - Printtyp.type_expr expected_type + @[but its first argument is %a@ instead of %s%a@]@]" + (Style.as_inline_code Printtyp.type_expr) expected_type (report_type_expected_explanation_opt explanation) - (label ~long:true got) + (label ~long:true) got (if second_long then "being " else "") - (label ~long:second_long expected) + (label ~long:second_long) expected | Scoping_let_module(id, ty) -> Location.errorf ~loc - "This `let module' expression has type@ %a@ \ - In this type, the locally bound module name %s escapes its scope" - Printtyp.type_expr ty id + "This %a expression has type@ %a@ \ + In this type, the locally bound module name %a escapes its scope" + Style.inline_code "let module" + (Style.as_inline_code Printtyp.type_expr) ty + Style.inline_code id | Private_type ty -> Location.errorf ~loc "Cannot create values of the private type %a" - Printtyp.type_expr ty + (Style.as_inline_code Printtyp.type_expr) ty | Private_label (lid, ty) -> Location.errorf ~loc "Cannot assign field %a of the private type %a" - longident lid Printtyp.type_expr ty + (Style.as_inline_code longident) lid + (Style.as_inline_code Printtyp.type_expr) ty | Private_constructor (constr, ty) -> Location.errorf ~loc - "Cannot use private constructor %s to create values of type %a" - constr.cstr_name Printtyp.type_expr ty + "Cannot use private constructor %a to create values of type %a" + Style.inline_code constr.cstr_name + (Style.as_inline_code Printtyp.type_expr) ty | Not_a_polymorphic_variant_type lid -> - Location.errorf ~loc "The type %a@ is not a variant type" longident lid + Location.errorf ~loc "The type %a@ is not a variant type" + (Style.as_inline_code longident) lid | Incoherent_label_order -> Location.errorf ~loc "This function is applied to arguments@ \ @@ -6320,45 +7003,42 @@ let report_error ~loc env = function | Not_a_packed_module ty -> Location.errorf ~loc "This expression is packed module, but the expected type is@ %a" - Printtyp.type_expr ty - | Unexpected_existential (reason, name, types) -> + (Style.as_inline_code Printtyp.type_expr) ty + | Unexpected_existential (reason, name) -> let reason_str = - match reason with + match reason with | In_class_args -> - "Existential types are not allowed in class arguments" + dprintf "Existential types are not allowed in class arguments" | In_class_def -> - "Existential types are not allowed in bindings inside \ + dprintf "Existential types are not allowed in bindings inside \ class definition" | In_self_pattern -> - "Existential types are not allowed in self patterns" + dprintf "Existential types are not allowed in self patterns" | At_toplevel -> - "Existential types are not allowed in toplevel bindings" + dprintf "Existential types are not allowed in toplevel bindings" | In_group -> - "Existential types are not allowed in \"let ... and ...\" bindings" + dprintf "Existential types are not allowed in %a bindings" + Style.inline_code "let ... and ..." | In_rec -> - "Existential types are not allowed in recursive bindings" + dprintf "Existential types are not allowed in recursive bindings" | With_attributes -> - "Existential types are not allowed in presence of attributes" + dprintf + "Existential types are not allowed in presence of attributes" in - begin match List.find (fun ty -> ty <> "$" ^ name) types with - | example -> - Location.errorf ~loc - "%s,@ but this pattern introduces the existential type %s." - reason_str example - | exception Not_found -> - Location.errorf ~loc - "%s,@ but the constructor %s introduces existential types." - reason_str name - end + Location.errorf ~loc + "%t,@ but the constructor %a introduces existential types." + reason_str Style.inline_code name | Invalid_interval -> Location.errorf ~loc "@[Only character intervals are supported in patterns.@]" | Invalid_for_loop_index -> Location.errorf ~loc - "@[Invalid for-loop index: only variables and _ are allowed.@]" + "@[Invalid for-loop index: only variables and %a are allowed.@]" + Style.inline_code "_" | No_value_clauses -> Location.errorf ~loc - "None of the patterns in this 'match' expression match values." + "None of the patterns in this %a expression match values." + Style.inline_code "match" | Exception_pattern_disallowed -> Location.errorf ~loc "@[Exception patterns are not allowed in this position.@]" @@ -6375,41 +7055,47 @@ let report_error ~loc env = function "@[This constructor expects an inlined record argument.@]" | Unrefuted_pattern pat -> Location.errorf ~loc - "@[%s@ %s@ %a@]" + "@[%s@ %s@ @[%a@]@]" "This match case could not be refuted." "Here is an example of a value that would reach it:" - Printpat.top_pretty pat + (Style.as_inline_code Printpat.pretty_val) pat | Invalid_extension_constructor_payload -> Location.errorf ~loc - "Invalid [%%extension_constructor] payload, a constructor is expected." + "Invalid %a payload, a constructor is expected." + Style.inline_code "[%extension_constructor]" | Not_an_extension_constructor -> Location.errorf ~loc "This constructor is not an extension constructor." | Literal_overflow ty -> Location.errorf ~loc - "Integer literal exceeds the range of representable integers of type %s" - ty + "Integer literal exceeds the range of representable integers of type %a" + Style.inline_code ty | Unknown_literal (n, m) -> - Location.errorf ~loc "Unknown modifier '%c' for literal %s%c" m n m + let pp_lit ppf (n,m) = fprintf ppf "%s%c" n m in + Location.errorf ~loc "Unknown modifier %a for literal %a" + (Style.as_inline_code pp_print_char) m + (Style.as_inline_code pp_lit) (n,m) | Illegal_letrec_pat -> Location.errorf ~loc - "Only variables are allowed as left-hand side of `let rec'" + "Only variables are allowed as left-hand side of %a" + Style.inline_code "let rec" | Illegal_letrec_expr -> Location.errorf ~loc - "This kind of expression is not allowed as right-hand side of `let rec'" + "This kind of expression is not allowed as right-hand side of %a" + Style.inline_code "let rec" | Illegal_class_expr -> Location.errorf ~loc "This kind of recursive class expression is not allowed" | Letop_type_clash(name, err) -> report_unification_error ~loc env err (function ppf -> - fprintf ppf "The operator %s has type" name) + fprintf ppf "The operator %a has type" Style.inline_code name) (function ppf -> fprintf ppf "but it was expected to have type") | Andop_type_clash(name, err) -> report_unification_error ~loc env err (function ppf -> - fprintf ppf "The operator %s has type" name) + fprintf ppf "The operator %a has type" Style.inline_code name) (function ppf -> fprintf ppf "but it was expected to have type") | Bindings_type_clash(err) -> @@ -6419,11 +7105,16 @@ let report_error ~loc env = function (function ppf -> fprintf ppf "but bindings were expected of type") | Unbound_existential (ids, ty) -> + let pp_ident ppf id = pp_print_string ppf (Ident.name id) in + let pp_type ppf (ids,ty)= + fprintf ppf "@[type %a.@ %a@]@]" + (pp_print_list ~pp_sep:pp_print_space pp_ident) ids + Printtyp.type_expr ty + in Location.errorf ~loc - "@[<2>%s:@ @[type %s.@ %a@]@]" + "@[<2>%s:@ %a@]" "This type does not bind all existentials in the constructor" - (String.concat " " (List.map Ident.name ids)) - Printtyp.type_expr ty + (Style.as_inline_code pp_type) (ids, ty) | Missing_type_constraint -> Location.errorf ~loc "@[%s@ %s@]" @@ -6446,13 +7137,13 @@ let report_error ~loc env = function Location.errorf ~loc "This %s should not be a %s,@ \ the expected type is@ %a%t" - ctx sort Printtyp.type_expr ty + ctx sort (Style.as_inline_code Printtyp.type_expr) ty (report_type_expected_explanation_opt explanation) | Expr_not_a_record_type ty -> Location.errorf ~loc "This expression has type %a@ \ which is not a record type." - Printtyp.type_expr ty + (Style.as_inline_code Printtyp.type_expr) ty let report_error ~loc env err = Printtyp.wrap_printing_env ~error:true env @@ -6474,12 +7165,16 @@ let () = Env.add_delayed_check_forward := add_delayed_check; () +(* drop the need to call [Parmatch.typed_case] from the external API *) +let check_partial ?lev a b c cases = + check_partial ?lev a b c (List.map Parmatch.typed_case cases) + (* drop ?recarg argument from the external API *) -let type_expect ?in_function env e ty = type_expect ?in_function env e ty +let type_expect env e ty = type_expect env e ty let type_exp env e = type_exp env e let type_argument env e t1 t2 = type_argument env e t1 t2 (* Merlin specific *) let partial_pred ~lev = let splitting_mode = Refine_or {inside_nonsplit_or = false} in - partial_pred ~allow_modules:(Modules_allowed { scope = lev }) ~splitting_mode ~lev + partial_pred ~splitting_mode ~lev diff --git a/src/ocaml/typing/typecore.mli b/src/ocaml/typing/typecore.mli index 1c6374c368..ae47ac4a89 100644 --- a/src/ocaml/typing/typecore.mli +++ b/src/ocaml/typing/typecore.mli @@ -56,6 +56,7 @@ type pattern_variable = pv_loc: Location.t; pv_as_var: bool; pv_attributes: Typedtree.attributes; + pv_uid : Uid.t; } val mk_expected: @@ -98,10 +99,6 @@ type existential_restriction = | In_class_def (** or in [class c = let ... in ...] *) | In_self_pattern (** or in self pattern *) -type module_patterns_restriction = - | Modules_allowed of { scope : int } - | Modules_rejected - val type_binding: Env.t -> rec_flag -> Parsetree.value_binding list -> @@ -121,10 +118,9 @@ val type_self_pattern: Env.t -> Parsetree.pattern -> Typedtree.pattern * pattern_variable list val check_partial: - ?lev:int -> module_patterns_restriction -> Env.t -> type_expr -> + ?lev:int -> Env.t -> type_expr -> Location.t -> Typedtree.value Typedtree.case list -> Typedtree.partial val type_expect: - ?in_function:(Location.t * type_expr) -> Env.t -> Parsetree.expression -> type_expected -> Typedtree.expression val type_exp: Env.t -> Parsetree.expression -> Typedtree.expression @@ -161,6 +157,11 @@ type error = | Expr_type_clash of Errortrace.unification_error * type_forcing_context option * Parsetree.expression_desc option + | Function_arity_type_clash of + { syntactic_arity : int; + type_constraint : type_expr; + trace : Errortrace.unification_error; + } | Apply_non_function of { funct : Typedtree.expression; func_ty : type_expr; @@ -205,7 +206,7 @@ type error = | Modules_not_allowed | Cannot_infer_signature | Not_a_packed_module of type_expr - | Unexpected_existential of existential_restriction * string * string list + | Unexpected_existential of existential_restriction * string | Invalid_interval | Invalid_for_loop_index | No_value_clauses @@ -258,7 +259,8 @@ val type_package: val constant: Parsetree.constant -> (Asttypes.constant, error) result -val check_recursive_bindings : Env.t -> Typedtree.value_binding list -> unit +val annotate_recursive_bindings : + Env.t -> Typedtree.value_binding list -> Typedtree.value_binding list val check_recursive_class_bindings : Env.t -> Ident.t list -> Typedtree.class_expr list -> unit diff --git a/src/ocaml/typing/typedecl.ml b/src/ocaml/typing/typedecl.ml index c3820f3aec..42f9814efa 100644 --- a/src/ocaml/typing/typedecl.ml +++ b/src/ocaml/typing/typedecl.ml @@ -91,19 +91,19 @@ let get_unboxed_from_attributes sdecl = (* Enter all declared types in the environment as abstract types *) -let add_type ~long_path ~check id decl env = +let add_type ~long_path ~check ?shape id decl env = Builtin_attributes.warning_scope ~ppwarning:false decl.type_attributes (fun () -> match long_path with - | true -> Env.add_type_long_path ~check id decl env - | false -> Env.add_type ~check id decl env) + | true -> Env.add_type_long_path ~check ?shape id decl env + | false -> Env.add_type ~check ?shape id decl env) (* Add a dummy type declaration to the environment, with the given arity. The [type_kind] is [Type_abstract], but there is a generic [type_manifest] for abbreviations, to allow polymorphic expansion, except if - [abstract_abbrevs] is [true]. + [abstract_abbrevs] is given along with a reason for not allowing expansion. This function is only used in [transl_type_decl]. *) -let enter_type ~abstract_abbrevs rec_flag env sdecl (id, uid) = +let enter_type ?abstract_abbrevs rec_flag env sdecl (id, uid) = let needed = match rec_flag with | Asttypes.Nonrecursive -> @@ -119,17 +119,19 @@ let enter_type ~abstract_abbrevs rec_flag env sdecl (id, uid) = in let arity = List.length sdecl.ptype_params in if not needed then env else - let type_manifest = match sdecl.ptype_manifest, abstract_abbrevs with - | None, _ | Some _, true -> None - | Some _, false -> Some(Ctype.newvar ()) + let abstract_source, type_manifest = + match sdecl.ptype_manifest, abstract_abbrevs with + | None, _ -> Definition, None + | Some _, None -> Definition, Some (Btype.newgenvar ()) + | Some _, Some reason -> reason, None in let decl = { type_params = List.map (fun _ -> Btype.newgenvar ()) sdecl.ptype_params; type_arity = arity; - type_kind = Type_abstract; + type_kind = Type_abstract abstract_source; type_private = sdecl.ptype_private; - type_manifest; + type_manifest = type_manifest; type_variance = Variance.unknown_signature ~injective:false ~arity; type_separability = Types.Separability.default_signature ~arity; type_is_newtype = false; @@ -143,16 +145,6 @@ let enter_type ~abstract_abbrevs rec_flag env sdecl (id, uid) = in add_type ~long_path:true ~check:true id decl env -let update_type temp_env env id loc = - let path = Path.Pident id in - let decl = Env.find_type path temp_env in - match decl.type_manifest with None -> () - | Some ty -> - let params = List.map (fun _ -> Ctype.newvar ()) decl.type_params in - try Ctype.unify env (Ctype.newconstr path params) ty - with Ctype.Unify err -> - raise (Error(loc, Type_clash (env, err))) - (* Determine if a type's values are represented by floats at run-time. *) let is_float env ty = match Typedecl_unboxed.get_unboxed_type_representation env ty with @@ -241,7 +233,9 @@ let transl_labels env univars closed lbls = let arg = Ast_helper.Typ.force_poly arg in let cty = transl_simple_type env ?univars ~closed arg in {ld_id = Ident.create_local name.txt; - ld_name = name; ld_mutable = mut; + ld_name = name; + ld_uid = Uid.mk ~current_unit:(Env.get_unit_name ()); + ld_mutable = mut; ld_type = cty; ld_loc = loc; ld_attributes = attrs} ) in @@ -251,14 +245,12 @@ let transl_labels env univars closed lbls = (fun ld -> let ty = ld.ld_type.ctyp_type in let ty = match get_desc ty with Tpoly(t,[]) -> t | _ -> ty in - let ld_uid = Uid.mk ~current_unit:(Env.get_unit_name ()) in - Env.register_uid ld_uid ld.ld_loc; {Types.ld_id = ld.ld_id; ld_mutable = ld.ld_mutable; ld_type = ty; ld_loc = ld.ld_loc; ld_attributes = ld.ld_attributes; - ld_uid; + ld_uid = ld.ld_uid; } ) lbls in @@ -329,6 +321,27 @@ let make_constructor env loc type_path type_params svars sargs sret_type = targs, Some tret_type, args, Some ret_type end + +let shape_map_labels = + List.fold_left (fun map { ld_id; ld_uid; _} -> + Shape.Map.add_label map ld_id ld_uid) + Shape.Map.empty + +let shape_map_cstrs = + List.fold_left (fun map { cd_id; cd_uid; cd_args; _ } -> + let cstr_shape_map = + let label_decls = + match cd_args with + | Cstr_tuple _ -> [] + | Cstr_record ldecls -> ldecls + in + shape_map_labels label_decls + in + Shape.Map.add_constr map cd_id + @@ Shape.str ~uid:cd_uid cstr_shape_map) + (Shape.Map.empty) + + let transl_declaration env sdecl (id, uid) = (* Bind type parameters *) Ctype.with_local_level begin fun () -> @@ -387,7 +400,7 @@ let transl_declaration env sdecl (id, uid) = in let (tkind, kind) = match sdecl.ptype_kind with - | Ptype_abstract -> Ttype_abstract, Type_abstract + | Ptype_abstract -> Ttype_abstract, Type_abstract Definition | Ptype_variant scstrs -> if List.exists (fun cstr -> cstr.pcd_res <> None) scstrs then begin match cstrs with @@ -415,6 +428,7 @@ let transl_declaration env sdecl (id, uid) = let tcstr = { cd_id = name; cd_name = scstr.pcd_name; + cd_uid = Uid.mk ~current_unit:(Env.get_unit_name ()); cd_vars = scstr.pcd_vars; cd_args = targs; cd_res = tret_type; @@ -422,14 +436,12 @@ let transl_declaration env sdecl (id, uid) = cd_attributes = scstr.pcd_attributes } in let cstr = - let cd_uid = Uid.mk ~current_unit:(Env.get_unit_name ()) in - Env.register_uid cd_uid scstr.pcd_loc; { Types.cd_id = name; cd_args = args; cd_res = ret_type; cd_loc = scstr.pcd_loc; cd_attributes = scstr.pcd_attributes; - cd_uid; } + cd_uid = tcstr.cd_uid; } in tcstr, cstr in @@ -493,18 +505,28 @@ let transl_declaration env sdecl (id, uid) = in set_private_row env sdecl.ptype_loc p decl end; - { - typ_id = id; - typ_name = sdecl.ptype_name; - typ_params = tparams; - typ_type = decl; - typ_cstrs = cstrs; - typ_loc = sdecl.ptype_loc; - typ_manifest = tman; - typ_kind = tkind; - typ_private = sdecl.ptype_private; - typ_attributes = sdecl.ptype_attributes; - } + let decl = + { + typ_id = id; + typ_name = sdecl.ptype_name; + typ_params = tparams; + typ_type = decl; + typ_cstrs = cstrs; + typ_loc = sdecl.ptype_loc; + typ_manifest = tman; + typ_kind = tkind; + typ_private = sdecl.ptype_private; + typ_attributes = sdecl.ptype_attributes; + } + in + let typ_shape = + let uid = decl.typ_type.type_uid in + match decl.typ_kind with + | Ttype_variant cstrs -> Shape.str ~uid (shape_map_cstrs cstrs) + | Ttype_record labels -> Shape.str ~uid (shape_map_labels labels) + | Ttype_abstract | Ttype_open -> Shape.leaf uid + in + decl, typ_shape end (* Generalize a type declaration *) @@ -543,7 +565,7 @@ let rec check_constraints_rec env loc visited ty = end; List.iter (check_constraints_rec env loc visited) args | Tpoly (ty, tl) -> - let _, ty = Ctype.instance_poly false tl ty in + let _, ty = Ctype.instance_poly ~fixed:false tl ty in check_constraints_rec env loc visited ty | _ -> Btype.iter_type_expr (check_constraints_rec env loc visited) ty @@ -567,7 +589,7 @@ let check_constraints env sdecl (_, decl) = (fun (sty, _) ty -> check_constraints_rec env sty.ptyp_loc visited ty) sdecl.ptype_params decl.type_params; begin match decl.type_kind with - | Type_abstract -> () + | Type_abstract _ -> () | Type_variant (l, _rep) -> let find_pl = function Ptype_variant pl -> pl @@ -667,7 +689,7 @@ let check_abbrev env sdecl (id, decl) = We want to guarantee that all cycles within OCaml types are "guarded". - More precisly, we consider a reachability relation + More precisely, we consider a reachability relation "[t] is reachable [guarded|unguarded] from [u]" defined as follows: @@ -880,7 +902,7 @@ let check_well_founded_manifest ~abs_env env loc path decl = (we don't have an example at hand where it is necessary), but we are doing it anyway out of caution. *) -let check_well_founded_decl ~abs_env env loc path decl to_check = +let check_well_founded_decl ~abs_env env loc path decl to_check = let open Btype in (* We iterate on all subexpressions of the declaration to check "in depth" that no ill-founded type exists. *) @@ -899,7 +921,7 @@ let check_well_founded_decl ~abs_env env loc path decl to_check = {type_iterators with it_type_expr = (fun self ty -> if TypeSet.mem ty !checked then () else begin - check_well_founded ~abs_env env loc path to_check visited ty; + check_well_founded ~abs_env env loc path to_check visited ty; checked := TypeSet.add ty !checked; self.it_do_type_expr self ty end)} in @@ -911,10 +933,10 @@ let check_well_founded_decl ~abs_env env loc path decl to_check = Note: in the case of a constrained type definition [type 'a t = ... constraint 'a = ...], we require - that all instances in [...] be equal to the constrainted type. + that all instances in [...] be equal to the constrained type. *) -let check_regularity ~orig_env env loc path decl to_check = +let check_regularity ~abs_env env loc path decl to_check = (* to_check is true for potentially mutually recursive paths. (path, decl) is the type declaration to be checked. *) @@ -928,7 +950,7 @@ let check_regularity ~orig_env env loc path decl to_check = match get_desc ty with | Tconstr(path', args', _) -> if Path.same path path' then begin - if not (Ctype.is_equal orig_env false args args') then + if not (Ctype.is_equal abs_env false args args') then raise (Error(loc, Non_regular { definition=path; @@ -950,9 +972,9 @@ let check_regularity ~orig_env env loc path decl to_check = let (params, body) = Ctype.instance_parameterized_type params0 body0 in begin - try List.iter2 (Ctype.unify orig_env) params args' + try List.iter2 (Ctype.unify abs_env) args' params with Ctype.Unify err -> - raise (Error(loc, Constraint_failed (orig_env, err))); + raise (Error(loc, Constraint_failed (abs_env, err))); end; check_regular path' args (path' :: prev_exp) (Expands_to (ty,body) :: trace) @@ -961,7 +983,8 @@ let check_regularity ~orig_env env loc path decl to_check = end; List.iter (check_subtype cpath args prev_exp trace ty) args' | Tpoly (ty, tl) -> - let (_, ty) = Ctype.instance_poly ~keep_names:true false tl ty in + let (_, ty) = + Ctype.instance_poly ~keep_names:true ~fixed:false tl ty in check_regular cpath args prev_exp trace ty | _ -> Btype.iter_type_expr @@ -981,10 +1004,10 @@ let check_regularity ~orig_env env loc path decl to_check = check_regular path args [] [] body) decl.type_manifest -let check_abbrev_regularity ~orig_env env id_loc_list to_check tdecl = +let check_abbrev_regularity ~abs_env env id_loc_list to_check tdecl = let decl = tdecl.typ_type in let id = tdecl.typ_id in - check_regularity ~orig_env env (List.assoc id id_loc_list) (Path.Pident id) + check_regularity ~abs_env env (List.assoc id id_loc_list) (Path.Pident id) decl to_check let check_duplicates sdecl_list = @@ -1020,7 +1043,7 @@ let check_duplicates sdecl_list = (* Force recursion to go through id for private types*) let name_recursion sdecl id decl = match decl with - | { type_kind = Type_abstract; + | { type_kind = Type_abstract _; type_manifest = Some ty; type_private = Private; } when is_fixed_type sdecl -> let ty' = newty2 ~level:(get_level ty) (get_desc ty) in @@ -1049,10 +1072,11 @@ let check_redefined_unit (td: Parsetree.type_declaration) = | _ -> () -let add_types_to_env decls env = - List.fold_right - (fun (id, decl) env -> add_type ~long_path:false ~check:true id decl env) - decls env +let add_types_to_env decls shapes env = + List.fold_right2 + (fun (id, decl) shape env -> + add_type ~long_path:false ~check:true ~shape id decl env) + decls shapes env (* Translate a set of type declarations, mutually recursive or not *) let transl_type_decl env rec_flag sdecl_list = @@ -1083,12 +1107,14 @@ let transl_type_decl env rec_flag sdecl_list = Uid.mk ~current_unit:(Env.get_unit_name ()) ) sdecl_list in - let tdecls, decls, new_env = + (* Translate declarations, using a temporary environment where abbreviations + expand to a generic type variable. After that, we check the coherence of + the translated declarations in the resulting new environment. *) + let tdecls, decls, shapes, new_env = Ctype.with_local_level_iter ~post:generalize_decl begin fun () -> (* Enter types. *) let temp_env = - List.fold_left2 (enter_type ~abstract_abbrevs:false rec_flag) - env sdecl_list ids_list in + List.fold_left2 (enter_type rec_flag) env sdecl_list ids_list in (* Translate each declaration. *) let current_slot = ref None in let warn_unused = @@ -1121,23 +1147,17 @@ let transl_type_decl env rec_flag sdecl_list = in let tdecls = List.map2 transl_declaration sdecl_list (List.map ids_slots ids_list) in - let decls = - List.map (fun tdecl -> (tdecl.typ_id, tdecl.typ_type)) tdecls in + let decls, shapes = + List.map (fun (tdecl, shape) -> + (tdecl.typ_id, tdecl.typ_type), shape) tdecls + |> List.split + in current_slot := None; (* Check for duplicates *) check_duplicates sdecl_list; (* Build the final env. *) - let new_env = add_types_to_env decls env in - (* Update stubs *) - begin match rec_flag with - | Asttypes.Nonrecursive -> () - | Asttypes.Recursive -> - List.iter2 - (fun (id, _) sdecl -> - update_type temp_env new_env id sdecl.ptype_loc) - ids_list sdecl_list - end; - ((tdecls, decls, new_env), List.map snd decls) + let new_env = add_types_to_env decls shapes env in + ((tdecls, decls, shapes, new_env), List.map snd decls) end in (* Check for ill-formed abbrevs *) @@ -1145,13 +1165,13 @@ let transl_type_decl env rec_flag sdecl_list = List.map2 (fun (id, _) sdecl -> (id, sdecl.ptype_loc)) ids_list sdecl_list in - (* Error messages cannot use the new environment, as this might result in - non-termination. Instead we use a completely abstract version of the - temporary environment, giving a reason for why abbreviations cannot be - expanded (#12645, #12649) *) + (* [check_abbrev_regularity] and error messages cannot use the new + environment, as this might result in non-termination. Instead we use a + completely abstract version of the temporary environment, giving a reason + for why abbreviations cannot be expanded (#12334, #12368) *) let abs_env = List.fold_left2 - (enter_type ~abstract_abbrevs:true rec_flag) + (enter_type ~abstract_abbrevs:Rec_check_regularity rec_flag) env sdecl_list ids_list in List.iter (fun (id, decl) -> check_well_founded_manifest ~abs_env new_env (List.assoc id id_loc_list) @@ -1164,11 +1184,12 @@ let transl_type_decl env rec_flag sdecl_list = (Path.Pident id) decl to_check) decls; - List.iter - (check_abbrev_regularity ~orig_env:env new_env id_loc_list to_check) tdecls; + List.iter (fun (tdecl, _shape) -> + check_abbrev_regularity ~abs_env new_env id_loc_list to_check tdecl) + tdecls; (* Check that all type variables are closed *) List.iter2 - (fun sdecl tdecl -> + (fun sdecl (tdecl, _shape) -> let decl = tdecl.typ_type in match Ctype.closed_type_decl decl with Some ty -> @@ -1195,18 +1216,18 @@ let transl_type_decl env rec_flag sdecl_list = raise (Error (loc, Separability err)) in (* Compute the final environment with variance and immediacy *) - let final_env = add_types_to_env decls env in + let final_env = add_types_to_env decls shapes env in (* Check re-exportation *) List.iter2 (check_abbrev final_env) sdecl_list decls; (* Keep original declaration *) let final_decls = List.map2 - (fun tdecl (_id2, decl) -> + (fun (tdecl, _shape) (_id2, decl) -> { tdecl with typ_type = decl } ) tdecls decls in (* Done *) - (final_decls, final_env) + (final_decls, final_env, shapes) (* Translating type extensions *) @@ -1317,12 +1338,22 @@ let transl_extension_constructor ~scope env type_path type_params ext_uid = Uid.mk ~current_unit:(Env.get_unit_name ()); } in + let ext_cstrs = { ext_id = id; ext_name = sext.pext_name; ext_type = ext; ext_kind = kind; Typedtree.ext_loc = sext.pext_loc; Typedtree.ext_attributes = sext.pext_attributes; } + in + let shape = + let map = match ext_cstrs.ext_kind with + | Text_decl (_, Cstr_record lbls, _) -> shape_map_labels lbls + | _ -> Shape.Map.empty + in + Shape.str ~uid:ext_cstrs.ext_type.ext_uid map + in + ext_cstrs, shape let transl_extension_constructor ~scope env type_path type_params typext_params priv sext = @@ -1402,7 +1433,7 @@ let transl_type_extension extend env loc styext = (* Generalize types *) List.iter Ctype.generalize type_params; List.iter - (fun ext -> + (fun (ext, _shape) -> Btype.iter_type_expr_cstr_args Ctype.generalize ext.ext_type.ext_args; Option.iter Ctype.generalize ext.ext_type.ext_ret_type) constructors; @@ -1410,7 +1441,7 @@ let transl_type_extension extend env loc styext = in (* Check that all type variables are closed *) List.iter - (fun ext -> + (fun (ext, _shape) -> match Ctype.closed_extension_constructor ext.ext_type with Some ty -> raise(Error(ext.ext_loc, Unbound_type_var_ext(ty, ext.ext_type))) @@ -1418,7 +1449,7 @@ let transl_type_extension extend env loc styext = constructors; (* Check variances are correct *) List.iter - (fun ext-> + (fun (ext, _shape) -> (* Note that [loc] here is distinct from [type_decl.type_loc], which makes the [loc] parameter to this function useful. [loc] is the location of the extension, while [type_decl] points to the original @@ -1431,11 +1462,13 @@ let transl_type_extension extend env loc styext = (* Add extension constructors to the environment *) let newenv = List.fold_left - (fun env ext -> + (fun env (ext, shape) -> let rebind = is_rebind ext in - Env.add_extension ~check:true ~rebind ext.ext_id ext.ext_type env) + Env.add_extension ~check:true ~shape ~rebind + ext.ext_id ext.ext_type env) env constructors in + let constructors, shapes = List.split constructors in let tyext = { tyext_path = type_path; tyext_txt = styext.ptyext_path; @@ -1445,21 +1478,21 @@ let transl_type_extension extend env loc styext = tyext_loc = styext.ptyext_loc; tyext_attributes = styext.ptyext_attributes; } in - (tyext, newenv) + (tyext, newenv, shapes) let transl_type_extension extend env loc styext = Builtin_attributes.warning_scope styext.ptyext_attributes (fun () -> transl_type_extension extend env loc styext) let transl_exception env sext = - let ext = + let ext, shape = let scope = Ctype.create_scope () in Ctype.with_local_level (fun () -> TyVarEnv.reset(); transl_extension_constructor ~scope env Predef.path_exn [] [] Asttypes.Public sext) - ~post: begin fun ext -> + ~post: begin fun (ext, _shape) -> Btype.iter_type_expr_cstr_args Ctype.generalize ext.ext_type.ext_args; Option.iter Ctype.generalize ext.ext_type.ext_ret_type; end @@ -1472,13 +1505,12 @@ let transl_exception env sext = end; let rebind = is_rebind ext in let newenv = - Env.add_extension ~check:true ~rebind ext.ext_id ext.ext_type env + Env.add_extension ~check:true ~shape ~rebind ext.ext_id ext.ext_type env in - ext, newenv + ext, newenv, shape let transl_type_exception env t = - Builtin_attributes.check_no_alert t.ptyexn_attributes; - let contructor, newenv = + let contructor, newenv, shape = Builtin_attributes.warning_scope t.ptyexn_attributes (fun () -> transl_exception env t.ptyexn_constructor @@ -1486,7 +1518,7 @@ let transl_type_exception env t = in {tyexn_constructor = contructor; tyexn_loc = t.ptyexn_loc; - tyexn_attributes = t.ptyexn_attributes}, newenv + tyexn_attributes = t.ptyexn_attributes}, newenv, shape type native_repr_attribute = @@ -1495,8 +1527,8 @@ type native_repr_attribute = let get_native_repr_attribute attrs ~global_repr = match - Attr_helper.get_no_payload_attribute ["unboxed"; "ocaml.unboxed"] attrs, - Attr_helper.get_no_payload_attribute ["untagged"; "ocaml.untagged"] attrs, + Attr_helper.get_no_payload_attribute "unboxed" attrs, + Attr_helper.get_no_payload_attribute "untagged" attrs, global_repr with | None, None, None -> Native_repr_attr_absent @@ -1509,8 +1541,9 @@ let get_native_repr_attribute attrs ~global_repr = let native_repr_of_type env kind ty = match kind, get_desc (Ctype.expand_head_opt env ty) with - | Untagged, Tconstr (path, _, _) when Path.same path Predef.path_int -> - Some Untagged_int + | Untagged, Tconstr (_, _, _) when + Typeopt.maybe_pointer_type env ty = Lambda.Immediate -> + Some Untagged_immediate | Unboxed, Tconstr (path, _, _) when Path.same path Predef.path_float -> Some Unboxed_float | Unboxed, Tconstr (path, _, _) when Path.same path Predef.path_int32 -> @@ -1721,19 +1754,20 @@ let transl_with_constraint id ?fixed_row_path ~sig_env ~sig_decl ~outer_env with Ctype.Unify err -> raise(Error(loc, Inconsistent_constraint (env, err))) ) constraints; + let sig_decl_abstract = Btype.type_kind_is_abstract sig_decl in let priv = if sdecl.ptype_private = Private then Private else - if arity_ok && sig_decl.type_kind <> Type_abstract + if arity_ok && not sig_decl_abstract then sig_decl.type_private else sdecl.ptype_private in - if arity_ok && sig_decl.type_kind <> Type_abstract + if arity_ok && not sig_decl_abstract && sdecl.ptype_private = Private then Location.deprecated loc "spurious use of private"; let type_kind, type_unboxed_default = if arity_ok && man <> None then sig_decl.type_kind, sig_decl.type_unboxed_default else - Type_abstract, false + Type_abstract Definition, false in let new_sig_decl = { type_params = params; @@ -1816,7 +1850,7 @@ let abstract_type_decl ~injective arity = Ctype.with_local_level ~post:generalize_decl begin fun () -> { type_params = make_params arity; type_arity = arity; - type_kind = Type_abstract; + type_kind = Type_abstract Definition; type_private = Public; type_manifest = None; type_variance = Variance.unknown_signature ~injective ~arity; @@ -1848,8 +1882,8 @@ let check_recmod_typedecl env loc recmod_ids path decl = (path, decl) is the type declaration to be checked. *) let to_check path = Path.exists_free recmod_ids path in check_well_founded_decl ~abs_env:env env loc path decl to_check; - check_regularity ~orig_env:env env loc path decl to_check; - (* additionally check coherece, as one might build an incoherent signature, + check_regularity ~abs_env:env env loc path decl to_check; + (* additional coherence check, as one might build an incoherent signature, and use it to build an incoherent module, cf. #7851 *) check_coherence env loc path decl @@ -1857,6 +1891,7 @@ let check_recmod_typedecl env loc recmod_ids path decl = (**** Error report ****) open Format +module Style = Misc.Style let explain_unbound_gen ppf tv tl typ kwd pr = try @@ -1866,7 +1901,8 @@ let explain_unbound_gen ppf tv tl typ kwd pr = Printtyp.prepare_for_printing [typ ti; ty0]; fprintf ppf ".@ @[In %s@ %a@;<1 -2>the variable %a is unbound@]" - kwd pr ti Printtyp.prepared_type_expr tv + kwd (Style.as_inline_code pr) ti + (Style.as_inline_code Printtyp.prepared_type_expr) tv (* kwd pr ti Printtyp.prepared_type_expr tv *) with Not_found -> () @@ -1931,12 +1967,12 @@ module Reaching_path = struct let pp_step ppf = function | Expands_to (ty, body) -> Format.fprintf ppf "%a = %a" - Printtyp.prepared_type_expr ty - Printtyp.prepared_type_expr body + (Style.as_inline_code Printtyp.prepared_type_expr) ty + (Style.as_inline_code Printtyp.prepared_type_expr) body | Contains (outer, inner) -> Format.fprintf ppf "%a contains %a" - Printtyp.prepared_type_expr outer - Printtyp.prepared_type_expr inner + (Style.as_inline_code Printtyp.prepared_type_expr) outer + (Style.as_inline_code Printtyp.prepared_type_expr) inner in let comma ppf () = Format.fprintf ppf ",@ " in Format.(pp_print_list ~pp_sep:comma pp_step) ppf reaching_path @@ -1950,37 +1986,37 @@ let report_error ppf = function | Repeated_parameter -> fprintf ppf "A type parameter occurs several times" | Duplicate_constructor s -> - fprintf ppf "Two constructors are named %s" s + fprintf ppf "Two constructors are named %a" Style.inline_code s | Too_many_constructors -> fprintf ppf "@[Too many non-constant constructors@ -- maximum is %i %s@]" (Config.max_tag + 1) "non-constant constructors" | Duplicate_label s -> - fprintf ppf "Two labels are named %s" s + fprintf ppf "Two labels are named %a" Style.inline_code s | Recursive_abbrev (s, env, reaching_path) -> let reaching_path = Reaching_path.simplify reaching_path in Printtyp.wrap_printing_env ~error:true env @@ fun () -> Printtyp.reset (); Reaching_path.add_to_preparation reaching_path; - fprintf ppf "@[The type abbreviation %s is cyclic%a@]" - s + fprintf ppf "@[The type abbreviation %a is cyclic%a@]" + Style.inline_code s Reaching_path.pp_colon reaching_path | Cycle_in_def (s, env, reaching_path) -> let reaching_path = Reaching_path.simplify reaching_path in Printtyp.wrap_printing_env ~error:true env @@ fun () -> Printtyp.reset (); Reaching_path.add_to_preparation reaching_path; - fprintf ppf "@[The definition of %s contains a cycle%a@]" - s + fprintf ppf "@[The definition of %a contains a cycle%a@]" + Style.inline_code s Reaching_path.pp_colon reaching_path | Definition_mismatch (ty, _env, None) -> fprintf ppf "@[@[%s@ %s@;<1 2>%a@]@]" "This variant or record definition" "does not match that of type" - Printtyp.type_expr ty + (Style.as_inline_code Printtyp.type_expr) ty | Definition_mismatch (ty, env, Some err) -> fprintf ppf "@[@[%s@ %s@;<1 2>%a@]%a@]" "This variant or record definition" "does not match that of type" - Printtyp.type_expr ty + (Style.as_inline_code Printtyp.type_expr) ty (Includecore.report_type_mismatch "the original" "this" "definition" env) err @@ -1992,17 +2028,18 @@ let report_error ppf = function fprintf ppf "@]" | Non_regular { definition; used_as; defined_as; reaching_path } -> let reaching_path = Reaching_path.simplify reaching_path in + let pp_type ppf ty = Style.as_inline_code !Oprint.out_type ppf ty in Printtyp.prepare_for_printing [used_as; defined_as]; Reaching_path.add_to_preparation reaching_path; fprintf ppf "@[This recursive type is not regular.@ \ - The type constructor %s is defined as@;<1 2>type %a@ \ + The type constructor %a is defined as@;<1 2>type %a@ \ but it is used as@;<1 2>%a%t\ All uses need to match the definition for the recursive type \ to be regular.@]" - (Path.name definition) - !Oprint.out_type (Printtyp.tree_of_typexp Type defined_as) - !Oprint.out_type (Printtyp.tree_of_typexp Type used_as) + Style.inline_code (Path.name definition) + pp_type (Printtyp.tree_of_typexp Type defined_as) + pp_type (Printtyp.tree_of_typexp Type used_as) (fun pp -> let is_expansion = function Expands_to _ -> true | _ -> false in if List.exists is_expansion reaching_path then @@ -2042,7 +2079,7 @@ let report_error ppf = function | Type_record (tl, _), _ -> explain_unbound ppf ty tl (fun l -> l.Types.ld_type) "field" (fun l -> Ident.name l.Types.ld_id ^ ": ") - | Type_abstract, Some ty' -> + | Type_abstract _, Some ty' -> explain_unbound_single ppf ty ty' | _ -> () end; @@ -2059,12 +2096,12 @@ let report_error ppf = function | Not_extensible_type path -> fprintf ppf "@[%s@ %a@ %s@]" "Type definition" - Printtyp.path path + (Style.as_inline_code Printtyp.path) path "is not extensible" | Extension_mismatch (path, env, err) -> - fprintf ppf "@[@[%s@ %s@;<1 2>%s@]%a@]" + fprintf ppf "@[@[%s@ %s@;<1 2>%a@]%a@]" "This extension" "does not match the definition of type" - (Path.name path) + Style.inline_code (Path.name path) (Includecore.report_type_mismatch "the type" "this extension" "definition" env) err @@ -2072,20 +2109,21 @@ let report_error ppf = function Printtyp.report_unification_error ppf env err (function ppf -> fprintf ppf "The constructor %a@ has type" - Printtyp.longident lid) + (Style.as_inline_code Printtyp.longident) lid) (function ppf -> fprintf ppf "but was expected to be of type") | Rebind_mismatch (lid, p, p') -> fprintf ppf - "@[%s@ %a@ %s@ %s@ %s@ %s@ %s@]" - "The constructor" Printtyp.longident lid - "extends type" (Path.name p) + "@[%s@ %a@ %s@ %a@ %s@ %s@ %a@]" + "The constructor" + (Style.as_inline_code Printtyp.longident) lid + "extends type" Style.inline_code (Path.name p) "whose declaration does not match" - "the declaration of type" (Path.name p') + "the declaration of type" Style.inline_code (Path.name p') | Rebind_private lid -> fprintf ppf "@[%s@ %a@ %s@]" "The constructor" - Printtyp.longident lid + (Style.as_inline_code Printtyp.longident) lid "is private" | Variance (Typedecl_variance.Bad_variance (n, v1, v2)) -> let variance (p,n,i) = @@ -2104,13 +2142,13 @@ let report_error ppf = function Printtyp.add_type_declaration_to_preparation id decl; fprintf ppf "@[%s@;<1 2>%a@;" "In the definition" - (Printtyp.prepared_type_declaration id) + (Style.as_inline_code @@ Printtyp.prepared_type_declaration id) decl | Gadt_constructor c -> Printtyp.add_constructor_to_preparation c; fprintf ppf "@[%s@;<1 2>%a@;" "In the GADT constructor" - Printtyp.prepared_constructor + (Style.as_inline_code Printtyp.prepared_constructor) c | Extension_constructor (id, e) -> Printtyp.add_extension_constructor_to_preparation e; @@ -2123,19 +2161,19 @@ let report_error ppf = function | Variance_not_reflected -> fprintf ppf "@[%s@ %a@ %s@ %s@ It" "the type variable" - Printtyp.prepared_type_expr variable + (Style.as_inline_code Printtyp.prepared_type_expr) variable "has a variance that" "is not reflected by its occurrence in type parameters." | No_variable -> fprintf ppf "@[%s@ %a@ %s@ %s@]@]" "the type variable" - Printtyp.prepared_type_expr variable + (Style.as_inline_code Printtyp.prepared_type_expr) variable "cannot be deduced" "from the type parameters." | Variance_not_deducible -> fprintf ppf "@[%s@ %a@ %s@ %s@ It" "the type variable" - Printtyp.prepared_type_expr variable + (Style.as_inline_code Printtyp.prepared_type_expr) variable "has a variance that" "cannot be deduced from the type parameters." end @@ -2150,7 +2188,8 @@ let report_error ppf = function fprintf ppf " was expected to be %s,@ but it is %s.@]@]" (variance v2) (variance v1)) | Unavailable_type_constructor p -> - fprintf ppf "The definition of type %a@ is unavailable" Printtyp.path p + fprintf ppf "The definition of type %a@ is unavailable" + (Style.as_inline_code Printtyp.path) p | Variance Typedecl_variance.Varying_anonymous -> fprintf ppf "@[%s@ %s@ %s@]" "In this GADT definition," "the variance of some parameter" @@ -2158,28 +2197,42 @@ let report_error ppf = function | Val_in_structure -> fprintf ppf "Value declarations are only allowed in signatures" | Multiple_native_repr_attributes -> - fprintf ppf "Too many [@@unboxed]/[@@untagged] attributes" + fprintf ppf "Too many %a/%a attributes" + Style.inline_code "[@@unboxed]" + Style.inline_code "[@@untagged]" | Cannot_unbox_or_untag_type Unboxed -> fprintf ppf "@[Don't know how to unbox this type.@ \ - Only float, int32, int64 and nativeint can be unboxed.@]" + Only %a, %a, %a, and %a can be unboxed.@]" + Style.inline_code "float" + Style.inline_code "int32" + Style.inline_code "int64" + Style.inline_code "nativeint" | Cannot_unbox_or_untag_type Untagged -> - fprintf ppf "@[Don't know how to untag this type.@ \ - Only int can be untagged.@]" + fprintf ppf "@[Don't know how to untag this type. Only %a@ \ + and other immediate types can be untagged.@]" + Style.inline_code "int" | Deep_unbox_or_untag_attribute kind -> fprintf ppf - "@[The attribute '%s' should be attached to@ \ + "@[The attribute %a should be attached to@ \ a direct argument or result of the primitive,@ \ it should not occur deeply into its type.@]" + Style.inline_code (match kind with Unboxed -> "@unboxed" | Untagged -> "@untagged") | Immediacy (Typedecl_immediacy.Bad_immediacy_attribute violation) -> - fprintf ppf "@[%a@]" Format.pp_print_text - (match violation with - | Type_immediacy.Violation.Not_always_immediate -> - "Types marked with the immediate attribute must be \ - non-pointer types like int or bool." - | Type_immediacy.Violation.Not_always_immediate_on_64bits -> - "Types marked with the immediate64 attribute must be \ - produced using the Stdlib.Sys.Immediate64.Make functor.") + (match violation with + | Type_immediacy.Violation.Not_always_immediate -> + fprintf ppf + "@[Types@ marked@ with@ the@ immediate@ attribute@ must@ be@ \ + non-pointer@ types@ like@ %a@ or@ %a.@]" + Style.inline_code "int" + Style.inline_code "bool" + | Type_immediacy.Violation.Not_always_immediate_on_64bits -> + fprintf ppf + "@[Types@ marked@ with@ the@ %a@ attribute@ must@ be@ \ + produced@ using@ the@ %a@ functor.@]" + Style.inline_code "immediate64" + Style.inline_code "Stdlib.Sys.Immediate64.Make" + ) | Bad_unboxed_attribute msg -> fprintf ppf "@[This type cannot be unboxed because@ %s.@]" msg | Separability (Typedecl_separability.Non_separable_evar evar) -> @@ -2188,26 +2241,30 @@ let report_error ppf = function fprintf ppf "an unnamed existential variable" | Some str -> fprintf ppf "the existential variable %a" - Pprintast.tyvar str in + (Style.as_inline_code Pprintast.tyvar) str in fprintf ppf "@[This type cannot be unboxed because@ \ it might contain both float and non-float values,@ \ depending on the instantiation of %a.@ \ - You should annotate it with [%@%@ocaml.boxed].@]" + You should annotate it with %a.@]" pp_evar evar + Style.inline_code "[@@ocaml.boxed]" | Boxed_and_unboxed -> fprintf ppf "@[A type cannot be boxed and unboxed at the same time.@]" | Nonrec_gadt -> fprintf ppf - "@[GADT case syntax cannot be used in a 'nonrec' block.@]" + "@[GADT case syntax cannot be used in a %a block.@]" + Style.inline_code "nonrec" | Invalid_private_row_declaration ty -> + let pp_private ppf ty = fprintf ppf "private %a" Printtyp.type_expr ty in Format.fprintf ppf "@[This private row type declaration is invalid.@ \ The type expression on the right-hand side reduces to@;<1 2>%a@ \ which does not have a free row type variable.@]@,\ @[@[@{Hint@}: If you intended to define a private \ type abbreviation,@ \ - write explicitly@]@;<1 2>private %a@]" - Printtyp.type_expr ty Printtyp.type_expr ty + write explicitly@]@;<1 2>%a@]" + (Style.as_inline_code Printtyp.type_expr) ty + (Style.as_inline_code pp_private) ty let () = Location.register_error_of_exn diff --git a/src/ocaml/typing/typedecl.mli b/src/ocaml/typing/typedecl.mli index 013fae4300..5598271b0a 100644 --- a/src/ocaml/typing/typedecl.mli +++ b/src/ocaml/typing/typedecl.mli @@ -20,19 +20,19 @@ open Format val transl_type_decl: Env.t -> Asttypes.rec_flag -> Parsetree.type_declaration list -> - Typedtree.type_declaration list * Env.t + Typedtree.type_declaration list * Env.t * Shape.t list val transl_exception: Env.t -> Parsetree.extension_constructor -> - Typedtree.extension_constructor * Env.t + Typedtree.extension_constructor * Env.t * Shape.t val transl_type_exception: Env.t -> - Parsetree.type_exception -> Typedtree.type_exception * Env.t + Parsetree.type_exception -> Typedtree.type_exception * Env.t * Shape.t val transl_type_extension: bool -> Env.t -> Location.t -> Parsetree.type_extension -> - Typedtree.type_extension * Env.t + Typedtree.type_extension * Env.t * Shape.t list val transl_value_decl: Env.t -> Location.t -> diff --git a/src/ocaml/typing/typedecl_immediacy.ml b/src/ocaml/typing/typedecl_immediacy.ml index f1f0594f9a..71e49a10be 100644 --- a/src/ocaml/typing/typedecl_immediacy.ml +++ b/src/ocaml/typing/typedecl_immediacy.ml @@ -35,8 +35,9 @@ let compute_decl env tdecl = Type_immediacy.Always else Type_immediacy.Unknown - | (Type_abstract, Some(typ)) -> Ctype.immediacy env typ - | (Type_abstract, None) -> Type_immediacy.of_attributes tdecl.type_attributes + | (Type_abstract _, Some(typ)) -> Ctype.immediacy env typ + | (Type_abstract _, None) -> + Type_immediacy.of_attributes tdecl.type_attributes | _ -> Type_immediacy.Unknown let property : (Type_immediacy.t, unit) Typedecl_properties.property = diff --git a/src/ocaml/typing/typedecl_separability.ml b/src/ocaml/typing/typedecl_separability.ml index c6ded4cf6a..c8f2f3b171 100644 --- a/src/ocaml/typing/typedecl_separability.ml +++ b/src/ocaml/typing/typedecl_separability.ml @@ -50,7 +50,7 @@ type type_structure = let structure : type_definition -> type_structure = fun def -> match def.type_kind with | Type_open -> Open - | Type_abstract -> + | Type_abstract _ -> begin match def.type_manifest with | None -> Abstract | Some type_expr -> Synonym type_expr diff --git a/src/ocaml/typing/typedecl_variance.ml b/src/ocaml/typing/typedecl_variance.ml index ca0521aec9..c384e8c467 100644 --- a/src/ocaml/typing/typedecl_variance.ml +++ b/src/ocaml/typing/typedecl_variance.ml @@ -113,7 +113,7 @@ let injective = Variance.(set Inj null) let compute_variance_type env ~check (required, loc) decl tyl = (* Requirements *) - let check_injectivity = decl.type_kind = Type_abstract in + let check_injectivity = Btype.type_kind_is_abstract decl in let required = List.map (fun (c,n,i) -> @@ -228,15 +228,15 @@ let compute_variance_type env ~check (required, loc) decl tyl = List.iter (fun (_,ty) -> check ty) tyl; end; List.map2 - (fun ty (p, n, i) -> + (fun ty (p, n, _i) -> let v = get_variance ty tvl in let tr = decl.type_private in (* Use required variance where relevant *) - let concr = decl.type_kind <> Type_abstract (*|| tr = Type_new*) in + let concr = not (Btype.type_kind_is_abstract decl) in let (p, n) = if tr = Private || not (Btype.is_Tvar ty) then (p, n) (* set *) else (false, false) (* only check *) - and i = concr || i && tr = Private in + and i = concr in let v = union v (make p n i) in if not concr || Btype.is_Tvar ty then v else union v @@ -308,11 +308,10 @@ let compute_variance_decl env ~check decl (required, _ as rloc) = let check = Option.map (fun id -> Type_declaration (id, decl)) check in - if (decl.type_kind = Type_abstract || decl.type_kind = Type_open) - && decl.type_manifest = None then + let abstract = Btype.type_kind_is_abstract decl in + if (abstract || decl.type_kind = Type_open) && decl.type_manifest = None then List.map - (fun (c, n, i) -> - make (not n) (not c) (decl.type_kind <> Type_abstract || i)) + (fun (c, n, i) -> make (not n) (not c) (not abstract || i)) required else begin let mn = @@ -322,7 +321,7 @@ let compute_variance_decl env ~check decl (required, _ as rloc) = in let vari = match decl.type_kind with - Type_abstract | Type_open -> + Type_abstract _ | Type_open -> compute_variance_type env ~check rloc decl mn | Type_variant (tll,_rep) -> if List.for_all (fun c -> c.Types.cd_res = None) tll then @@ -354,7 +353,7 @@ let compute_variance_decl env ~check decl (required, _ as rloc) = (mn @ List.map (fun {Types.ld_mutable; ld_type} -> (ld_mutable = Mutable, ld_type)) ftl) in - if mn = [] || decl.type_kind <> Type_abstract then + if mn = [] || not abstract then List.map Variance.strengthen vari else vari end diff --git a/src/ocaml/typing/typedtree.ml b/src/ocaml/typing/typedtree.ml index f97d52a8d3..1f1954ee82 100644 --- a/src/ocaml/typing/typedtree.ml +++ b/src/ocaml/typing/typedtree.ml @@ -18,6 +18,8 @@ open Asttypes open Types +module Uid = Shape.Uid + (* Value expressions for the core language *) type partial = Partial | Total @@ -53,9 +55,9 @@ and pat_extra = and 'k pattern_desc = (* value patterns *) | Tpat_any : value pattern_desc - | Tpat_var : Ident.t * string loc -> value pattern_desc + | Tpat_var : Ident.t * string loc * Uid.t -> value pattern_desc | Tpat_alias : - value general_pattern * Ident.t * string loc -> value pattern_desc + value general_pattern * Ident.t * string loc * Uid.t -> value pattern_desc | Tpat_constant : constant -> value pattern_desc | Tpat_tuple : value general_pattern list -> value pattern_desc | Tpat_construct : @@ -101,8 +103,7 @@ and expression_desc = Texp_ident of Path.t * Longident.t loc * Types.value_description | Texp_constant of constant | Texp_let of rec_flag * value_binding list * expression - | Texp_function of { arg_label : arg_label; param : Ident.t; - cases : value case list; partial : partial; } + | Texp_function of function_param list * function_body | Texp_apply of expression * (arg_label * expression option) list | Texp_match of expression * computation case list * partial | Texp_try of expression * value case list @@ -162,6 +163,31 @@ and 'k case = c_rhs: expression; } +and function_param = + { + fp_arg_label: arg_label; + fp_param: Ident.t; + fp_partial: partial; + fp_kind: function_param_kind; + fp_newtypes: string loc list; + fp_loc : Location.t; + } + +and function_param_kind = + | Tparam_pat of pattern + | Tparam_optional_default of pattern * expression + +and function_body = + | Tfunction_body of expression + | Tfunction_cases of + { cases: value case list; + partial: partial; + param: Ident.t; + loc: Location.t; + exp_extra: exp_extra option; + attributes: attributes; + } + and record_label_definition = | Kept of Types.type_expr * mutable_flag | Overridden of Longident.t loc * expression @@ -292,6 +318,7 @@ and module_binding = { mb_id: Ident.t option; mb_name: string option loc; + mb_uid: Uid.t; mb_presence: module_presence; mb_expr: module_expr; mb_attributes: attribute list; @@ -302,6 +329,7 @@ and value_binding = { vb_pat: pattern; vb_expr: expression; + vb_rec_kind: Value_rec_types.recursive_binding_kind; vb_attributes: attributes; vb_loc: Location.t; } @@ -371,6 +399,7 @@ and module_declaration = { md_id: Ident.t option; md_name: string option loc; + md_uid: Uid.t; md_presence: module_presence; md_type: module_type; md_attributes: attribute list; @@ -381,6 +410,7 @@ and module_substitution = { ms_id: Ident.t; ms_name: string loc; + ms_uid: Uid.t; ms_manifest: Path.t; ms_txt: Longident.t loc; ms_attributes: attributes; @@ -391,6 +421,7 @@ and module_type_declaration = { mtd_id: Ident.t; mtd_name: string loc; + mtd_uid: Uid.t; mtd_type: module_type option; mtd_attributes: attribute list; mtd_loc: Location.t; @@ -448,10 +479,11 @@ and core_type_desc = | Ttyp_constr of Path.t * Longident.t loc * core_type list | Ttyp_object of object_field list * closed_flag | Ttyp_class of Path.t * Longident.t loc * core_type list - | Ttyp_alias of core_type * string + | Ttyp_alias of core_type * string loc | Ttyp_variant of row_field list * closed_flag * label list option | Ttyp_poly of string list * core_type | Ttyp_package of package_type + | Ttyp_open of Path.t * Longident.t loc * core_type and package_type = { pack_path : Path.t; @@ -513,6 +545,7 @@ and label_declaration = { ld_id: Ident.t; ld_name: string loc; + ld_uid: Uid.t; ld_mutable: mutable_flag; ld_type: core_type; ld_loc: Location.t; @@ -523,6 +556,7 @@ and constructor_declaration = { cd_id: Ident.t; cd_name: string loc; + cd_uid: Uid.t; cd_vars: string loc list; cd_args: constructor_arguments; cd_res: core_type option; @@ -630,6 +664,19 @@ type implementation = { shape: Shape.t; } +type item_declaration = + | Value of value_description + | Value_binding of value_binding + | Type of type_declaration + | Constructor of constructor_declaration + | Extension_constructor of extension_constructor + | Label of label_declaration + | Module of module_declaration + | Module_substitution of module_substitution + | Module_binding of module_binding + | Module_type of module_type_declaration + | Class of class_declaration + | Class_type of class_type_declaration (* Auxiliary functions over the a.s.t. *) @@ -675,7 +722,7 @@ type pattern_action = let shallow_iter_pattern_desc : type k . pattern_action -> k pattern_desc -> unit = fun f -> function - | Tpat_alias(p, _, _) -> f.f p + | Tpat_alias(p, _, _, _) -> f.f p | Tpat_tuple patl -> List.iter f.f patl | Tpat_construct(_, _, patl, _) -> List.iter f.f patl | Tpat_variant(_, pat, _) -> Option.iter f.f pat @@ -695,8 +742,8 @@ type pattern_transformation = let shallow_map_pattern_desc : type k . pattern_transformation -> k pattern_desc -> k pattern_desc = fun f d -> match d with - | Tpat_alias (p1, id, s) -> - Tpat_alias (f.f p1, id, s) + | Tpat_alias (p1, id, s, uid) -> + Tpat_alias (f.f p1, id, s, uid) | Tpat_tuple pats -> Tpat_tuple (List.map f.f pats) | Tpat_record (lpats, closed) -> @@ -757,11 +804,11 @@ let rec iter_bound_idents : type k . _ -> k general_pattern -> _ = fun f pat -> match pat.pat_desc with - | Tpat_var (id,s) -> - f (id,s,pat.pat_type) - | Tpat_alias(p, id, s) -> + | Tpat_var (id, s, uid) -> + f (id,s,pat.pat_type, uid) + | Tpat_alias(p, id, s, uid) -> iter_bound_idents f p; - f (id,s,pat.pat_type) + f (id,s,pat.pat_type, uid) | Tpat_or(p1, _, _) -> (* Invariant : both arguments bind the same variables *) iter_bound_idents f p1 @@ -777,7 +824,7 @@ let rev_pat_bound_idents_full pat = !idents_full let rev_only_idents idents_full = - List.rev_map (fun (id,_,_) -> id) idents_full + List.rev_map (fun (id,_,_,_) -> id) idents_full let pat_bound_idents_full pat = List.rev (rev_pat_bound_idents_full pat) @@ -801,14 +848,14 @@ let alpha_var env id = List.assoc id env let rec alpha_pat : type k . _ -> k general_pattern -> k general_pattern = fun env p -> match p.pat_desc with - | Tpat_var (id, s) -> (* note the ``Not_found'' case *) + | Tpat_var (id, s, uid) -> (* note the ``Not_found'' case *) {p with pat_desc = - try Tpat_var (alpha_var env id, s) with + try Tpat_var (alpha_var env id, s, uid) with | Not_found -> Tpat_any} - | Tpat_alias (p1, id, s) -> + | Tpat_alias (p1, id, s, uid) -> let new_p : k general_pattern = alpha_pat env p1 in begin try - {p with pat_desc = Tpat_alias (new_p, alpha_var env id, s)} + {p with pat_desc = Tpat_alias (new_p, alpha_var env id, s, uid)} with | Not_found -> new_p end diff --git a/src/ocaml/typing/typedtree.mli b/src/ocaml/typing/typedtree.mli index 4f4ca2b5ae..986a47001e 100644 --- a/src/ocaml/typing/typedtree.mli +++ b/src/ocaml/typing/typedtree.mli @@ -22,6 +22,7 @@ *) open Asttypes +module Uid = Shape.Uid (* Value expressions for the core language *) @@ -77,10 +78,10 @@ and 'k pattern_desc = (* value patterns *) | Tpat_any : value pattern_desc (** _ *) - | Tpat_var : Ident.t * string loc -> value pattern_desc + | Tpat_var : Ident.t * string loc * Uid.t -> value pattern_desc (** x *) | Tpat_alias : - value general_pattern * Ident.t * string loc -> value pattern_desc + value general_pattern * Ident.t * string loc * Uid.t -> value pattern_desc (** P as a *) | Tpat_constant : constant -> value pattern_desc (** 1, 'a', "true", 1.0, 1l, 1L, 1n *) @@ -189,18 +190,17 @@ and expression_desc = (** let P1 = E1 and ... and Pn = EN in E (flag = Nonrecursive) let rec P1 = E1 and ... and Pn = EN in E (flag = Recursive) *) - | Texp_function of { arg_label : arg_label; param : Ident.t; - cases : value case list; partial : partial; } - (** [Pexp_fun] and [Pexp_function] both translate to [Texp_function]. - See {!Parsetree} for more details. - - [param] is the identifier that is to be used to name the - parameter of the function. - - partial = - [Partial] if the pattern match is partial - [Total] otherwise. - *) + | Texp_function of function_param list * function_body + (** fun P0 P1 -> function p1 -> e1 | p2 -> e2 (body = Tfunction_cases _) + fun P0 P1 -> E (body = Tfunction_body _) + + This construct has the same arity as the originating + {{!Parsetree.expression_desc.Pexp_function}[Pexp_function]}. + Arity determines when side-effects for effectful parameters are run + (e.g. optional argument defaults, matching against lazy patterns). + Parameters' effects are run left-to-right when an n-ary function is + saturated with n arguments. + *) | Texp_apply of expression * (arg_label * expression option) list (** E0 ~l1:E1 ... ~ln:En @@ -301,6 +301,54 @@ and 'k case = c_rhs: expression; } +and function_param = + { + fp_arg_label: arg_label; + fp_param: Ident.t; + (** [fp_param] is the identifier that is to be used to name the + parameter of the function. + *) + fp_partial: partial; + (** + [fp_partial] = + [Partial] if the pattern match is partial + [Total] otherwise. + *) + fp_kind: function_param_kind; + fp_newtypes: string loc list; + (** [fp_newtypes] are the new type declarations that come *after* that + parameter. The newtypes that come before the first parameter are + placed as exp_extras on the Texp_function node. This is just used in + {!Untypeast}. *) + fp_loc: Location.t; + (** [fp_loc] is the location of the entire value parameter, not including + the [fp_newtypes]. + *) + } + +and function_param_kind = + | Tparam_pat of pattern + (** [Tparam_pat p] is a non-optional argument with pattern [p]. *) + | Tparam_optional_default of pattern * expression + (** [Tparam_optional_default (p, e)] is an optional argument [p] with default + value [e], i.e. [?x:(p = e)]. If the parameter is of type [a option], the + pattern and expression are of type [a]. *) + +and function_body = + | Tfunction_body of expression + | Tfunction_cases of + { cases: value case list; + partial: partial; + param: Ident.t; + loc: Location.t; + exp_extra: exp_extra option; + attributes: attributes; + (** [attributes] is just used in untypeast. *) + } +(** The function body binds a final argument in [Tfunction_cases], + and this argument is pattern-matched against the cases. +*) + and record_label_definition = | Kept of Types.type_expr * mutable_flag | Overridden of Longident.t loc * expression @@ -438,8 +486,9 @@ and structure_item_desc = and module_binding = { - mb_id: Ident.t option; + mb_id: Ident.t option; (** [None] for [module _ = struct ... end] *) mb_name: string option loc; + mb_uid: Uid.t; mb_presence: Types.module_presence; mb_expr: module_expr; mb_attributes: attributes; @@ -450,6 +499,7 @@ and value_binding = { vb_pat: pattern; vb_expr: expression; + vb_rec_kind: Value_rec_types.recursive_binding_kind; vb_attributes: attributes; vb_loc: Location.t; } @@ -460,7 +510,19 @@ and module_coercion = (Ident.t * int * module_coercion) list | Tcoerce_functor of module_coercion * module_coercion | Tcoerce_primitive of primitive_coercion + (** External declaration coerced to a regular value. + {[ + module M : sig val ext : a -> b end = + struct external ext : a -> b = "my_c_function" end + ]} + Only occurs inside a [Tcoerce_structure] coercion. *) | Tcoerce_alias of Env.t * Path.t * module_coercion + (** Module alias coerced to a regular module. + {[ + module M : sig module Sub : T end = + struct module Sub = Some_alias end + ]} + Only occurs inside a [Tcoerce_structure] coercion. *) and module_type = { mty_desc: module_type_desc; @@ -518,6 +580,7 @@ and module_declaration = { md_id: Ident.t option; md_name: string option loc; + md_uid: Uid.t; md_presence: Types.module_presence; md_type: module_type; md_attributes: attributes; @@ -528,6 +591,7 @@ and module_substitution = { ms_id: Ident.t; ms_name: string loc; + ms_uid: Uid.t; ms_manifest: Path.t; ms_txt: Longident.t loc; ms_attributes: attributes; @@ -538,6 +602,7 @@ and module_type_declaration = { mtd_id: Ident.t; mtd_name: string loc; + mtd_uid: Uid.t; mtd_type: module_type option; mtd_attributes: attributes; mtd_loc: Location.t; @@ -596,10 +661,11 @@ and core_type_desc = | Ttyp_constr of Path.t * Longident.t loc * core_type list | Ttyp_object of object_field list * closed_flag | Ttyp_class of Path.t * Longident.t loc * core_type list - | Ttyp_alias of core_type * string + | Ttyp_alias of core_type * string loc | Ttyp_variant of row_field list * closed_flag * label list option | Ttyp_poly of string list * core_type | Ttyp_package of package_type + | Ttyp_open of Path.t * Longident.t loc * core_type and package_type = { pack_path : Path.t; @@ -662,6 +728,7 @@ and label_declaration = { ld_id: Ident.t; ld_name: string loc; + ld_uid: Uid.t; ld_mutable: mutable_flag; ld_type: core_type; ld_loc: Location.t; @@ -672,6 +739,7 @@ and constructor_declaration = { cd_id: Ident.t; cd_name: string loc; + cd_uid: Uid.t; cd_vars: string loc list; cd_args: constructor_arguments; cd_res: core_type option; @@ -788,6 +856,23 @@ type implementation = { structure. *) +type item_declaration = + | Value of value_description + | Value_binding of value_binding + | Type of type_declaration + | Constructor of constructor_declaration + | Extension_constructor of extension_constructor + | Label of label_declaration + | Module of module_declaration + | Module_substitution of module_substitution + | Module_binding of module_binding + | Module_type of module_type_declaration + | Class of class_declaration + | Class_type of class_type_declaration +(** [item_declaration] groups together items that correspond to the syntactic + category of "declarations" which include types, values, modules, etc. + declarations in signatures and their definitions in implementations. *) + (* Auxiliary functions over the a.s.t. *) (** [as_computation_pattern p] is a computation pattern with description @@ -818,7 +903,8 @@ val exists_pattern: (pattern -> bool) -> pattern -> bool val let_bound_idents: value_binding list -> Ident.t list val let_bound_idents_full: - value_binding list -> (Ident.t * string loc * Types.type_expr) list + value_binding list -> + (Ident.t * string loc * Types.type_expr * Types.Uid.t) list (** Alpha conversion of patterns *) val alpha_pat: @@ -829,7 +915,8 @@ val mkloc: 'a -> Location.t -> 'a Asttypes.loc val pat_bound_idents: 'k general_pattern -> Ident.t list val pat_bound_idents_full: - 'k general_pattern -> (Ident.t * string loc * Types.type_expr) list + 'k general_pattern -> + (Ident.t * string loc * Types.type_expr * Types.Uid.t) list (** Splits an or pattern into its value (left) and exception (right) parts. *) val split_pattern: diff --git a/src/ocaml/typing/typemod.ml b/src/ocaml/typing/typemod.ml index 201b78c0fe..9f9a1b0f63 100644 --- a/src/ocaml/typing/typemod.ml +++ b/src/ocaml/typing/typemod.ml @@ -21,6 +21,8 @@ open Parsetree open Types open Format +module Style = Misc.Style + let () = Includemod_errorprinter.register () module Sig_component_kind = Shape.Sig_component_kind @@ -143,7 +145,7 @@ let initial_env ~loc ~initially_opened_module env in let units = - List.map Env.persistent_structures_of_dir (Load_path.get ()) + List.map Env.persistent_structures_of_dir (Load_path.get_visible ()) in let env, units = match initially_opened_module with @@ -506,7 +508,7 @@ let merge_constraint initial_env loc sg lid constr = type_params = List.map (fun _ -> Btype.newgenvar()) sdecl.ptype_params; type_arity = arity; - type_kind = Type_abstract; + type_kind = Type_abstract Definition; type_private = Private; type_manifest = None; type_variance = @@ -1046,7 +1048,7 @@ end = struct let open Sig_component_kind in match component with | Value -> names.values - | Type -> names.types + | Type | Label | Constructor -> names.types | Module -> names.modules | Module_type -> names.modtypes | Extension_constructor -> names.typexts @@ -1243,8 +1245,7 @@ end let has_remove_aliases_attribute attr = let remove_aliases = - Attr_helper.get_no_payload_attribute - ["remove_aliases"; "ocaml.remove_aliases"] attr + Attr_helper.get_no_payload_attribute "remove_aliases" attr in match remove_aliases with | None -> false @@ -1369,7 +1370,7 @@ and transl_with ~loc env remove_aliases (rev_tcstrs,sg) constr = -and transl_signature ?(keep_warnings = false) env sg = +and transl_signature ?(keep_warnings = false) ?(toplevel = false) env sg = let names = Signature_names.create () in let rec transl_sig env sg = match sg with @@ -1383,7 +1384,6 @@ and transl_signature ?(keep_warnings = false) env sg = Typedecl.transl_value_decl env item.psig_loc sdesc in Signature_names.check_value names tdesc.val_loc tdesc.val_id; - Env.register_uid tdesc.val_val.val_uid tdesc.val_loc; res with | (tdesc, newenv) -> @@ -1397,17 +1397,15 @@ and transl_signature ?(keep_warnings = false) env sg = end | Psig_type (rec_flag, sdecls) -> begin match - let (decls, _) as res = + let (decls, _, _) as res = Typedecl.transl_type_decl env rec_flag sdecls in List.iter (fun td -> Signature_names.check_type names td.typ_loc td.typ_id; - if not (Btype.is_row_name (Ident.name td.typ_id)) then - Env.register_uid td.typ_type.type_uid td.typ_loc ) decls; res with - | (decls, newenv) -> + | (decls, newenv, _) -> let newenv = Env.update_short_paths newenv in let (trem, rem, final_env) = transl_sig newenv srem in let sg = @@ -1432,7 +1430,7 @@ and transl_signature ?(keep_warnings = false) env sg = once we have nice error messages there. *) raise (Error (td.ptype_loc, env, Invalid_type_subst_rhs)) ) sdecls; - let (decls, _) as res = + let (decls, _, _) as res = Typedecl.transl_type_decl env Nonrecursive sdecls in List.iter (fun td -> @@ -1448,12 +1446,11 @@ and transl_signature ?(keep_warnings = false) env sg = in Some (`Substituted_away subst) in - Signature_names.check_type ?info names td.typ_loc td.typ_id; - Env.register_uid td.typ_type.type_uid td.typ_loc + Signature_names.check_type ?info names td.typ_loc td.typ_id ) decls; res with - | (decls, newenv) -> + | (decls, newenv, _) -> let (trem, rem, final_env) = transl_sig newenv srem in let sg = rem in @@ -1466,17 +1463,16 @@ and transl_signature ?(keep_warnings = false) env sg = end | Psig_typext styext -> begin match - let (tyext, _) as res = + let (tyext, _, _) as res = Typedecl.transl_type_extension false env item.psig_loc styext in let constructors = tyext.tyext_constructors in List.iter (fun ext -> - Signature_names.check_typext names ext.ext_loc ext.ext_id; - Env.register_uid ext.ext_type.ext_uid ext.ext_loc + Signature_names.check_typext names ext.ext_loc ext.ext_id ) constructors; res, constructors with - | (tyext, newenv), constructors -> + | (tyext, newenv, _shapes), constructors -> let (trem, rem, final_env) = transl_sig newenv srem in mksig (Tsig_typext tyext) env loc :: trem, map_ext (fun es ext -> @@ -1489,16 +1485,13 @@ and transl_signature ?(keep_warnings = false) env sg = end | Psig_exception sext -> begin match - let (ext, _) as res = Typedecl.transl_type_exception env sext in + let (ext, _, _) as res = Typedecl.transl_type_exception env sext in let constructor = ext.tyexn_constructor in Signature_names.check_typext names constructor.ext_loc constructor.ext_id; - Env.register_uid - constructor.ext_type.ext_uid - constructor.ext_loc; res, constructor with - | (ext, newenv), constructor -> + | (ext, newenv, _shape), constructor -> let (trem, rem, final_env) = transl_sig newenv srem in mksig (Tsig_exception ext) env loc :: trem, Sig_typext(constructor.ext_id, @@ -1522,30 +1515,29 @@ and transl_signature ?(keep_warnings = false) env sg = | Mty_alias _ -> Mp_absent | _ -> Mp_present in + let md = { + md_type=tmty.mty_type; + md_attributes=pmd.pmd_attributes; + md_loc=pmd.pmd_loc; + md_uid = Uid.mk ~current_unit:(Env.get_unit_name ()); + } + in match pmd.pmd_name.txt with - | None -> None, pres, env, None, tmty + | None -> None, pres, env, None, tmty, md | Some name -> - let md = { - md_type=tmty.mty_type; - md_attributes=pmd.pmd_attributes; - md_loc=pmd.pmd_loc; - md_uid = Uid.mk ~current_unit:(Env.get_unit_name ()); - } - in let id, newenv = Env.enter_module_declaration ~scope name pres md env in let newenv = Env.update_short_paths newenv in Signature_names.check_module names pmd.pmd_name.loc id; - Env.register_uid md.md_uid md.md_loc; let sig_item = Sig_module(id, pres, md, Trec_not, Exported) in - Some id, pres, newenv, Some sig_item, tmty + Some id, pres, newenv, Some sig_item, tmty, md with - | (id, pres, newenv, sig_item, tmty) -> + | (id, pres, newenv, sig_item, tmty, md) -> let (trem, rem, final_env) = transl_sig newenv srem in mksig (Tsig_module {md_id=id; md_name=pmd.pmd_name; - md_presence=pres; md_type=tmty; - md_loc=pmd.pmd_loc; + md_uid=md.md_uid; md_presence=pres; + md_type=tmty; md_loc=pmd.pmd_loc; md_attributes=pmd.pmd_attributes}) env loc :: trem, (match sig_item with None -> rem | Some i -> i :: rem), @@ -1584,10 +1576,9 @@ and transl_signature ?(keep_warnings = false) env sg = `Substituted_away (Subst.add_module id path Subst.identity) in Signature_names.check_module ~info names pms.pms_name.loc id; - Env.register_uid md.md_uid md.md_loc; (newenv, Tsig_modsubst {ms_id=id; ms_name=pms.pms_name; - ms_manifest=path; ms_txt=pms.pms_manifest; - ms_loc=pms.pms_loc; + ms_uid=md.md_uid; ms_manifest=path; + ms_txt=pms.pms_manifest; ms_loc=pms.pms_loc; ms_attributes=pms.pms_attributes}) with | newenv, sig_item -> @@ -1608,9 +1599,8 @@ and transl_signature ?(keep_warnings = false) env sg = | Some id -> Some (id, md, uid) ) tdecls in - List.iter (fun (id, md, uid) -> + List.iter (fun (id, md, _uid) -> Signature_names.check_module names md.md_loc id; - Env.register_uid uid md.md_loc ) decls; (tdecls, decls, newenv) with @@ -1635,7 +1625,6 @@ and transl_signature ?(keep_warnings = false) env sg = begin match transl_modtype_decl env pmtd with | newenv, mtd, decl -> Signature_names.check_modtype names pmtd.pmtd_loc mtd.mtd_id; - Env.register_uid decl.mtd_uid mtd.mtd_loc; let (trem, rem, final_env) = transl_sig newenv srem in mksig (Tsig_modtype mtd) env loc :: trem, Sig_modtype (mtd.mtd_id, decl, Exported) :: rem, @@ -1646,7 +1635,7 @@ and transl_signature ?(keep_warnings = false) env sg = end | Psig_modtypesubst pmtd -> begin match transl_modtype_decl env pmtd with - | newenv, mtd, decl -> + | newenv, mtd, _decl -> let info = let mty = match mtd.mtd_type with | Some tmty -> tmty.mty_type @@ -1660,7 +1649,6 @@ and transl_signature ?(keep_warnings = false) env sg = | _ -> `Unpackable_modtype_substituted_away (mtd.mtd_id,subst) in Signature_names.check_modtype ~info names pmtd.pmtd_loc mtd.mtd_id; - Env.register_uid decl.mtd_uid mtd.mtd_loc; let (trem, rem, final_env) = transl_sig newenv srem in mksig (Tsig_modtypesubst mtd) env loc :: trem, rem, @@ -1720,7 +1708,6 @@ and transl_signature ?(keep_warnings = false) env sg = Signature_names.check_type names loc cls.cls_obj_id; Signature_names.check_class names loc cls.cls_id; Signature_names.check_class_type names loc cls.cls_ty_id; - Env.register_uid cls.cls_decl.cty_uid cls.cls_decl.cty_loc; ) classes; res with @@ -1755,9 +1742,6 @@ and transl_signature ?(keep_warnings = false) env sg = let loc = decl.clsty_id_loc.Location.loc in Signature_names.check_class_type names loc decl.clsty_ty_id; Signature_names.check_type names loc decl.clsty_obj_id; - Env.register_uid - decl.clsty_ty_decl.clty_uid - decl.clsty_ty_decl.clty_loc; ) classes; res with @@ -1787,6 +1771,8 @@ and transl_signature ?(keep_warnings = false) env sg = end | Psig_attribute x -> Builtin_attributes.warning_attribute x; + if toplevel || not (Warnings.is_active (Misplaced_attribute "")) + then Builtin_attributes.mark_alert_used x; let (trem,rem, final_env) = transl_sig env srem in mksig (Tsig_attribute x) env loc :: trem, rem, final_env | Psig_extension (ext, _attrs) -> @@ -1825,6 +1811,7 @@ and transl_modtype_decl_aux env { mtd_id=id; mtd_name=pmtd_name; + mtd_uid=decl.mtd_uid; mtd_type=tmty; mtd_attributes=pmtd_attributes; mtd_loc=pmtd_loc; @@ -1907,11 +1894,11 @@ and transl_recmodule_modtypes env sdecls = List.map2 (fun pmd (id_shape, id_loc, md, mty) -> let tmd = {md_id=Option.map fst id_shape; md_name=id_loc; md_type=mty; - md_presence=Mp_present; + md_uid=md.Types.md_uid; md_presence=Mp_present; md_loc=pmd.pmd_loc; md_attributes=pmd.pmd_attributes} in - tmd, md.md_uid, Option.map snd id_shape + tmd, md.Types.md_uid, Option.map snd id_shape ) sdecls dcl2 in (dcl2, env2) @@ -2120,6 +2107,7 @@ let check_recmodule_inclusion env bindings = { mb_id = id; mb_name = name; + mb_uid = uid; mb_presence = Mp_present; mb_expr = modl'; mb_attributes = attrs; @@ -2290,6 +2278,7 @@ and type_module_aux ~alias sttn funct_body anchor env smod = let shape = Env.shape_of_path ~namespace:Shape.Sig_component_kind.Module env path in + let shape = if alias && aliasable then Shape.alias shape else shape in let md = if alias && aliasable then (Env.add_required_global (Path.head path); md) @@ -2475,10 +2464,11 @@ and type_application loc strengthen funct_body env smod = let strengthen = strengthen && List.for_all has_path args in type_module strengthen funct_body None env sfunct in - List.fold_left (type_one_application ~ctx:(loc, funct, args) funct_body env) + List.fold_left + (type_one_application ~ctx:(loc, sfunct, funct, args) funct_body env) (funct, funct_shape) args -and type_one_application ~ctx:(apply_loc,md_f,args) +and type_one_application ~ctx:(apply_loc,sfunct,md_f,args) funct_body env (funct, funct_shape) app_view = match Env.scrape_alias env funct.mod_type with | Mty_functor (Unit, mty_res) -> @@ -2509,8 +2499,11 @@ and type_one_application ~ctx:(apply_loc,md_f,args) let apply_error () = let args = List.map simplify_app_summary args in let mty_f = md_f.mod_type in - let lid_app = None in - Includemod.Apply_error {loc=apply_loc;env;lid_app;mty_f;args} + let app_name = match sfunct.pmod_desc with + | Pmod_ident l -> Includemod.Named_leftmost_functor l.txt + | _ -> Includemod.Anonymous_functor + in + Includemod.Apply_error {loc=apply_loc;env;app_name;mty_f;args} in begin match app_view with | { arg = None; loc = app_loc; attributes = app_attributes; _ } -> @@ -2586,11 +2579,14 @@ and type_one_application ~ctx:(apply_loc,md_f,args) end | Mty_alias path -> raise(Error(app_view.f_loc, env, Cannot_scrape_alias path)) - | _ -> + | Mty_ident _ | Mty_signature _ | Mty_for_hole -> let args = List.map simplify_app_summary args in let mty_f = md_f.mod_type in - let lid_app = None in - raise(Includemod.Apply_error {loc=apply_loc;env;lid_app;mty_f;args}) + let app_name = match sfunct.pmod_desc with + | Pmod_ident l -> Includemod.Named_leftmost_functor l.txt + | _ -> Includemod.Anonymous_functor + in + raise(Includemod.Apply_error {loc=apply_loc;env;app_name;mty_f;args}) and type_open_decl ?used_slot ?toplevel funct_body names env sod = Builtin_attributes.warning_scope sod.popen_attributes @@ -2670,17 +2666,17 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho | Pstr_value(rec_flag, sdefs) -> let (defs, newenv) = Typecore.type_binding env rec_flag sdefs in - let () = if rec_flag = Recursive then - Typecore.check_recursive_bindings env defs + let defs = match rec_flag with + | Recursive -> Typecore.annotate_recursive_bindings env defs + | Nonrecursive -> defs in (* Note: Env.find_value does not trigger the value_used event. Values will be marked as being used during the signature inclusion test. *) let items, shape_map = List.fold_left - (fun (acc, shape_map) (id, { Asttypes.loc; _ }, _typ)-> + (fun (acc, shape_map) (id, { Asttypes.loc; _ }, _typ, _uid)-> Signature_names.check_value names loc id; let vd = Env.find_value (Pident id) newenv in - Env.register_uid vd.val_uid vd.val_loc; Sig_value(id, vd, Exported) :: acc, Shape.Map.add_value shape_map id vd.val_uid ) @@ -2694,13 +2690,14 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho | Pstr_primitive sdesc -> let (desc, newenv) = Typedecl.transl_value_decl env loc sdesc in Signature_names.check_value names desc.val_loc desc.val_id; - Env.register_uid desc.val_val.val_uid desc.val_val.val_loc; Tstr_primitive desc, [Sig_value(desc.val_id, desc.val_val, Exported)], Shape.Map.add_value shape_map desc.val_id desc.val_val.val_uid, newenv | Pstr_type (rec_flag, sdecls) -> - let (decls, newenv) = Typedecl.transl_type_decl env rec_flag sdecls in + let (decls, newenv, shapes) = + Typedecl.transl_type_decl env rec_flag sdecls + in let newenv = Env.update_short_paths newenv in List.iter Signature_names.(fun td -> check_type names td.typ_loc td.typ_id) @@ -2709,32 +2706,26 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho (fun rs info -> Sig_type(info.typ_id, info.typ_type, rs, Exported)) decls [] in - let shape_map = List.fold_left - (fun shape_map -> function - | Sig_type (id, vd, _, _) -> - if not (Btype.is_row_name (Ident.name id)) then begin - Env.register_uid vd.type_uid vd.type_loc; - Shape.Map.add_type shape_map id vd.type_uid - end else shape_map - | _ -> assert false - ) + let shape_map = List.fold_left2 + (fun map { typ_id; _} shape -> + Shape.Map.add_type map typ_id shape) shape_map - items + decls + shapes in Tstr_type (rec_flag, decls), items, shape_map, enrich_type_decls anchor decls env newenv | Pstr_typext styext -> - let (tyext, newenv) = + let (tyext, newenv, shapes) = Typedecl.transl_type_extension true env loc styext in let constructors = tyext.tyext_constructors in - let shape_map = List.fold_left (fun shape_map ext -> + let shape_map = List.fold_left2 (fun shape_map ext shape -> Signature_names.check_typext names ext.ext_loc ext.ext_id; - Env.register_uid ext.ext_type.ext_uid ext.ext_loc; - Shape.Map.add_extcons shape_map ext.ext_id ext.ext_type.ext_uid - ) shape_map constructors + Shape.Map.add_extcons shape_map ext.ext_id shape + ) shape_map constructors shapes in (Tstr_typext tyext, map_ext @@ -2743,13 +2734,10 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho shape_map, newenv) | Pstr_exception sext -> - let (ext, newenv) = Typedecl.transl_type_exception env sext in + let (ext, newenv, shape) = Typedecl.transl_type_exception env sext in let constructor = ext.tyexn_constructor in Signature_names.check_typext names constructor.ext_loc constructor.ext_id; - Env.register_uid - constructor.ext_type.ext_uid - constructor.ext_loc; Tstr_exception ext, [Sig_typext(constructor.ext_id, constructor.ext_type, @@ -2757,7 +2745,7 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho Exported)], Shape.Map.add_extcons shape_map constructor.ext_id - constructor.ext_type.ext_uid, + shape, newenv | Pstr_module {pmb_name = name; pmb_expr = smodl; pmb_attributes = attrs; pmb_loc; @@ -2785,7 +2773,6 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho } in let md_shape = Shape.set_uid_if_none md_shape md_uid in - Env.register_uid md_uid pmb_loc; (*prerr_endline (Ident.unique_toplevel_name id);*) Mtype.lower_nongen outer_scope md.md_type; let id, newenv, sg = @@ -2809,8 +2796,9 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho | Some id -> Shape.Map.add_module shape_map id md_shape | None -> shape_map in - Tstr_module {mb_id=id; mb_name=name; mb_expr=modl; - mb_presence=pres; mb_attributes=attrs; mb_loc=pmb_loc; }, + Tstr_module {mb_id=id; mb_name=name; mb_uid = md.md_uid; + mb_expr=modl; mb_presence=pres; mb_attributes=attrs; + mb_loc=pmb_loc; }, sg, shape_map, newenv @@ -2885,8 +2873,7 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho ) bindings2 in let shape_map = - List.fold_left (fun map (id, mb, uid, shape) -> - Env.register_uid uid mb.mb_loc; + List.fold_left (fun map (id, _mb, _uid, shape) -> Shape.Map.add_module map id shape ) shape_map mbs in @@ -2906,7 +2893,6 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho let newenv, mtd, decl = transl_modtype_decl env pmtd in let newenv = Env.update_short_paths newenv in Signature_names.check_modtype names pmtd.pmtd_loc mtd.mtd_id; - Env.register_uid decl.mtd_uid decl.mtd_loc; let id = mtd.mtd_id in let map = Shape.Map.add_module_type shape_map id decl.mtd_uid in Tstr_modtype mtd, [Sig_modtype (id, decl, Exported)], map, newenv @@ -2925,11 +2911,11 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho Signature_names.check_class names loc cls.cls_id; Signature_names.check_class_type names loc cls.cls_ty_id; Signature_names.check_type names loc cls.cls_obj_id; - Env.register_uid cls.cls_decl.cty_uid loc; - let map f id acc = f acc id cls.cls_decl.cty_uid in - map Shape.Map.add_class cls.cls_id acc - |> map Shape.Map.add_class_type cls.cls_ty_id - |> map Shape.Map.add_type cls.cls_obj_id + let uid = cls.cls_decl.cty_uid in + let map f id v acc = f acc id v in + map Shape.Map.add_class cls.cls_id uid acc + |> map Shape.Map.add_class_type cls.cls_ty_id uid + |> map Shape.Map.add_type cls.cls_obj_id (Shape.leaf uid) ) shape_map classes in Tstr_class @@ -2955,10 +2941,10 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho let loc = decl.clsty_id_loc.Location.loc in Signature_names.check_class_type names loc decl.clsty_ty_id; Signature_names.check_type names loc decl.clsty_obj_id; - Env.register_uid decl.clsty_ty_decl.clty_uid loc; - let map f id acc = f acc id decl.clsty_ty_decl.clty_uid in - map Shape.Map.add_class_type decl.clsty_ty_id acc - |> map Shape.Map.add_type decl.clsty_obj_id + let uid = decl.clsty_ty_decl.clty_uid in + let map f id v acc = f acc id v in + map Shape.Map.add_class_type decl.clsty_ty_id uid acc + |> map Shape.Map.add_type decl.clsty_obj_id (Shape.leaf uid) ) shape_map classes in Tstr_class_type @@ -3003,6 +2989,8 @@ and type_structure ?(toplevel = false) ?(keep_warnings = false) funct_body ancho raise (Error_forward (Builtin_attributes.error_of_extension ext)) | Pstr_attribute x -> Builtin_attributes.warning_attribute x; + if toplevel || not (Warnings.is_active (Misplaced_attribute "")) then + Builtin_attributes.mark_alert_used x; Tstr_attribute x, [], shape_map, env in let rec type_struct env shape_map sstr = @@ -3050,7 +3038,7 @@ let merlin_type_structure env str = str, sg, env let type_structure = type_structure false None let merlin_transl_signature env sg = transl_signature ~keep_warnings:true env sg -let transl_signature env sg = transl_signature env sg +let transl_signature ~toplevel env sg = transl_signature ~toplevel env sg (* Normalize types in a signature *) @@ -3207,6 +3195,7 @@ let () = Typetexp.transl_modtype_longident := transl_modtype_longident; Typetexp.transl_modtype := transl_modtype; Typecore.type_open := type_open_ ?toplevel:None; + Typetexp.type_open := type_open_ ?toplevel:None; Typecore.type_open_decl := type_open_decl; Typecore.type_package := type_package; Typeclass.type_open_descr := type_open_descr; @@ -3214,8 +3203,22 @@ let () = (* Typecheck an implementation file *) +(* +let gen_annot target annots = + let annot = Unit_info.annot target in + Cmt2annot.gen_annot (Some (Unit_info.Artifact.filename annot)) + ~sourcefile:(Unit_info.Artifact.source_file annot) + ~use_summaries:false + annots +*) -let type_implementation sourcefile outputprefix modulename initial_env ast = +let type_implementation target initial_env ast = + let sourcefile = Unit_info.source_file target in + let save_cmt target annots initial_env cmi shape = + Cmt_format.save_cmt (Unit_info.cmt target) + annots initial_env cmi shape; + (* gen_annot target annots; *) + in Cmt_format.clear (); Misc.try_finally (fun () -> Typecore.reset_delayed_checks (); @@ -3225,56 +3228,57 @@ let type_implementation sourcefile outputprefix modulename initial_env ast = let (str, sg, names, shape, finalenv) = type_structure initial_env ast in let shape = - Shape.set_uid_if_none shape - (Uid.of_compilation_unit_id (Ident.create_persistent modulename)) + let id = Ident.create_persistent @@ Unit_info.modname target in + Shape.set_uid_if_none shape (Uid.of_compilation_unit_id id) in let simple_sg = Signature_names.simplify finalenv names sg in if !Clflags.print_types then begin Typecore.force_delayed_checks (); - let shape = Shape.local_reduce shape in + let shape = Shape_reduce.local_reduce Env.empty shape in Printtyp.wrap_printing_env ~error:false initial_env (fun () -> fprintf std_formatter "%a@." - (Printtyp.printed_signature sourcefile) simple_sg + (Printtyp.printed_signature @@ Unit_info.source_file target) + simple_sg ); + (* gen_annot target (Cmt_format.Implementation str); *) { structure = str; coercion = Tcoerce_none; shape; signature = simple_sg } (* result is ignored by Compile.implementation *) end else begin - let sourceintf = - Filename.remove_extension sourcefile ^ !Config.interface_suffix in - if !Clflags.cmi_file <> None || Sys.file_exists sourceintf then begin - let intf_file = + let source_intf = Unit_info.mli_from_source target in + if !Clflags.cmi_file <> None + || Sys.file_exists source_intf then begin + let compiled_intf_file = match !Clflags.cmi_file with + | Some cmi_file -> Unit_info.Artifact.from_filename cmi_file | None -> - (try - Load_path.find_uncap (modulename ^ ".cmi") - with Not_found -> - raise(Error(Location.in_file sourcefile, Env.empty, - Interface_not_compiled sourceintf))) - | Some cmi_file -> cmi_file + try Unit_info.find_normalized_cmi target with Not_found -> + raise(Error(Location.in_file sourcefile, Env.empty, + Interface_not_compiled source_intf)) in - let dclsig = Env.read_signature modulename intf_file in + let dclsig = Env.read_signature compiled_intf_file in let coercion, shape = Includemod.compunit initial_env ~mark:Mark_positive - sourcefile sg intf_file dclsig shape + sourcefile sg source_intf + dclsig shape in Typecore.force_delayed_checks (); (* It is important to run these checks after the inclusion test above, so that value declarations which are not used internally but exported are not reported as being unused. *) - let shape = Shape.local_reduce shape in + let shape = Shape_reduce.local_reduce Env.empty shape in let annots = Cmt_format.Implementation str in - Cmt_format.save_cmt (outputprefix ^ ".cmt") modulename - annots (Some sourcefile) initial_env None (Some shape); + save_cmt target annots initial_env None (Some shape); { structure = str; coercion; shape; signature = dclsig } end else begin - Location.prerr_warning (Location.in_file sourcefile) + Location.prerr_warning + (Location.in_file (Unit_info.source_file target)) Warnings.Missing_mli; let coercion, shape = Includemod.compunit initial_env ~mark:Mark_positive @@ -3287,16 +3291,14 @@ let type_implementation sourcefile outputprefix modulename initial_env ast = the values being exported. We can still capture unused declarations like "let x = true;; let x = 1;;", because in this case, the inferred signature contains only the last declaration. *) - let shape = Shape.local_reduce shape in + let shape = Shape_reduce.local_reduce Env.empty shape in if not !Clflags.dont_write_files then begin let alerts = Builtin_attributes.alerts_of_str ast in let cmi = - Env.save_signature ~alerts - simple_sg modulename (outputprefix ^ ".cmi") + Env.save_signature ~alerts simple_sg (Unit_info.cmi target) in let annots = Cmt_format.Implementation str in - Cmt_format.save_cmt (outputprefix ^ ".cmt") modulename - annots (Some sourcefile) initial_env (Some cmi) (Some shape); + save_cmt target annots initial_env (Some cmi) (Some shape) end; { structure = str; coercion; @@ -3311,16 +3313,18 @@ let type_implementation sourcefile outputprefix modulename initial_env ast = Cmt_format.Partial_implementation (Array.of_list (Cmt_format.get_saved_types ())) in - Cmt_format.save_cmt (outputprefix ^ ".cmt") modulename - annots (Some sourcefile) initial_env None None; + save_cmt target annots initial_env None None ) -let save_signature modname tsg outputprefix source_file initial_env cmi = - Cmt_format.save_cmt (outputprefix ^ ".cmti") modname - (Cmt_format.Interface tsg) (Some source_file) initial_env (Some cmi) None +let save_signature target tsg initial_env cmi = + Cmt_format.save_cmt (Unit_info.cmti target) + (Cmt_format.Interface tsg) initial_env (Some cmi) None let type_interface env ast = - transl_signature env ast + transl_signature ~toplevel:true env ast + +let transl_signature env ast = + transl_signature ~toplevel:false env ast (* "Packaging" of several compilation units into one unit having them as sub-modules. *) @@ -3355,25 +3359,24 @@ let package_signatures units = Sig_module(newid, Mp_present, md, Trec_not, Exported)) units_with_ids -let package_units initial_env objfiles cmifile modulename = +let package_units initial_env objfiles target_cmi = (* Read the signatures of the units *) let units = List.map (fun f -> - let pref = chop_extensions f in - let modname = String.capitalize_ascii(Filename.basename pref) in - let sg = Env.read_signature modname (pref ^ ".cmi") in - if Filename.check_suffix f ".cmi" && + let artifact = Unit_info.Artifact.from_filename f in + let sg = Env.read_signature (Unit_info.companion_cmi artifact) in + if Unit_info.is_cmi artifact && not(Mtype.no_code_needed_sig Env.initial sg) then raise(Error(Location.none, Env.empty, Implementation_is_required f)); - (modname, Env.read_signature modname (pref ^ ".cmi"))) + Unit_info.Artifact.modname artifact, sg) objfiles in (* Compute signature of packaged unit *) Ident.reinit(); let sg = package_signatures units in (* Compute the shape of the package *) - let prefix = Filename.remove_extension cmifile in + let prefix = Unit_info.Artifact.prefix target_cmi in let pack_uid = Uid.of_compilation_unit_id (Ident.create_persistent prefix) in let shape = List.fold_left (fun map (name, _sg) -> @@ -3383,19 +3386,20 @@ let package_units initial_env objfiles cmifile modulename = |> Shape.str ~uid:pack_uid in (* See if explicit interface is provided *) - let mlifile = prefix ^ !Config.interface_suffix in - if Sys.file_exists mlifile then begin - if not (Sys.file_exists cmifile) then begin - raise(Error(Location.in_file mlifile, Env.empty, - Interface_not_compiled mlifile)) + let mli = Unit_info.mli_from_artifact target_cmi in + if Sys.file_exists mli then begin + if not (Sys.file_exists @@ Unit_info.Artifact.filename target_cmi) then + begin + raise(Error(Location.in_file mli, Env.empty, + Interface_not_compiled mli)) end; - let dclsig = Env.read_signature modulename cmifile in + let dclsig = Env.read_signature target_cmi in let cc, _shape = Includemod.compunit initial_env ~mark:Mark_both - "(obtained by packing)" sg mlifile dclsig shape + "(obtained by packing)" sg mli dclsig shape in - Cmt_format.save_cmt (prefix ^ ".cmt") modulename - (Cmt_format.Packed (sg, objfiles)) None initial_env None (Some shape); + Cmt_format.save_cmt (Unit_info.companion_cmt target_cmi) + (Cmt_format.Packed (sg, objfiles)) initial_env None (Some shape); cc end else begin (* Determine imports *) @@ -3408,11 +3412,10 @@ let package_units initial_env objfiles cmifile modulename = if not !Clflags.dont_write_files then begin let cmi = Env.save_signature_with_imports ~alerts:Misc.String.Map.empty - sg modulename - (prefix ^ ".cmi") imports + sg target_cmi imports in - Cmt_format.save_cmt (prefix ^ ".cmt") modulename - (Cmt_format.Packed (cmi.Cmi_format.cmi_sign, objfiles)) None initial_env + Cmt_format.save_cmt (Unit_info.companion_cmt target_cmi) + (Cmt_format.Packed (cmi.Cmi_format.cmi_sign, objfiles)) initial_env (Some cmi) (Some shape); end; Tcoerce_none @@ -3427,7 +3430,8 @@ open Printtyp let report_error ~loc _env = function Cannot_apply mty -> Location.errorf ~loc - "@[This module is not a functor; it has type@ %a@]" modtype mty + "@[This module is not a functor; it has type@ %a@]" + (Style.as_inline_code modtype) mty | Not_included errs -> let main = Includemod_errorprinter.err_msgs errs in Location.errorf ~loc "@[Signature mismatch:@ %t@]" main @@ -3435,53 +3439,72 @@ let report_error ~loc _env = function Location.errorf ~loc "@[This functor has type@ %a@ \ The parameter cannot be eliminated in the result type.@ \ - Please bind the argument to a module identifier.@]" modtype mty + Please bind the argument to a module identifier.@]" + (Style.as_inline_code modtype) mty | Signature_expected -> Location.errorf ~loc "This module type is not a signature" | Structure_expected mty -> Location.errorf ~loc - "@[This module is not a structure; it has type@ %a" modtype mty + "@[This module is not a structure; it has type@ %a" + (Style.as_inline_code modtype) mty | With_no_component lid -> Location.errorf ~loc - "@[The signature constrained by `with' has no component named %a@]" - longident lid + "@[The signature constrained by %a has no component named %a@]" + Style.inline_code "with" + (Style.as_inline_code longident) lid | With_mismatch(lid, explanation) -> let main = Includemod_errorprinter.err_msgs explanation in Location.errorf ~loc "@[\ - @[In this `with' constraint, the new definition of %a@ \ + @[In this %a constraint, the new definition of %a@ \ does not match its original definition@ \ in the constrained signature:@]@ \ - %t@]" - longident lid main + %t@]" + Style.inline_code "with" + (Style.as_inline_code longident) lid main | With_makes_applicative_functor_ill_typed(lid, path, explanation) -> let main = Includemod_errorprinter.err_msgs explanation in Location.errorf ~loc "@[\ - @[This `with' constraint on %a makes the applicative functor @ \ - type %s ill-typed in the constrained signature:@]@ \ - %t@]" - longident lid (Path.name path) main + @[This %a constraint on %a makes the applicative functor @ \ + type %a ill-typed in the constrained signature:@]@ \ + %t@]" + Style.inline_code "with" + (Style.as_inline_code longident) lid + Style.inline_code (Path.name path) + main | With_changes_module_alias(lid, id, path) -> Location.errorf ~loc "@[\ - @[This `with' constraint on %a changes %s, which is aliased @ \ - in the constrained signature (as %s)@].@]" - longident lid (Path.name path) (Ident.name id) + @[This %a constraint on %a changes %a, which is aliased @ \ + in the constrained signature (as %a)@].@]" + Style.inline_code "with" + (Style.as_inline_code longident) lid + Style.inline_code (Path.name path) + Style.inline_code (Ident.name id) | With_cannot_remove_constrained_type -> Location.errorf ~loc "@[Destructive substitutions are not supported for constrained @ \ types (other than when replacing a type constructor with @ \ a type constructor with the same arguments).@]" | With_cannot_remove_packed_modtype (p,mty) -> + let[@manual.ref "ss:module-type-substitution"] manual_ref = + [ 12; 7; 3 ] + in + let pp_constraint ppf () = + Format.fprintf ppf "%s := %a" + (Path.name p) Printtyp.modtype mty + in Location.errorf ~loc - "This `with' constraint@ %s := %a@ makes a packed module ill-formed." - (Path.name p) Printtyp.modtype mty + "This %a constraint@ %a@ makes a packed module ill-formed.@ %a" + Style.inline_code "with" + (Style.as_inline_code pp_constraint) () + Misc.print_see_manual manual_ref | Repeated_name(kind, name) -> Location.errorf ~loc - "@[Multiple definition of the %s name %s.@ \ + "@[Multiple definition of the %s name %a.@ \ Names must be unique in a given structure or signature.@]" - (Sig_component_kind.to_string kind) name + (Sig_component_kind.to_string kind) Style.inline_code name | Non_generalizable { vars; expression } -> let[@manual.ref "ss:valuerestriction"] manual_ref = [ 6; 1; 2 ] in prepare_for_printing vars; @@ -3489,9 +3512,9 @@ let report_error ~loc _env = function Location.errorf ~loc "@[The type of this expression,@ %a,@ \ contains the non-generalizable type variable(s): %a.@ %a@]" - prepared_type_scheme expression + (Style.as_inline_code prepared_type_scheme) expression (pp_print_list ~pp_sep:(fun f () -> fprintf f ",@ ") - prepared_type_scheme) vars + (Style.as_inline_code prepared_type_scheme)) vars Misc.print_see_manual manual_ref | Non_generalizable_module { vars; mty; item } -> let[@manual.ref "ss:valuerestriction"] manual_ref = [ 6; 1; 2 ] in @@ -3501,10 +3524,10 @@ let report_error ~loc _env = function [ Location.msg ~loc:item.val_loc "The type of this value,@ %a,@ \ contains the non-generalizable type variable(s) %a." - prepared_type_scheme + (Style.as_inline_code prepared_type_scheme) item.val_type (pp_print_list ~pp_sep:(fun f () -> fprintf f ",@ ") - prepared_type_scheme) vars + @@ Style.as_inline_code prepared_type_scheme) vars ] in Location.errorf ~loc ~sub @@ -3528,28 +3551,31 @@ let report_error ~loc _env = function | Not_a_packed_module ty -> Location.errorf ~loc "This expression is not a packed module. It has type@ %a" - type_expr ty + (Style.as_inline_code type_expr) ty | Incomplete_packed_module ty -> Location.errorf ~loc "The type of this packed module contains variables:@ %a" - type_expr ty + (Style.as_inline_code type_expr) ty | Scoping_pack (lid, ty) -> Location.errorf ~loc "The type %a in this module cannot be exported.@ \ - Its type contains local dependencies:@ %a" longident lid type_expr ty + Its type contains local dependencies:@ %a" + (Style.as_inline_code longident) lid + (Style.as_inline_code type_expr) ty | Recursive_module_require_explicit_type -> Location.errorf ~loc "Recursive modules require an explicit module type." | Apply_generative -> Location.errorf ~loc - "This is a generative functor. It can only be applied to ()" + "This is a generative functor. It can only be applied to %a" + Style.inline_code "()" | Cannot_scrape_alias p -> Location.errorf ~loc "This is an alias for module %a, which is missing" - path p + (Style.as_inline_code path) p | Cannot_scrape_package_type p -> Location.errorf ~loc "The type of this packed module refers to %a, which is missing" - path p + (Style.as_inline_code path) p | Badly_formed_signature (context, err) -> Location.errorf ~loc "@[In %s:@ %a@]" context Typedecl.report_error err | Cannot_hide_id Illegal_shadowing @@ -3564,39 +3590,50 @@ let report_error ~loc _env = function let shadowed_item_kind= Sig_component_kind.to_string shadowed_item_kind in let shadowed_msg = Location.msg ~loc:shadowed_item_loc - "@[%s %s came from this include.@]" + "@[%s %a came from this include.@]" (String.capitalize_ascii shadowed_item_kind) - shadowed + Style.inline_code shadowed in let user_msg = Location.msg ~loc:user_loc - "@[The %s %s has no valid type@ if %s is shadowed.@]" - (Sig_component_kind.to_string user_kind) (Ident.name user_id) - shadowed + "@[The %s %a has no valid type@ if %a is shadowed.@]" + (Sig_component_kind.to_string user_kind) + Style.inline_code (Ident.name user_id) + Style.inline_code shadowed in Location.errorf ~loc ~sub:[shadowed_msg; user_msg] - "Illegal shadowing of included %s %s@ by %s." - shadowed_item_kind shadowed shadower + "Illegal shadowing of included %s %a@ by %a." + shadowed_item_kind + Style.inline_code shadowed + Style.inline_code shadower | Cannot_hide_id Appears_in_signature { opened_item_kind; opened_item_id; user_id; user_kind; user_loc } -> let opened_item_kind= Sig_component_kind.to_string opened_item_kind in let opened_id = Ident.name opened_item_id in let user_msg = Location.msg ~loc:user_loc - "@[The %s %s has no valid type@ if %s is hidden.@]" - (Sig_component_kind.to_string user_kind) (Ident.name user_id) - opened_id + "@[The %s %a has no valid type@ if %a is hidden.@]" + (Sig_component_kind.to_string user_kind) + Style.inline_code (Ident.name user_id) + Style.inline_code opened_id in Location.errorf ~loc ~sub:[user_msg] - "The %s %s introduced by this open appears in the signature." - opened_item_kind opened_id + "The %s %a introduced by this open appears in the signature." + opened_item_kind + Style.inline_code opened_id | Invalid_type_subst_rhs -> - Location.errorf ~loc "Only type synonyms are allowed on the right of :=" + Location.errorf ~loc "Only type synonyms are allowed on the right of %a" + Style.inline_code ":=" | Unpackable_local_modtype_subst p -> + let[@manual.ref "ss:module-type-substitution"] manual_ref = + [ 12; 7; 3 ] + in Location.errorf ~loc - "The module type@ %s@ is not a valid type for a packed module:@ \ - it is defined as a local substitution for a non-path module type." - (Path.name p) + "The module type@ %a@ is not a valid type for a packed module:@ \ + it is defined as a local substitution (temporary name)@ \ + for an anonymous module type.@ %a" + Style.inline_code (Path.name p) + Misc.print_see_manual manual_ref let report_error env ~loc err = Printtyp.wrap_printing_env ~error:true env diff --git a/src/ocaml/typing/typemod.mli b/src/ocaml/typing/typemod.mli index 209f2a55fb..0b85d88513 100644 --- a/src/ocaml/typing/typemod.mli +++ b/src/ocaml/typing/typemod.mli @@ -39,8 +39,8 @@ val type_toplevel_phrase: Typedtree.structure * Types.signature * (* Signature_names.t * *) Shape.t * Env.t val type_implementation: - string -> string -> string -> Env.t -> - Parsetree.structure -> Typedtree.implementation + Unit_info.t -> Env.t -> Parsetree.structure -> + Typedtree.implementation val type_interface: Env.t -> Parsetree.signature -> Typedtree.signature val transl_signature: @@ -60,11 +60,11 @@ val modtype_of_package: val path_of_module : Typedtree.module_expr -> Path.t option val save_signature: - string -> Typedtree.signature -> string -> string -> - Env.t -> Cmi_format.cmi_infos -> unit + Unit_info.t -> Typedtree.signature -> Env.t -> + Cmi_format.cmi_infos -> unit val package_units: - Env.t -> string list -> string -> string -> Typedtree.module_coercion + Env.t -> string list -> Unit_info.Artifact.t -> Typedtree.module_coercion (* Should be in Envaux, but it breaks the build of the debugger *) val initial_env: @@ -76,6 +76,8 @@ module Sig_component_kind : sig type t = | Value | Type + | Constructor + | Label | Module | Module_type | Extension_constructor diff --git a/src/ocaml/typing/typeopt.ml b/src/ocaml/typing/typeopt.ml index 7462e16a09..f983c499c7 100644 --- a/src/ocaml/typing/typeopt.ml +++ b/src/ocaml/typing/typeopt.ml @@ -18,6 +18,7 @@ open Types open Asttypes open Typedtree +open Lambda let scrape_ty env ty = match get_desc ty with @@ -43,7 +44,7 @@ let scrape_ty env ty = let scrape env ty = get_desc (scrape_ty env ty) -let _scrape_poly env ty = +let scrape_poly env ty = let ty = scrape_ty env ty in match get_desc ty with | Tpoly (ty, _) -> get_desc ty @@ -67,6 +68,13 @@ let is_immediate = function targeting 32 or 64 bits. *) !Clflags.native_code && Sys.word_size = 64 +let maybe_pointer_type env ty = + let ty = scrape_ty env ty in + if is_immediate (Ctype.immediacy env ty) then Immediate + else Pointer + +let maybe_pointer exp = maybe_pointer_type exp.exp_env exp.exp_type + type classification = | Int | Float @@ -92,7 +100,7 @@ let classify env ty = else begin try match (Env.find_type p env).type_kind with - | Type_abstract -> + | Type_abstract _ -> Any | Type_record _ | Type_variant _ | Type_open -> Addr @@ -107,7 +115,6 @@ let classify env ty = | Tlink _ | Tsubst _ | Tpoly _ | Tfield _ -> assert false -(* let array_type_kind env ty = match scrape_poly env ty with | Tconstr(p, [elt_ty], _) when Path.same p Predef.path_array -> @@ -125,6 +132,7 @@ let array_type_kind env ty = let array_kind exp = array_type_kind exp.exp_env exp.exp_type +(* let array_pattern_kind pat = array_type_kind pat.pat_env pat.pat_type let bigarray_decode_type env ty tbl dfl = @@ -136,7 +144,8 @@ let bigarray_decode_type env ty tbl dfl = dfl let kind_table = - ["float32_elt", Pbigarray_float32; + ["float16_elt", Pbigarray_float16; + "float32_elt", Pbigarray_float32; "float64_elt", Pbigarray_float64; "int8_signed_elt", Pbigarray_sint8; "int8_unsigned_elt", Pbigarray_uint8; @@ -178,11 +187,6 @@ let value_kind env ty = | _ -> Pgenval end - -let function_return_value_kind env ty = - match is_function_type env ty with - | Some (_lhs, rhs) -> value_kind env rhs - | None -> Pgenval *) (** Whether a forward block is needed for a lazy thunk on a value, i.e. diff --git a/src/ocaml/typing/typeopt.mli b/src/ocaml/typing/typeopt.mli index 6ca678d2fe..1e7c1ecb79 100644 --- a/src/ocaml/typing/typeopt.mli +++ b/src/ocaml/typing/typeopt.mli @@ -19,18 +19,18 @@ val is_function_type : Env.t -> Types.type_expr -> (Types.type_expr * Types.type_expr) option val is_base_type : Env.t -> Types.type_expr -> Path.t -> bool -(* val maybe_pointer_type : Env.t -> Types.type_expr -> Lambda.immediate_or_pointer val maybe_pointer : Typedtree.expression -> Lambda.immediate_or_pointer val array_type_kind : Env.t -> Types.type_expr -> Lambda.array_kind + val array_kind : Typedtree.expression -> Lambda.array_kind +(* val array_pattern_kind : Typedtree.pattern -> Lambda.array_kind val bigarray_type_kind_and_layout : Env.t -> Types.type_expr -> Lambda.bigarray_kind * Lambda.bigarray_layout val value_kind : Env.t -> Types.type_expr -> Lambda.value_kind -val function_return_value_kind : Env.t -> Types.type_expr -> Lambda.value_kind *) val classify_lazy_argument : Typedtree.expression -> diff --git a/src/ocaml/typing/types.ml b/src/ocaml/typing/types.ml index 4bba370fbd..bdc2a9e549 100644 --- a/src/ocaml/typing/types.ml +++ b/src/ocaml/typing/types.ml @@ -249,11 +249,16 @@ type type_declaration = and type_decl_kind = (label_declaration, constructor_declaration) type_kind and ('lbl, 'cstr) type_kind = - Type_abstract + Type_abstract of type_origin | Type_record of 'lbl list * record_representation | Type_variant of 'cstr list * variant_representation | Type_open +and type_origin = + Definition + | Rec_check_regularity + | Existential of string + and record_representation = Record_regular (* All fields are boxed / tagged *) | Record_float (* All fields are floats *) diff --git a/src/ocaml/typing/types.mli b/src/ocaml/typing/types.mli index ec8a13774c..d7a782da3e 100644 --- a/src/ocaml/typing/types.mli +++ b/src/ocaml/typing/types.mli @@ -486,11 +486,16 @@ type type_declaration = and type_decl_kind = (label_declaration, constructor_declaration) type_kind and ('lbl, 'cstr) type_kind = - Type_abstract + Type_abstract of type_origin | Type_record of 'lbl list * record_representation | Type_variant of 'cstr list * variant_representation | Type_open +and type_origin = + Definition + | Rec_check_regularity (* See Typedecl.transl_type_decl *) + | Existential of string + and record_representation = Record_regular (* All fields are boxed / tagged *) | Record_float (* All fields are floats *) diff --git a/src/ocaml/typing/typetexp.ml b/src/ocaml/typing/typetexp.ml index a104ba8d57..837ea4e901 100644 --- a/src/ocaml/typing/typetexp.ml +++ b/src/ocaml/typing/typetexp.ml @@ -33,7 +33,6 @@ type error = | Type_arity_mismatch of Longident.t * int * int | Bound_type_variable of string | Recursive_type - | Unbound_row_variable of Longident.t | Type_mismatch of Errortrace.unification_error | Alias_type_mismatch of Errortrace.unification_error | Present_has_conjunction of string @@ -187,7 +186,9 @@ end = struct TyVarMap.find name !type_variables let get_in_scope_names () = - let add_name name _ l = if name = "_" then l else ("'" ^ name) :: l in + let add_name name _ l = + if name = "_" then l else Pprintast.tyvar_of_name name :: l + in TyVarMap.fold add_name !type_variables [] (*****) @@ -318,7 +319,7 @@ end = struct with Not_found -> if extensibility = Fixed && Btype.is_Tvar ty then raise(Error(loc, env, - Unbound_type_variable ("'"^name, + Unbound_type_variable (Pprintast.tyvar_of_name name, get_in_scope_names ()))); let v2 = new_global_var () in r := (loc, v, v2) :: !r; @@ -409,6 +410,14 @@ let transl_type_param env styp = Builtin_attributes.warning_scope styp.ptyp_attributes (fun () -> transl_type_param env styp) +(* Forward declaration (set in Typemod.type_open) *) + +let type_open : + (?used_slot:bool ref -> override_flag -> Env.t -> Location.t -> + Longident.t loc -> Path.t * Env.t) + ref = + ref (fun ?used_slot:_ _ -> assert false) + let rec transl_type env ~policy ?(aliased=false) ~row_context styp = Msupport.with_saved_types ~warning_attribute:styp.ptyp_attributes ?save_part:None @@ -531,22 +540,23 @@ and transl_type_aux env ~row_context ~aliased ~policy styp = | Ptyp_alias(st, alias) -> let cty = try - let t = TyVarEnv.lookup_local ~row_context alias in + let t = TyVarEnv.lookup_local ~row_context alias.txt in let ty = transl_type env ~policy ~aliased:true ~row_context st in begin try unify_var env t ty.ctyp_type with Unify err -> let err = Errortrace.swap_unification_error err in - raise(Error(styp.ptyp_loc, env, Alias_type_mismatch err)) + raise(Error(alias.loc, env, Alias_type_mismatch err)) end; ty with Not_found -> let t, ty = with_local_level_if_principal begin fun () -> let t = newvar () in - TyVarEnv.remember_used alias t styp.ptyp_loc; + (* Use the whole location, which is used by [Type_mismatch]. *) + TyVarEnv.remember_used alias.txt t styp.ptyp_loc; let ty = transl_type env ~policy ~row_context st in begin try unify_var env t ty.ctyp_type with Unify err -> let err = Errortrace.swap_unification_error err in - raise(Error(styp.ptyp_loc, env, Alias_type_mismatch err)) + raise(Error(alias.loc, env, Alias_type_mismatch err)) end; (t, ty) end @@ -555,8 +565,8 @@ and transl_type_aux env ~row_context ~aliased ~policy styp = let t = instance t in let px = Btype.proxy t in begin match get_desc px with - | Tvar None -> set_type_desc px (Tvar (Some alias)) - | Tunivar None -> set_type_desc px (Tunivar (Some alias)) + | Tvar None -> set_type_desc px (Tvar (Some alias.txt)) + | Tunivar None -> set_type_desc px (Tunivar (Some alias.txt)) | _ -> () end; { ty with ctyp_type = t } @@ -699,6 +709,12 @@ and transl_type_aux env ~row_context ~aliased ~policy styp = pack_fields = ptys; pack_txt = p; }) ty + | Ptyp_open (mod_ident, t) -> + let path, new_env = + !type_open Asttypes.Fresh env loc mod_ident + in + let cty = transl_type new_env ~policy ~row_context t in + ctyp (Ttyp_open (path, mod_ident, cty)) cty.ctyp_type | Ptyp_extension ext -> raise (Error_forward (Builtin_attributes.error_of_extension ext)) @@ -869,30 +885,31 @@ let transl_type_scheme env styp = open Format open Printtyp +module Style = Misc.Style +let pp_tag ppf t = Format.fprintf ppf "`%s" t + let report_error env ppf = function | Unbound_type_variable (name, in_scope_names) -> - fprintf ppf "The type variable %s is unbound in this type declaration.@ %a" - name + fprintf ppf "The type variable %a is unbound in this type declaration.@ %a" + Style.inline_code name did_you_mean (fun () -> Misc.spellcheck in_scope_names name ) | No_type_wildcards -> - fprintf ppf "A type wildcard \"_\" is not allowed in this type declaration." + fprintf ppf "A type wildcard %a is not allowed in this type declaration." + Style.inline_code "_" | Undefined_type_constructor p -> fprintf ppf "The type constructor@ %a@ is not yet completely defined" - path p + (Style.as_inline_code path) p | Type_arity_mismatch(lid, expected, provided) -> fprintf ppf "@[The type constructor %a@ expects %i argument(s),@ \ but is here applied to %i argument(s)@]" - longident lid expected provided + (Style.as_inline_code longident) lid expected provided | Bound_type_variable name -> - fprintf ppf "Already bound type parameter %a" Pprintast.tyvar name + fprintf ppf "Already bound type parameter %a" + (Style.as_inline_code Pprintast.tyvar) name | Recursive_type -> fprintf ppf "This type is recursive" - | Unbound_row_variable lid -> - (* we don't use "spellcheck" here: this error is not raised - anywhere so it's unclear how it should be handled *) - fprintf ppf "Unbound row variable in #%a" longident lid | Type_mismatch trace -> Printtyp.report_unification_error ppf Env.empty trace (function ppf -> @@ -906,27 +923,33 @@ let report_error env ppf = function (function ppf -> fprintf ppf "but is used as an instance of type") | Present_has_conjunction l -> - fprintf ppf "The present constructor %s has a conjunctive type" l + fprintf ppf "The present constructor %a has a conjunctive type" + Style.inline_code l | Present_has_no_type l -> fprintf ppf - "@[@[The constructor %s is missing from the upper bound@ \ - (between '<'@ and '>')@ of this polymorphic variant@ \ - but is present in@ its lower bound (after '>').@]@,\ - @[@{Hint@}: Either add `%s in the upper bound,@ \ + "@[@[The constructor %a is missing from the upper bound@ \ + (between %a@ and %a)@ of this polymorphic variant@ \ + but is present in@ its lower bound (after %a).@]@,\ + @[@{Hint@}: Either add %a in the upper bound,@ \ or remove it@ from the lower bound.@]@]" - l l + (Style.as_inline_code pp_tag) l + Style.inline_code "<" + Style.inline_code ">" + Style.inline_code ">" + (Style.as_inline_code pp_tag) l | Constructor_mismatch (ty, ty') -> + let pp_type ppf ty = Style.as_inline_code !Oprint.out_type ppf ty in wrap_printing_env ~error:true env (fun () -> Printtyp.prepare_for_printing [ty; ty']; fprintf ppf "@[%s %a@ %s@ %a@]" "This variant type contains a constructor" - !Oprint.out_type (tree_of_typexp Type ty) + pp_type (tree_of_typexp Type ty) "which should be" - !Oprint.out_type (tree_of_typexp Type ty')) + pp_type (tree_of_typexp Type ty')) | Not_a_variant ty -> fprintf ppf "@[The type %a@ does not expand to a polymorphic variant type@]" - Printtyp.type_expr ty; + (Style.as_inline_code Printtyp.type_expr) ty; begin match get_desc ty with | Tvar (Some s) -> (* PR#7012: help the user that wrote 'Foo instead of `Foo *) @@ -935,36 +958,43 @@ let report_error env ppf = function end | Variant_tags (lab1, lab2) -> fprintf ppf - "@[Variant tags `%s@ and `%s have the same hash value.@ %s@]" - lab1 lab2 "Change one of them." + "@[Variant tags %a@ and %a have the same hash value.@ %s@]" + (Style.as_inline_code pp_tag) lab1 + (Style.as_inline_code pp_tag) lab2 + "Change one of them." | Invalid_variable_name name -> - fprintf ppf "The type variable name %s is not allowed in programs" name + fprintf ppf "The type variable name %a is not allowed in programs" + Style.inline_code name | Cannot_quantify (name, v) -> fprintf ppf "@[The universal type variable %a cannot be generalized:@ " - Pprintast.tyvar name; + (Style.as_inline_code Pprintast.tyvar) name; if Btype.is_Tvar v then fprintf ppf "it escapes its scope" else if Btype.is_Tunivar v then fprintf ppf "it is already bound to another variable" else - fprintf ppf "it is bound to@ %a" Printtyp.type_expr v; + fprintf ppf "it is bound to@ %a" + (Style.as_inline_code Printtyp.type_expr) v; fprintf ppf ".@]"; | Multiple_constraints_on_type s -> - fprintf ppf "Multiple constraints for type %a" longident s + fprintf ppf "Multiple constraints for type %a" + (Style.as_inline_code longident) s | Method_mismatch (l, ty, ty') -> wrap_printing_env ~error:true env (fun () -> - fprintf ppf "@[Method '%s' has type %a,@ which should be %a@]" - l Printtyp.type_expr ty Printtyp.type_expr ty') + fprintf ppf "@[Method %a has type %a,@ which should be %a@]" + Style.inline_code l + (Style.as_inline_code Printtyp.type_expr) ty + (Style.as_inline_code Printtyp.type_expr) ty') | Opened_object nm -> fprintf ppf "Illegal open object type%a" (fun ppf -> function - Some p -> fprintf ppf "@ %a" path p + Some p -> fprintf ppf "@ %a" (Style.as_inline_code path) p | None -> fprintf ppf "") nm | Not_an_object ty -> fprintf ppf "@[The type %a@ is not an object type@]" - Printtyp.type_expr ty + (Style.as_inline_code Printtyp.type_expr) ty let () = Location.register_error_of_exn diff --git a/src/ocaml/typing/typetexp.mli b/src/ocaml/typing/typetexp.mli index ca058a5cf0..56ed31c5fb 100644 --- a/src/ocaml/typing/typetexp.mli +++ b/src/ocaml/typing/typetexp.mli @@ -45,6 +45,12 @@ module TyVarEnv : sig end +(* Forward declaration, to be filled in by Typemod.type_open *) +val type_open: + (?used_slot:bool ref -> Asttypes.override_flag -> Env.t -> Location.t -> + Longident.t Asttypes.loc -> Path.t * Env.t) + ref + val valid_tyvar_name : string -> bool val transl_simple_type: @@ -73,7 +79,6 @@ type error = | Type_arity_mismatch of Longident.t * int * int | Bound_type_variable of string | Recursive_type - | Unbound_row_variable of Longident.t | Type_mismatch of Errortrace.unification_error | Alias_type_mismatch of Errortrace.unification_error | Present_has_conjunction of string diff --git a/src/ocaml/typing/untypeast.ml b/src/ocaml/typing/untypeast.ml index 5bf911989a..fc7714b419 100644 --- a/src/ocaml/typing/untypeast.ml +++ b/src/ocaml/typing/untypeast.ml @@ -13,7 +13,9 @@ (* *) (**************************************************************************) -open Longident +[@@@ocaml.warning "-60"] module Str = Ast_helper.Str (* For ocamldep *) +[@@@ocaml.warning "+60"] + open Asttypes open Parsetree open Ast_helper @@ -78,11 +80,6 @@ open T (* Some notes: - * For Pexp_function, we cannot go back to the exact original version - when there is a default argument, because the default argument is - translated in the typer. The code, if printed, will not be parsable because - new generated identifiers are not correct. - * For Pexp_apply, it is unclear whether arguments are reordered, especially when there are optional arguments. @@ -105,13 +102,6 @@ let rec lident_of_path = function let map_loc sub {loc; txt} = {loc = sub.location sub loc; txt} -(** Try a name [$name$0], check if it's free, if not, increment and repeat. *) -let fresh_name s env = - let name i = s ^ Int.to_string i in - let available i = not (Env.bound_value (name i) env) in - let first_i = Misc.find_first_mono available in - name first_i - (** Extract the [n] patterns from the case of a letop *) let rec extract_letop_patterns n pat = if n = 0 then pat, [] @@ -298,7 +288,8 @@ let pattern : type k . _ -> k T.general_pattern -> _ = fun sub pat -> match pat with { pat_extra=[Tpat_unpack, loc, _attrs]; pat_desc = Tpat_any; _ } -> Ppat_unpack { txt = None; loc } - | { pat_extra=[Tpat_unpack, _, _attrs]; pat_desc = Tpat_var (_,name); _ } -> + | { pat_extra=[Tpat_unpack, _, _attrs]; + pat_desc = Tpat_var (_,name, _); _ } -> Ppat_unpack { name with txt = Some name.txt } | { pat_extra=[Tpat_type (_path, lid), _, _attrs]; _ } -> Ppat_type (map_loc sub lid) @@ -308,7 +299,7 @@ let pattern : type k . _ -> k T.general_pattern -> _ = fun sub pat -> | _ -> match pat.pat_desc with Tpat_any -> Ppat_any - | Tpat_var (id, name) -> + | Tpat_var (id, name, _) -> begin match (Ident.name id).[0] with 'A'..'Z' -> @@ -321,11 +312,11 @@ let pattern : type k . _ -> k T.general_pattern -> _ = fun sub pat -> The compiler transforms (x:t) into (_ as x : t). This avoids transforming a warning 27 into a 26. *) - | Tpat_alias ({pat_desc = Tpat_any; pat_loc}, _id, name) + | Tpat_alias ({pat_desc = Tpat_any; pat_loc}, _id, name, _) when pat_loc = pat.pat_loc -> Ppat_var name - | Tpat_alias (pat, _id, name) -> + | Tpat_alias (pat, _id, name, _) -> Ppat_alias (sub.pat sub pat, name) | Tpat_constant cst -> Ppat_constant (constant cst) | Tpat_tuple list -> @@ -408,22 +399,52 @@ let expression sub exp = Pexp_let (rec_flag, List.map (sub.value_binding sub) list, sub.expr sub exp) - - (* Pexp_function can't have a label, so we split in 3 cases. *) - (* One case, no guard: It's a fun. *) - | Texp_function { arg_label; cases = [{c_lhs=p; c_guard=None; c_rhs=e}]; - _ } -> - Pexp_fun (arg_label, None, sub.pat sub p, sub.expr sub e) - (* No label: it's a function. *) - | Texp_function { arg_label = Nolabel; cases; _; } -> - Pexp_function (List.map (sub.case sub) cases) - (* Mix of both, we generate `fun ~label:$name$ -> match $name$ with ...` *) - | Texp_function { arg_label = Labelled s | Optional s as label; cases; - _ } -> - let name = fresh_name s exp.exp_env in - Pexp_fun (label, None, Pat.var ~loc {loc;txt = name }, - Exp.match_ ~loc (Exp.ident ~loc {loc;txt= Lident name}) - (List.map (sub.case sub) cases)) + | Texp_function (params, body) -> + let body, constraint_ = + match body with + | Tfunction_body body -> + (* Unlike function cases, the [exp_extra] is placed on the body + itself. *) + Pfunction_body (sub.expr sub body), None + | Tfunction_cases { cases; loc; exp_extra; attributes; _ } -> + let cases = List.map (sub.case sub) cases in + let constraint_ = + match exp_extra with + | Some (Texp_coerce (ty1, ty2)) -> + Some + (Pcoerce (Option.map (sub.typ sub) ty1, sub.typ sub ty2)) + | Some (Texp_constraint ty) -> + Some (Pconstraint (sub.typ sub ty)) + | Some (Texp_poly _ | Texp_newtype _ | Texp_newtype' _) + | None -> None + in + Pfunction_cases (cases, loc, attributes), constraint_ + in + let params = + List.concat_map + (fun fp -> + let pat, default_arg = + match fp.fp_kind with + | Tparam_pat pat -> pat, None + | Tparam_optional_default (pat, expr) -> pat, Some expr + in + let pat = sub.pat sub pat in + let default_arg = Option.map (sub.expr sub) default_arg in + let newtypes = + List.map + (fun x -> + { pparam_desc = Pparam_newtype x; + pparam_loc = x.loc; + }) + fp.fp_newtypes + in + let pparam_desc = + Pparam_val (fp.fp_arg_label, default_arg, pat) + in + { pparam_desc; pparam_loc = fp.fp_loc } :: newtypes) + params + in + Pexp_function (params, constraint_, body) | Texp_apply (exp, list) -> Pexp_apply (sub.expr sub exp, List.fold_right (fun (label, expo) list -> @@ -787,12 +808,13 @@ let core_type sub ct = let list = List.map (fun v -> mkloc v loc) list in Ptyp_poly (list, sub.typ sub ct) | Ttyp_package pack -> Ptyp_package (sub.package_type sub pack) + | Ttyp_open (_path, mod_ident, t) -> Ptyp_open (mod_ident, sub.typ sub t) in Typ.mk ~loc ~attrs desc let class_structure sub cs = let rec remove_self = function - | { pat_desc = Tpat_alias (p, id, _s) } + | { pat_desc = Tpat_alias (p, id, _s, _) } when string_is_prefix "selfpat-" (Ident.name id) -> remove_self p | p -> p @@ -822,10 +844,25 @@ let object_field sub {of_loc; of_desc; of_attributes;} = Of.mk ~loc ~attrs desc and is_self_pat = function - | { pat_desc = Tpat_alias(_pat, id, _) } -> + | { pat_desc = Tpat_alias(_pat, id, _, _) } -> string_is_prefix "self-" (Ident.name id) | _ -> false +(* [Typeclass] adds a [self] parameter to initializers and methods that isn't + present in the source program. +*) +let remove_fun_self exp = + match exp with + | { exp_desc = + Texp_function + ({fp_arg_label = Nolabel; fp_kind = Tparam_pat pat} :: params, body) + } + when is_self_pat pat -> + (match params, body with + | [], Tfunction_body body -> body + | _, _ -> { exp with exp_desc = Texp_function (params, body) }) + | e -> e + let class_field sub cf = let loc = sub.location sub cf.cf_loc in let attrs = sub.attributes sub cf.cf_attributes in @@ -842,21 +879,9 @@ let class_field sub cf = | Tcf_method (lab, priv, Tcfk_virtual cty) -> Pcf_method (lab, priv, Cfk_virtual (sub.typ sub cty)) | Tcf_method (lab, priv, Tcfk_concrete (o, exp)) -> - let remove_fun_self = function - | { exp_desc = - Texp_function { arg_label = Nolabel; cases = [case]; _ } } - when is_self_pat case.c_lhs && case.c_guard = None -> case.c_rhs - | e -> e - in let exp = remove_fun_self exp in Pcf_method (lab, priv, Cfk_concrete (o, sub.expr sub exp)) | Tcf_initializer exp -> - let remove_fun_self = function - | { exp_desc = - Texp_function { arg_label = Nolabel; cases = [case]; _ } } - when is_self_pat case.c_lhs && case.c_guard = None -> case.c_rhs - | e -> e - in let exp = remove_fun_self exp in Pcf_initializer (sub.expr sub exp) | Tcf_attribute x -> Pcf_attribute x diff --git a/src/ocaml/typing/rec_check.ml b/src/ocaml/typing/value_rec_check.ml similarity index 84% rename from src/ocaml/typing/rec_check.ml rename to src/ocaml/typing/value_rec_check.ml index 6dae3a0a95..91a73ca48b 100644 --- a/src/ocaml/typing/rec_check.ml +++ b/src/ocaml/typing/value_rec_check.ml @@ -16,7 +16,11 @@ (* *) (**************************************************************************) -(** Static checking of recursive declarations +(** Static checking of recursive declarations, as described in + + A practical mode system for recursive definitions + Alban Reynaud, Gabriel Scherer and Jeremy Yallop + POPL 2021 Some recursive definitions are meaningful {[ @@ -102,11 +106,9 @@ open Asttypes open Typedtree open Types -exception Illegal_expr - (** {1 Static or dynamic size} *) -type sd = Static | Dynamic +type sd = Value_rec_types.recursive_binding_kind let is_ref : Types.value_description -> bool = function | { Types.val_kind = @@ -142,7 +144,13 @@ let classify_expression : Typedtree.expression -> sd = The first definition can be allowed (`y` has a statically-known size) but the second one is unsound (`y` has no statically-known size). *) - let rec classify_expression env e = match e.exp_desc with + let rec classify_expression env e : sd = + let is_constant expr = + match classify_expression env expr with + | Constant -> true + | _ -> false + in + match e.exp_desc with (* binding and variable cases *) | Texp_let (rec_flag, vb, e) -> let env = classify_value_bindings rec_flag env vb in @@ -159,14 +167,29 @@ let classify_expression : Typedtree.expression -> sd = | Texp_construct (_, {cstr_tag = Cstr_unboxed}, [e]) -> classify_expression env e - | Texp_construct _ -> - Static + | Texp_construct (_, _, exprs) -> + if List.for_all is_constant exprs then Constant else Static + + | Texp_variant (_, Some expr) -> + if is_constant expr then Constant else Static + | Texp_variant (_, None) -> + Constant | Texp_record { representation = Record_unboxed _; fields = [| _, Overridden (_,e) |] } -> classify_expression env e - | Texp_record _ -> - Static + | Texp_record { fields; _ } -> + (* We ignore the [extended_expression] field. + As long as all fields are Overridden rather than Kept, the value + can be constant. *) + let is_constant_field (_label, def) = + match def with + | Kept _ -> false + | Overridden (_loc, expr) -> is_constant expr + in + if Array.for_all is_constant_field fields then Constant else Static + | Texp_tuple exprs -> + if List.for_all is_constant exprs then Constant else Static | Texp_apply ({exp_desc = Texp_ident (_, _, vd)}, _) when is_ref vd -> @@ -175,27 +198,50 @@ let classify_expression : Typedtree.expression -> sd = when List.exists is_abstracted_arg args -> Static | Texp_apply _ -> - Dynamic + Not_recursive + + | Texp_array _ -> + Static + | Texp_pack mexp -> + classify_module_expression env mexp + | Texp_function _ -> + Static + | Texp_lazy e -> + (* The code below was copied (in part) from translcore.ml *) + begin match Typeopt.classify_lazy_argument e with + | `Constant_or_function -> + (* A constant expr (of type <> float if [Config.flat_float_array] is + true) gets compiled as itself. *) + classify_expression env e + | `Float_that_cannot_be_shortcut + | `Identifier `Forward_value -> + (* Forward blocks *) + Static + | `Identifier `Other -> + classify_expression env e + | `Other -> + (* other cases compile to a lazy block holding a function *) + Static + end + | Texp_extension_constructor _ -> + Static + + | Texp_constant _ -> + Constant | Texp_for _ - | Texp_constant _ - | Texp_new _ - | Texp_instvar _ - | Texp_tuple _ - | Texp_array _ - | Texp_variant _ | Texp_setfield _ | Texp_while _ - | Texp_setinstvar _ - | Texp_pack _ - | Texp_object _ - | Texp_function _ - | Texp_lazy _ - | Texp_unreachable - | Texp_hole - | Texp_extension_constructor _ -> - Static + | Texp_setinstvar _ -> + (* Unit-returning expressions *) + Constant + + | Texp_unreachable -> + Constant + | Texp_new _ + | Texp_instvar _ + | Texp_object _ | Texp_match _ | Texp_ifthenelse _ | Texp_send _ @@ -204,7 +250,9 @@ let classify_expression : Typedtree.expression -> sd = | Texp_try _ | Texp_override _ | Texp_letop _ -> - Dynamic + Not_recursive + + | Texp_hole -> Static and classify_value_bindings rec_flag env bindings = (* We use a non-recursive classification, classifying each binding with respect to the old environment @@ -221,7 +269,7 @@ let classify_expression : Typedtree.expression -> sd = let old_env = env in let add_value_binding env vb = match vb.vb_pat.pat_desc with - | Tpat_var (id, _loc) -> + | Tpat_var (id, _loc, _uid) -> let size = classify_expression old_env vb.vb_expr in Ident.add id size env | _ -> @@ -229,7 +277,7 @@ let classify_expression : Typedtree.expression -> sd = env in List.fold_left add_value_binding env bindings - and classify_path env = function + and classify_path env : _ -> Value_rec_types.recursive_binding_kind = function | Path.Pident x -> begin try Ident.find_same x env @@ -244,17 +292,42 @@ let classify_expression : Typedtree.expression -> sd = For non-local identifiers it might be reasonable (although not completely clear) to consider them Static (they have already been evaluated), but for the others we must - under-approximate with Dynamic. + under-approximate with Not_recursive. This could be fixed by a more complete implementation. *) - Dynamic + Not_recursive end | Path.Pdot _ | Path.Papply _ | Path.Pextra_ty _ -> (* local modules could have such paths to local definitions; classify_expression could be extend to compute module shapes more precisely *) - Dynamic + Not_recursive + and classify_module_expression env mexp : sd = + match mexp.mod_desc with + | Tmod_ident _ | Tmod_hole -> + Not_recursive + | Tmod_structure _ -> + Static + | Tmod_functor _ -> + Static + | Tmod_apply _ -> + Not_recursive + | Tmod_apply_unit _ -> + Not_recursive + | Tmod_constraint (mexp, _, _, coe) -> + begin match coe with + | Tcoerce_none -> classify_module_expression env mexp + | Tcoerce_structure _ -> + Static + | Tcoerce_functor _ -> Static + | Tcoerce_primitive _ -> + Misc.fatal_error "letrec: primitive coercion on a module" + | Tcoerce_alias _ -> + Misc.fatal_error "letrec: alias coercion on a module" + end + | Tmod_unpack (e, _) -> + classify_expression env e in classify_expression Ident.empty @@ -574,19 +647,36 @@ let rec expression : Typedtree.expression -> term_judg = *) expression arg << Guard | Texp_apply (e, args) -> - let arg (_, eo) = option expression eo in - let app_mode = if List.exists is_abstracted_arg args - then (* see the comment on Texp_apply in typedtree.mli; - the non-abstracted arguments are bound to local - variables, which corresponds to a Guard mode. *) - Guard - else Dereference + (* [args] may contain omitted arguments, corresponding to labels in + the function's type that were not passed in the actual application. + The arguments before the first omitted argument are passed to the + function immediately, so they are dereferenced. The arguments after + the first omitted one are stored in a closure, so guarded. + The function itself is called immediately (dereferenced) if there + is at least one argument before the first omitted one. + On the other hand, if the first argument is omitted then the + function is stored in the closure without being called. *) + let rec split_args ~has_omitted_arg = function + | [] -> [], [] + | (_, None) :: rest -> split_args ~has_omitted_arg:true rest + | (_, Some arg) :: rest -> + let applied, delayed = split_args ~has_omitted_arg rest in + if has_omitted_arg + then applied, arg :: delayed + else arg :: applied, delayed + in + let applied, delayed = split_args ~has_omitted_arg:false args in + let function_mode = + match applied with + | [] -> Guard + | _ :: _ -> Dereference in - join [expression e; list arg args] << app_mode + join [expression e << function_mode; + list expression applied << Dereference; + list expression delayed << Guard] | Texp_tuple exprs -> list expression exprs << Guard | Texp_array exprs -> - (* let array_mode = match Typeopt.array_kind exp with | Lambda.Pfloatarray -> (* (flat) float arrays unbox their elements *) @@ -599,12 +689,6 @@ let rec expression : Typedtree.expression -> term_judg = (* non-generic, non-float arrays act as constructors *) Guard in - *) - let array_mode = - (* FIXME MERLIN this is incorrect, but it won't report false positive, so it - will do for now. *) - Guard - in list expression exprs << array_mode | Texp_construct (_, desc, exprs) -> let access_constructor = @@ -782,18 +866,55 @@ let rec expression : Typedtree.expression -> term_judg = path pth << Dereference; list field fields << Dereference; ] - | Texp_function { cases } -> + | Texp_function (params, body) -> (* - (Gi; _ |- pi -> ei : m[Delay])^i - -------------------------------------- - sum(Gi)^i |- function (pi -> ei)^i : m + G |-{body} b : m[Delay] + (Hj |-{def} Pj : m[Delay])^j + H := sum(Hj)^j + ps := sum(pat(Pj))^j + ----------------------------------- + G + H - ps |- fun (Pj)^j -> b : m + *) + let param_pat param = + (* param P ::= + | ?(pat = expr) + | pat + + Define pat(P) as + pat if P = ?(pat = expr) + pat if P = pat + *) + match param.fp_kind with + | Tparam_pat pat -> pat + | Tparam_optional_default (pat, _) -> pat + in + (* Optional argument defaults. - Contrarily to match, the value that is pattern-matched - is bound locally, so the pattern modes do not influence - the final environment. + G |-{def} P : m *) - let case_env c m = fst (case c m) in - list case_env cases << Delay + let param_default param = + match param.fp_kind with + | Tparam_optional_default (_, default) -> + (* + G |- e : m + ------------------ + G |-{def} ?(p=e) : m + *) + expression default + | Tparam_pat _ -> + (* + ------------------ + . |-{def} p : m + *) + empty + in + let patterns = List.map param_pat params in + let defaults = List.map param_default params in + let body = function_body body in + let f = join (body :: defaults) << Delay in + (fun m -> + let env = f m in + remove_patlist patterns env) | Texp_lazy e -> (* G |- e: m[Delay] @@ -815,18 +936,46 @@ let rec expression : Typedtree.expression -> term_judg = list binding_op (let_ :: ands) << Dereference; case_env body << Delay ] - | Texp_unreachable -> + | Texp_unreachable | Texp_hole -> (* ---------- [] |- .: m *) empty - | Texp_hole -> empty | Texp_extension_constructor (_lid, pth) -> path pth << Dereference | Texp_open (od, e) -> open_declaration od >> expression e +(* Function bodies. + + G |-{body} b : m +*) +and function_body body = + match body with + | Tfunction_body body -> + (* + G |- e : m + ------------------ + G |-{body} e : m (**) + + (**) The "e" here stands for [Tfunction_body] as opposed to + [Tfunction_cases]. + *) + expression body + | Tfunction_cases { cases; _ } -> + (* + (Gi; _ |- pi -> ei : m)^i (**) + ------------------ + sum(Gi)^i |-{body} function (pi -> ei)^i : m + + (**) Contrarily to match, the values that are pattern-matched + are bound locally, so the pattern modes do not influence + the final environment. + *) + List.map (fun c mode -> fst (case c mode)) cases + |> join + and binding_op : Typedtree.binding_op -> term_judg = fun bop -> join [path bop.bop_op_path; expression bop.bop_exp] @@ -1201,8 +1350,8 @@ and pattern : type k . k general_pattern -> Env.t -> mode = fun pat env -> and is_destructuring_pattern : type k . k general_pattern -> bool = fun pat -> match pat.pat_desc with | Tpat_any -> false - | Tpat_var (_, _) -> false - | Tpat_alias (pat, _, _) -> is_destructuring_pattern pat + | Tpat_var (_, _, _) -> false + | Tpat_alias (pat, _, _, _) -> is_destructuring_pattern pat | Tpat_constant _ -> true | Tpat_tuple _ -> true | Tpat_construct _ -> true @@ -1215,21 +1364,27 @@ and is_destructuring_pattern : type k . k general_pattern -> bool = | Tpat_or (l,r,_) -> is_destructuring_pattern l || is_destructuring_pattern r -let is_valid_recursive_expression idlist expr = +let is_valid_recursive_expression idlist expr : sd option = match expr.exp_desc with | Texp_function _ -> (* Fast path: functions can never have invalid recursive references *) - true + Some Static | _ -> - match classify_expression expr with - | Static -> - (* The expression has known size *) - let ty = expression expr Return in - Env.unguarded ty idlist = [] - | Dynamic -> - (* The expression has unknown size *) - let ty = expression expr Return in - Env.unguarded ty idlist = [] && Env.dependent ty idlist = [] + let rkind = classify_expression expr in + let is_valid = + match rkind with + | Static | Constant -> + (* The expression has known size or is constant *) + let ty = expression expr Return in + Env.unguarded ty idlist = [] + | Not_recursive -> + (* The expression has unknown size *) + let ty = expression expr Return in + Env.unguarded ty idlist = [] && Env.dependent ty idlist = [] + | Class -> + assert false (* Not generated by [classify_expression] *) + in + if is_valid then Some rkind else None (* A class declaration may contain let-bindings. If they are recursive, their validity will already be checked by [is_valid_recursive_expression] diff --git a/src/ocaml/typing/rec_check.mli b/src/ocaml/typing/value_rec_check.mli similarity index 89% rename from src/ocaml/typing/rec_check.mli rename to src/ocaml/typing/value_rec_check.mli index aa5c1ca3c1..8010e7c92c 100644 --- a/src/ocaml/typing/rec_check.mli +++ b/src/ocaml/typing/value_rec_check.mli @@ -12,8 +12,9 @@ (* *) (**************************************************************************) -exception Illegal_expr - -val is_valid_recursive_expression : Ident.t list -> Typedtree.expression -> bool +val is_valid_recursive_expression : + Ident.t list -> + Typedtree.expression -> + Value_rec_types.recursive_binding_kind option val is_valid_class_expr : Ident.t list -> Typedtree.class_expr -> bool diff --git a/src/ocaml/typing/value_rec_types.mli b/src/ocaml/typing/value_rec_types.mli new file mode 100644 index 0000000000..93be6ee9ba --- /dev/null +++ b/src/ocaml/typing/value_rec_types.mli @@ -0,0 +1,42 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Vincent Laviron, OCamlPro *) +(* *) +(* Copyright 2023 OCamlPro, SAS *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(** Types related to the compilation of value let-recs (non-functional + recursive definitions) *) + +(** The kind of recursive bindings, as computed by + [Rec_check.classify_expression] *) +type recursive_binding_kind = +| Static + (** The expression evaluates to a function or block of a + statically known size. + It will be pre-allocated and back-patched later. + The expression can refer to recursive variables as long as it + does not inspect them during its evaluation. *) +| Constant + (** The expression evaluates to a value that does not contain any + occurrence of a recursive variable. + Combined with the invariant that recursive variables must never be + examined during the definitions, this special case allow using the + same rules as Static bindings (i.e. allow guarded occurrences of + recursive variables in the expression) for values that cannot be + back-patched (unit, integers, empty arrays, ...). *) +| Not_recursive + (** Non recursive bindings. Arbitrary expressions, that are not allowed to + refer to any recursive variable. *) +| Class + (** Bindings generated by the compilation of objects and classes. + These bindings are generated in Lambda form directly and never go through + [Rec_check], so to avoid re-implementing the classification pass on Lambda + we simply identify this special case with a dedicated constructor. *) diff --git a/src/ocaml/utils/clflags.ml b/src/ocaml/utils/clflags.ml index 337ac0a3c4..f507f58362 100644 --- a/src/ocaml/utils/clflags.ml +++ b/src/ocaml/utils/clflags.ml @@ -1,8 +1,10 @@ (** {0 OCaml compiler compatible command-line parameters} *) let cmi_file = ref None let include_dirs = ref [] +let hidden_include_dirs = ref [] let fast = ref false let classic = ref false +let all_ppx = ref [] let principal = ref false let real_paths = ref true let recursive_types = ref false @@ -15,6 +17,7 @@ let open_modules = ref [] let annotations = ref false let binary_annotations = ref true +let store_occurrences = ref true let print_types = ref false let native_code = ref false let error_size = ref 500 diff --git a/src/ocaml/utils/clflags.mli b/src/ocaml/utils/clflags.mli index 6294b08de6..4948f58901 100644 --- a/src/ocaml/utils/clflags.mli +++ b/src/ocaml/utils/clflags.mli @@ -8,8 +8,10 @@ Parameters from OCaml compiler which affect Merlin behavior. *) val cmi_file : string option ref val include_dirs : string list ref +val hidden_include_dirs : string list ref val fast : bool ref val classic : bool ref +val all_ppx : string list ref val principal : bool ref val real_paths : bool ref val recursive_types : bool ref @@ -23,6 +25,7 @@ val open_modules : string list ref Ignored by merlin but kept for compatibility with upstream code. *) val annotations : bool ref val binary_annotations : bool ref +val store_occurrences : bool ref val print_types : bool ref val native_code : bool ref val dont_write_files : bool ref diff --git a/src/ocaml/utils/config.ml b/src/ocaml/utils/config.ml index f1f93f2814..6d255944b7 100644 --- a/src/ocaml/utils/config.ml +++ b/src/ocaml/utils/config.ml @@ -28,6 +28,8 @@ let version = Sys.ocaml_version let flambda = false +let ext_obj = ".o_The boot compiler cannot process C objects" + let exec_magic_number = "Caml1999X033" (* exec_magic_number is duplicated in runtime/caml/exec.h *) and cmi_magic_number = "Caml1999I033" diff --git a/src/ocaml/utils/config.mli b/src/ocaml/utils/config.mli index 02713f5086..26323f87fa 100644 --- a/src/ocaml/utils/config.mli +++ b/src/ocaml/utils/config.mli @@ -18,6 +18,8 @@ val version: string (* The current version number of the system *) +val ext_obj : string + val interface_suffix: string ref (* Suffix for interface file names *) diff --git a/src/ocaml/utils/diffing.ml b/src/ocaml/utils/diffing.ml index e5b230e233..94391803ae 100644 --- a/src/ocaml/utils/diffing.ml +++ b/src/ocaml/utils/diffing.ml @@ -36,14 +36,14 @@ type change_kind = | Preservation let style = function - | Preservation -> Misc.Color.[ FG Green ] - | Deletion -> Misc.Color.[ FG Red; Bold] - | Insertion -> Misc.Color.[ FG Red; Bold] - | Modification -> Misc.Color.[ FG Magenta; Bold] + | Preservation -> Misc.Style.[ FG Green ] + | Deletion -> Misc.Style.[ FG Red; Bold] + | Insertion -> Misc.Style.[ FG Red; Bold] + | Modification -> Misc.Style.[ FG Magenta; Bold] let prefix ppf (pos, p) = let sty = style p in - Format.pp_open_stag ppf (Misc.Color.Style sty); + Format.pp_open_stag ppf (Misc.Style.Style sty); Format.fprintf ppf "%i. " pos; Format.pp_close_stag ppf () diff --git a/src/ocaml/utils/diffing.mli b/src/ocaml/utils/diffing.mli index 80cfa5e279..7f4d7ced1b 100644 --- a/src/ocaml/utils/diffing.mli +++ b/src/ocaml/utils/diffing.mli @@ -80,7 +80,7 @@ type change_kind = | Modification | Preservation val prefix: Format.formatter -> (int * change_kind) -> unit -val style: change_kind -> Misc.Color.style list +val style: change_kind -> Misc.Style.style list type ('left,'right,'eq,'diff) change = diff --git a/src/ocaml/utils/diffing_with_keys.ml b/src/ocaml/utils/diffing_with_keys.ml index 8a313143bd..33a03b4da5 100644 --- a/src/ocaml/utils/diffing_with_keys.ml +++ b/src/ocaml/utils/diffing_with_keys.ml @@ -37,7 +37,7 @@ let prefix ppf x = in let style k ppf inner = let sty = Diffing.style k in - Format.pp_open_stag ppf (Misc.Color.Style sty); + Format.pp_open_stag ppf (Misc.Style.Style sty); Format.kfprintf (fun ppf -> Format.pp_close_stag ppf () ) ppf inner in match x with diff --git a/src/ocaml/utils/load_path.ml b/src/ocaml/utils/load_path.ml index 70ce575599..1944e32b9b 100644 --- a/src/ocaml/utils/load_path.ml +++ b/src/ocaml/utils/load_path.ml @@ -19,17 +19,22 @@ module STbl = Misc.String.Tbl (* Mapping from basenames to full filenames *) type registry = string STbl.t -let files : registry ref = s_table STbl.create 42 -let files_uncap : registry ref = s_table STbl.create 42 +let visible_files : registry ref = s_table STbl.create 42 +let visible_files_uncap : registry ref = s_table STbl.create 42 + +let hidden_files : registry ref = s_table STbl.create 42 +let hidden_files_uncap : registry ref = s_table STbl.create 42 module Dir = struct type t = { path : string; files : string list; + hidden : bool; } let path t = t.path let files t = t.files + let hidden t = t.hidden let find t fn = if List.mem fn t.files then @@ -37,18 +42,18 @@ module Dir = struct else None - let find_uncap t fn = - let fn = String.uncapitalize_ascii fn in + let find_normalized t fn = + let fn = Misc.normalized_unit_filename fn in let search base = - if String.uncapitalize_ascii base = fn then + if Misc.normalized_unit_filename base = fn then Some (Filename.concat t.path base) else None in List.find_map search t.files - let create path = - { path; files = Array.to_list (Directory_content_cache.read path) } + let create ~hidden path = + { path; files = Array.to_list (Directory_content_cache.read path); hidden } let check t = Directory_content_cache.check t.path @@ -56,19 +61,37 @@ end type auto_include_callback = (Dir.t -> string -> string option) -> string -> string -let dirs = s_ref [] + +let visible_dirs = s_ref [] +let hidden_dirs = s_ref [] let no_auto_include _ _ = raise Not_found let auto_include_callback = ref no_auto_include let reset () = assert (not Config.merlin || Local_store.is_bound ()); - STbl.clear !files; - STbl.clear !files_uncap; - dirs := []; + STbl.clear !hidden_files; + STbl.clear !hidden_files_uncap; + STbl.clear !visible_files; + STbl.clear !visible_files_uncap; + hidden_dirs := []; + visible_dirs := []; auto_include_callback := no_auto_include -let get () = List.rev !dirs -let get_paths () = List.rev_map Dir.path !dirs +let get_visible () = List.rev !visible_dirs + +let get_path_list () = + Misc.rev_map_end Dir.path !visible_dirs (List.rev_map Dir.path !hidden_dirs) + +type paths = + { visible : string list; + hidden : string list } + +let get_paths () = + { visible = List.rev_map Dir.path !visible_dirs; + hidden = List.rev_map Dir.path !hidden_dirs } + +let get_visible_path_list () = List.rev_map Dir.path !visible_dirs +let get_hidden_path_list () = List.rev_map Dir.path !hidden_dirs (* Optimized version of [add] below, for use in [init] and [remove_dir]: since we are starting from an empty cache, we can avoid checking whether a unit @@ -77,77 +100,106 @@ let get_paths () = List.rev_map Dir.path !dirs let prepend_add dir = List.iter (fun base -> let fn = Filename.concat dir.Dir.path base in - STbl.replace !files base fn; - STbl.replace !files_uncap (String.uncapitalize_ascii base) fn + let filename = Misc.normalized_unit_filename base in + if dir.Dir.hidden then begin + STbl.replace !hidden_files base fn; + STbl.replace !hidden_files_uncap filename fn + end else begin + STbl.replace !visible_files base fn; + STbl.replace !visible_files_uncap filename fn + end ) dir.Dir.files -let init ~auto_include l = +let init ~auto_include ~visible ~hidden = assert (not Config.merlin || Local_store.is_bound ()); - let rec loop_changed acc = function + let rec loop_changed ~hidden acc = function | [] -> Some acc | new_path :: new_rest -> - loop_changed (Dir.create new_path :: acc) new_rest + loop_changed ~hidden (Dir.create ~hidden new_path :: acc) new_rest in - let rec loop_unchanged acc new_paths old_dirs = + let rec loop_unchanged ~hidden acc new_paths old_dirs = match new_paths, old_dirs with | [], [] -> None | new_path :: new_rest, [] -> - loop_changed (Dir.create new_path :: acc) new_rest + loop_changed ~hidden (Dir.create ~hidden new_path :: acc) new_rest | [], _ :: _ -> Some acc | new_path :: new_rest, old_dir :: old_rest -> if String.equal new_path (Dir.path old_dir) then begin if Dir.check old_dir then begin - loop_unchanged (old_dir :: acc) new_rest old_rest + loop_unchanged ~hidden (old_dir :: acc) new_rest old_rest end else begin - loop_changed (Dir.create new_path :: acc) new_rest + loop_changed ~hidden (Dir.create ~hidden new_path :: acc) new_rest end end else begin - loop_changed (Dir.create new_path :: acc) new_rest + loop_changed ~hidden (Dir.create ~hidden new_path :: acc) new_rest end in - match loop_unchanged [] l (List.rev !dirs) with + let () = + match loop_unchanged ~hidden:false [] visible (List.rev !visible_dirs) with + | None -> () + | Some new_dirs -> + reset (); + visible_dirs := new_dirs; + List.iter prepend_add new_dirs; + auto_include_callback := auto_include + in + match loop_unchanged ~hidden:true [] hidden (List.rev !hidden_dirs) with | None -> () | Some new_dirs -> reset (); - dirs := new_dirs; + hidden_dirs := new_dirs; List.iter prepend_add new_dirs; auto_include_callback := auto_include let remove_dir dir = assert (not Config.merlin || Local_store.is_bound ()); - let new_dirs = List.filter (fun d -> Dir.path d <> dir) !dirs in - if List.compare_lengths new_dirs !dirs <> 0 then begin + let visible = List.filter (fun d -> Dir.path d <> dir) !visible_dirs in + let hidden = List.filter (fun d -> Dir.path d <> dir) !hidden_dirs in + if List.compare_lengths visible !visible_dirs <> 0 + || List.compare_lengths hidden !hidden_dirs <> 0 then begin reset (); - List.iter prepend_add new_dirs; - dirs := new_dirs + visible_dirs := visible; + hidden_dirs := hidden; + List.iter prepend_add hidden; + List.iter prepend_add visible end (* General purpose version of function to add a new entry to load path: We only - add a basename to the cache if it is not already present in the cache, in - order to enforce left-to-right precedence. *) -let add dir = + add a basename to the cache if it is not already present, in order to enforce + left-to-right precedence. *) +let add (dir : Dir.t) = assert (not Config.merlin || Local_store.is_bound ()); + let update base fn visible_files hidden_files = + if dir.hidden && not (STbl.mem !hidden_files base) then + STbl.replace !hidden_files base fn + else if not (STbl.mem !visible_files base) then + STbl.replace !visible_files base fn + in List.iter (fun base -> let fn = Filename.concat dir.Dir.path base in - if not (STbl.mem !files base) then - STbl.replace !files base fn; - let ubase = String.uncapitalize_ascii base in - if not (STbl.mem !files_uncap ubase) then - STbl.replace !files_uncap ubase fn) - dir.Dir.files; - dirs := dir :: !dirs + update base fn visible_files hidden_files; + let ubase = Misc.normalized_unit_filename base in + update ubase fn visible_files_uncap hidden_files_uncap) + dir.files; + if dir.hidden then + hidden_dirs := dir :: !hidden_dirs + else + visible_dirs := dir :: !visible_dirs let append_dir = add -let add_dir dir = add (Dir.create dir) +let add_dir ~hidden dir = add (Dir.create ~hidden dir) (* Add the directory at the start of load path - so basenames are unconditionally added. *) -let prepend_dir dir = +let prepend_dir (dir : Dir.t) = assert (not Config.merlin || Local_store.is_bound ()); prepend_add dir; - dirs := !dirs @ [dir] + if dir.hidden then + hidden_dirs := !hidden_dirs @ [dir] + else + visible_dirs := !visible_dirs @ [dir] let is_basename fn = Filename.basename fn = fn @@ -169,27 +221,40 @@ let is_basename fn = Filename.basename fn = fn (* Ensure directories are only ever scanned once *) let expand = Misc.expand_directory Config.standard_library in let otherlibs = - let read_lib lib = lazy (Dir.create (expand ("+" ^ lib))) in + let read_lib lib = lazy (Dir.create ~hidden:false (expand ("+" ^ lib))) in List.map (fun lib -> (lib, read_lib lib)) ["dynlink"; "str"; "unix"] in auto_include_libs otherlibs *) +type visibility = Visible | Hidden + +let find_file_in_cache fn visible_files hidden_files = + try (STbl.find !visible_files fn, Visible) with + | Not_found -> (STbl.find !hidden_files fn, Hidden) + let find fn = assert (not Config.merlin || Local_store.is_bound ()); try if is_basename fn && not !Sys.interactive then - STbl.find !files fn + fst (find_file_in_cache fn visible_files hidden_files) else - Misc.find_in_path (get_paths ()) fn + Misc.find_in_path (get_path_list ()) fn with Not_found -> !auto_include_callback Dir.find fn -let find_uncap fn = +let find_normalized_with_visibility fn = assert (not Config.merlin || Local_store.is_bound ()); try if is_basename fn && not !Sys.interactive then - STbl.find !files_uncap (String.uncapitalize_ascii fn) + find_file_in_cache (Misc.normalized_unit_filename fn) + visible_files_uncap hidden_files_uncap else - Misc.find_in_path_uncap (get_paths ()) fn + try + (Misc.find_in_path_normalized (get_visible_path_list ()) fn, Visible) + with + | Not_found -> + (Misc.find_in_path_normalized (get_hidden_path_list ()) fn, Hidden) with Not_found -> - let fn_uncap = String.uncapitalize_ascii fn in - !auto_include_callback Dir.find_uncap fn_uncap + let fn_uncap = Misc.normalized_unit_filename fn in + (!auto_include_callback Dir.find_normalized fn_uncap, Visible) + + let find_normalized fn = fst (find_normalized_with_visibility fn) diff --git a/src/ocaml/utils/load_path.mli b/src/ocaml/utils/load_path.mli index 7d9abe0a0b..c467f46522 100644 --- a/src/ocaml/utils/load_path.mli +++ b/src/ocaml/utils/load_path.mli @@ -14,15 +14,15 @@ (** Management of include directories. - This module offers a high level interface to locating files in the - load path, which is constructed from [-I] command line flags and a few + This module offers a high level interface to locating files in the load + path, which is constructed from [-I] and [-H] command line flags and a few other parameters. It makes the assumption that the contents of include directories doesn't change during the execution of the compiler. *) -val add_dir : string -> unit +val add_dir : hidden:bool -> string -> unit (** Add a directory to the end of the load path (i.e. at lowest priority.) *) val remove_dir : string -> unit @@ -35,7 +35,7 @@ module Dir : sig type t (** Represent one directory in the load path. *) - val create : string -> t + val create : hidden:bool -> string -> t val path : t -> string @@ -43,10 +43,14 @@ module Dir : sig (** All the files in that directory. This doesn't include files in sub-directories of this directory. *) + val hidden : t -> bool + (** If the modules in this directory should not be bound in the initial + scope *) + val find : t -> string -> string option (** [find dir fn] returns the full path to [fn] in [dir]. *) - val find_uncap : t -> string -> string option + val find_normalized : t -> string -> string option (** As {!find}, but search also for uncapitalized name, i.e. if name is Foo.ml, either /path/Foo.ml or /path/foo.ml may be returned. *) end @@ -59,8 +63,13 @@ val no_auto_include : auto_include_callback (** No automatic directory inclusion: misses in the load path raise [Not_found] as normal. *) -val init : auto_include:auto_include_callback -> string list -> unit -(** [init l] is the same as [reset (); List.iter add_dir (List.rev l)] *) +val init : + auto_include:auto_include_callback -> visible:string list -> + hidden:string list -> unit +(** [init ~visible ~hidden] is the same as + [reset (); + List.iter add_dir (List.rev hidden); + List.iter add_dir (List.rev visible)] *) (* val auto_include_otherlibs : config:Mconfig.t -> (string -> unit) -> auto_include_callback *) @@ -68,18 +77,32 @@ val init : auto_include:auto_include_callback -> string list -> unit {!Load_path.init} and automatically adds [-I +lib] to the load path after calling [alert lib]. *) -val get_paths : unit -> string list +val get_path_list : unit -> string list (** Return the list of directories passed to [add_dir] so far. *) +type paths = + { visible : string list; + hidden : string list } + +val get_paths : unit -> paths +(** Return the directories passed to [add_dir] so far. *) + val find : string -> string (** Locate a file in the load path. Raise [Not_found] if the file cannot be found. This function is optimized for the case where the filename is a basename, i.e. doesn't contain a directory separator. *) -val find_uncap : string -> string -(** Same as [find], but search also for uncapitalized name, i.e. if - name is Foo.ml, allow /path/Foo.ml and /path/foo.ml to match. *) +val find_normalized : string -> string +(** Same as [find], but search also for normalized unit name (see + {!Misc.normalized_unit_filename}), i.e. if name is [Foo.ml], allow + [/path/Foo.ml] and [/path/foo.ml] to match. *) + +type visibility = Visible | Hidden + +val find_normalized_with_visibility : string -> string * visibility +(** Same as [find_normalized], but also reports whether the cmi was found in a + -I directory (Visible) or a -H directory (Hidden) *) val[@deprecated] add : Dir.t -> unit (** Old name for {!append_dir} *) @@ -92,5 +115,6 @@ val prepend_dir : Dir.t -> unit (** [prepend_dir d] adds [d] to the start of the load path (i.e. at highest priority. *) -val get : unit -> Dir.t list -(** Same as [get_paths ()], except that it returns a [Dir.t list]. *) +val get_visible : unit -> Dir.t list +(** Same as [get_paths ()], except that it returns a [Dir.t list], and doesn't + include the -H paths. *) diff --git a/src/ocaml/utils/warnings.mli b/src/ocaml/utils/warnings.mli index 08f30ac40a..bb42eec6ef 100644 --- a/src/ocaml/utils/warnings.mli +++ b/src/ocaml/utils/warnings.mli @@ -68,7 +68,11 @@ type t = | Unused_var of string (* 26 *) | Unused_var_strict of string (* 27 *) | Wildcard_arg_to_constant_constr (* 28 *) - | Eol_in_string (* 29 *) + | Eol_in_string (* 29 + Note: since OCaml 5.2, the lexer normalizes \r\n sequences in + the source file to a single \n character, so the behavior of + newlines in string literals is portable. This warning is + never emitted anymore. *) | Duplicate_definitions of string * string * string * string (* 30 *) | Unused_value_declaration of string (* 32 *) | Unused_open of string (* 33 *)